Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1113)

Unified Diff: metrics_daemon_test.cc

Issue 6486021: Collect some disk statistics. (Closed) Base URL: http://git.chromium.org/git/metrics.git@master
Patch Set: Change metrix prefix Filesystem back to Platform Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « metrics_daemon_main.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: metrics_daemon_test.cc
diff --git a/metrics_daemon_test.cc b/metrics_daemon_test.cc
index 530f357b61cd735fc40e72c94badc38dcef7f536..208d8e5bffae1cb6fa2c23a1bbf6df36794e1f03 100644
--- a/metrics_daemon_test.cc
+++ b/metrics_daemon_test.cc
@@ -8,6 +8,7 @@
#include <vector>
#include <base/file_util.h>
+#include <base/stringprintf.h>
#include <gtest/gtest.h>
#include "counter_mock.h"
@@ -32,6 +33,14 @@ static const int kSecondsPerDay = 24 * 60 * 60;
static const char kTestDir[] = "test";
static const char kLastFile[] = "test/last";
static const char kCurrentFile[] = "test/current";
+static const char kFakeDiskStatsPath[] = "fake-disk-stats";
+static const char kFakeDiskStatsFormat[] =
+ " 1793 1788 %d 105580 "
+ " 196 175 %d 30290 "
+ " 0 44060 135850\n";
+static string kFakeDiskStats[2];
+static const int kFakeReadSectors[] = {80000, 100000};
+static const int kFakeWriteSectors[] = {3000, 4000};
// This class allows a TimeTicks object to be initialized with seconds
// (rather than microseconds) through the protected TimeTicks(int64)
@@ -54,7 +63,12 @@ class MetricsDaemonTest : public testing::Test {
EXPECT_EQ(NULL, daemon_.daily_use_.get());
EXPECT_EQ(NULL, daemon_.kernel_crash_interval_.get());
EXPECT_EQ(NULL, daemon_.user_crash_interval_.get());
- daemon_.Init(true, &metrics_lib_);
+ kFakeDiskStats[0] = StringPrintf(kFakeDiskStatsFormat,
+ kFakeReadSectors[0], kFakeWriteSectors[0]);
+ kFakeDiskStats[1] = StringPrintf(kFakeDiskStatsFormat,
+ kFakeReadSectors[1], kFakeWriteSectors[1]);
+ CreateFakeDiskStatsFile(kFakeDiskStats[0].c_str());
+ daemon_.Init(true, &metrics_lib_, kFakeDiskStatsPath);
// Check configuration of a few histograms.
FrequencyCounter* frequency_counter =
@@ -120,7 +134,9 @@ class MetricsDaemonTest : public testing::Test {
file_util::CreateDirectory(FilePath(kTestDir));
}
- virtual void TearDown() {}
+ virtual void TearDown() {
+ EXPECT_EQ(unlink(kFakeDiskStatsPath), 0);
+ }
const TaggedCounterReporter*
GetReporter(FrequencyCounter* frequency_counter) const {
@@ -222,12 +238,22 @@ class MetricsDaemonTest : public testing::Test {
dbus_message_unref(msg);
}
- // Get the frequency counter for the given name.
+ // Gets the frequency counter for the given name.
FrequencyCounterMock& GetFrequencyMock(const char* histogram_name) {
return *static_cast<FrequencyCounterMock*>(
daemon_.frequency_counters_[histogram_name]);
}
+ // Creates or overwrites an input file containing fake disk stats.
+ void CreateFakeDiskStatsFile(const char* fake_stats) {
+ if (unlink(kFakeDiskStatsPath) < 0) {
+ EXPECT_EQ(errno, ENOENT);
+ }
+ FILE* f = fopen(kFakeDiskStatsPath, "w");
+ EXPECT_EQ(1, fwrite(fake_stats, strlen(fake_stats), 1, f));
+ EXPECT_EQ(0, fclose(f));
+ }
+
// The MetricsDaemon under test.
MetricsDaemon daemon_;
@@ -533,6 +559,25 @@ TEST_F(MetricsDaemonTest, GetHistogramPath) {
MetricsDaemon::kMetricAnyCrashesDailyName).value());
}
+TEST_F(MetricsDaemonTest, ReportDiskStats) {
+ long int read_sectors_now, write_sectors_now;
+
+ CreateFakeDiskStatsFile(kFakeDiskStats[1].c_str());
+ daemon_.DiskStatsReadStats(&read_sectors_now, &write_sectors_now);
+ EXPECT_EQ(read_sectors_now, kFakeReadSectors[1]);
+ EXPECT_EQ(write_sectors_now, kFakeWriteSectors[1]);
+
+ MetricsDaemon::DiskStatsState ds_state = daemon_.diskstats_state_;
+ EXPECT_CALL(metrics_lib_,
+ SendToUMA(_, (kFakeReadSectors[1] - kFakeReadSectors[0]) / 30,
+ _, _, _));
+ EXPECT_CALL(metrics_lib_,
+ SendToUMA(_, (kFakeWriteSectors[1] - kFakeWriteSectors[0]) / 30,
+ _, _, _));
+ daemon_.DiskStatsCallback();
+ EXPECT_TRUE(ds_state != daemon_.diskstats_state_);
+}
+
int main(int argc, char** argv) {
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
« no previous file with comments | « metrics_daemon_main.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698