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

Side by Side Diff: src/platform/metrics/metrics_daemon_test.cc

Issue 1990001: Add tests for the D-Bus MessageFilter. (Closed)
Patch Set: Assume current folder is writable. This way tests can run in parallel. Created 10 years, 7 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 unified diff | Download patch
« no previous file with comments | « src/platform/metrics/metrics_daemon.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "metrics_daemon.h" 5 #include "metrics_daemon.h"
6 6
7 #include <sys/file.h> 7 #include <sys/file.h>
8 8
9 #include <base/eintr_wrapper.h> 9 #include <base/eintr_wrapper.h>
10 #include <base/file_util.h> 10 #include <base/file_util.h>
11 #include <base/logging.h> 11 #include <base/logging.h>
12 #include <base/string_util.h> 12 #include <base/string_util.h>
13 #include <gtest/gtest.h> 13 #include <gtest/gtest.h>
14 14
15 static const char kTestDailyUseRecordFile[] = "/tmp/daily-usage-test"; 15 static const char kTestDailyUseRecordFile[] = "daily-usage-test";
16 static const char kDoesNotExistFile[] = "/does/not/exist"; 16 static const char kDoesNotExistFile[] = "/does/not/exist";
17 17
18 static const int kSecondsPerDay = 24 * 60 * 60; 18 static const int kSecondsPerDay = 24 * 60 * 60;
19 19
20 class MetricsDaemonTest : public testing::Test { 20 class MetricsDaemonTest : public testing::Test {
21 protected: 21 protected:
22 virtual void SetUp() { 22 virtual void SetUp() {
23 daemon_.Init(true); 23 daemon_.Init(true);
24 daemon_.daily_use_record_file_ = kTestDailyUseRecordFile; 24 daemon_.daily_use_record_file_ = kTestDailyUseRecordFile;
25 25
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 msg << "actual use record (" << record.day_ << ", " << record.seconds_ 116 msg << "actual use record (" << record.day_ << ", " << record.seconds_
117 << ") expected (" << expected_day << ", " << expected_seconds << ")"; 117 << ") expected (" << expected_day << ", " << expected_seconds << ")";
118 HANDLE_EINTR(close(fd)); 118 HANDLE_EINTR(close(fd));
119 return testing::AssertionFailure(msg); 119 return testing::AssertionFailure(msg);
120 } 120 }
121 121
122 HANDLE_EINTR(close(fd)); 122 HANDLE_EINTR(close(fd));
123 return testing::AssertionSuccess(); 123 return testing::AssertionSuccess();
124 } 124 }
125 125
126 // Returns true if the daily use record file does not exist or is
127 // empty, false otherwise.
126 bool NoOrEmptyUseRecordFile() { 128 bool NoOrEmptyUseRecordFile() {
127 FilePath record_file(daemon_.daily_use_record_file_); 129 FilePath record_file(daemon_.daily_use_record_file_);
128 int64 record_file_size; 130 int64 record_file_size;
129 return !file_util::PathExists(record_file) || 131 return !file_util::PathExists(record_file) ||
130 (file_util::GetFileSize(record_file, &record_file_size) && 132 (file_util::GetFileSize(record_file, &record_file_size) &&
131 record_file_size == 0); 133 record_file_size == 0);
132 } 134 }
133 135
136 // Creates a new DBus signal message with a single string
137 // argument. The message can be deallocated through
138 // DeleteDBusMessage.
139 //
140 // |path| is the object emitting the signal.
141 // |interface| is the interface the signal is emitted from.
142 // |name| is the name of the signal.
143 // |arg_value| is the value of the string argument.
144 DBusMessage* NewDBusSignalString(const std::string& path,
145 const std::string& interface,
146 const std::string& name,
147 const std::string& arg_value) {
148 DBusMessage* msg = dbus_message_new_signal(path.c_str(),
149 interface.c_str(),
150 name.c_str());
151 DBusMessageIter iter;
152 dbus_message_iter_init_append(msg, &iter);
153 const char* arg_value_c = arg_value.c_str();
154 dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &arg_value_c);
155 return msg;
156 }
157
158 // Deallocates the DBus message |msg| previously allocated through
159 // dbus_message_new*.
160 void DeleteDBusMessage(DBusMessage* msg) {
161 dbus_message_unref(msg);
162 }
163
134 // Pointer to the current test fixture. 164 // Pointer to the current test fixture.
135 static MetricsDaemonTest* daemon_test_; 165 static MetricsDaemonTest* daemon_test_;
136 166
137 // The MetricsDaemon under test. 167 // The MetricsDaemon under test.
138 MetricsDaemon daemon_; 168 MetricsDaemon daemon_;
139 169
140 // The accumulated metrics daemon log. 170 // The accumulated metrics daemon log.
141 std::string daemon_log_; 171 std::string daemon_log_;
142 }; 172 };
143 173
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 255
226 TEST_F(MetricsDaemonTest, LookupSessionState) { 256 TEST_F(MetricsDaemonTest, LookupSessionState) {
227 EXPECT_EQ(MetricsDaemon::kSessionStateStarted, 257 EXPECT_EQ(MetricsDaemon::kSessionStateStarted,
228 daemon_.LookupSessionState("started")); 258 daemon_.LookupSessionState("started"));
229 EXPECT_EQ(MetricsDaemon::kSessionStateStopped, 259 EXPECT_EQ(MetricsDaemon::kSessionStateStopped,
230 daemon_.LookupSessionState("stopped")); 260 daemon_.LookupSessionState("stopped"));
231 EXPECT_EQ(MetricsDaemon::kUnknownSessionState, 261 EXPECT_EQ(MetricsDaemon::kUnknownSessionState,
232 daemon_.LookupSessionState("somestate")); 262 daemon_.LookupSessionState("somestate"));
233 } 263 }
234 264
265 TEST_F(MetricsDaemonTest, MessageFilter) {
266 DBusMessage* msg = dbus_message_new(DBUS_MESSAGE_TYPE_METHOD_CALL);
267 DBusHandlerResult res =
268 MetricsDaemon::MessageFilter(/* connection */ NULL, msg, &daemon_);
269 EXPECT_EQ(DBUS_HANDLER_RESULT_NOT_YET_HANDLED, res);
270 DeleteDBusMessage(msg);
271
272 msg = NewDBusSignalString("/",
273 "org.moblin.connman.Manager",
274 "StateChanged",
275 "online");
276 EXPECT_EQ(MetricsDaemon::kUnknownNetworkState, daemon_.network_state_);
277 res = MetricsDaemon::MessageFilter(/* connection */ NULL, msg, &daemon_);
278 EXPECT_EQ(MetricsDaemon::kNetworkStateOnline, daemon_.network_state_);
279 EXPECT_EQ(DBUS_HANDLER_RESULT_HANDLED, res);
280 DeleteDBusMessage(msg);
281
282 msg = NewDBusSignalString("/",
283 "org.chromium.Power.Manager",
284 "PowerStateChanged",
285 "on");
286 EXPECT_EQ(MetricsDaemon::kUnknownPowerState, daemon_.power_state_);
287 res = MetricsDaemon::MessageFilter(/* connection */ NULL, msg, &daemon_);
288 EXPECT_EQ(MetricsDaemon::kPowerStateOn, daemon_.power_state_);
289 EXPECT_EQ(DBUS_HANDLER_RESULT_HANDLED, res);
290 DeleteDBusMessage(msg);
291
292 msg = NewDBusSignalString("/",
293 "org.chromium.ScreenSaver.Manager",
294 "LockStateChanged",
295 "unlocked");
296 EXPECT_EQ(MetricsDaemon::kUnknownScreenSaverState,
297 daemon_.screensaver_state_);
298 res = MetricsDaemon::MessageFilter(/* connection */ NULL, msg, &daemon_);
299 EXPECT_EQ(MetricsDaemon::kScreenSaverStateUnlocked,
300 daemon_.screensaver_state_);
301 EXPECT_EQ(DBUS_HANDLER_RESULT_HANDLED, res);
302 DeleteDBusMessage(msg);
303
304 msg = NewDBusSignalString("/org/chromium/SessionManager",
305 "org.chromium.SessionManagerInterface",
306 "SessionStateChanged",
307 "started");
308 EXPECT_EQ(MetricsDaemon::kUnknownSessionState, daemon_.session_state_);
309 res = MetricsDaemon::MessageFilter(/* connection */ NULL, msg, &daemon_);
310 EXPECT_EQ(MetricsDaemon::kSessionStateStarted, daemon_.session_state_);
311 EXPECT_EQ(DBUS_HANDLER_RESULT_HANDLED, res);
312 DeleteDBusMessage(msg);
313
314 msg = NewDBusSignalString("/",
315 "org.chromium.UnknownService.Manager",
316 "StateChanged",
317 "randomstate");
318 res = MetricsDaemon::MessageFilter(/* connection */ NULL, msg, &daemon_);
319 EXPECT_EQ(DBUS_HANDLER_RESULT_NOT_YET_HANDLED, res);
320 DeleteDBusMessage(msg);
321 }
322
235 TEST_F(MetricsDaemonTest, NetStateChanged) { 323 TEST_F(MetricsDaemonTest, NetStateChanged) {
236 EXPECT_EQ(MetricsDaemon::kUnknownNetworkState, daemon_.network_state_); 324 EXPECT_EQ(MetricsDaemon::kUnknownNetworkState, daemon_.network_state_);
237 EXPECT_EQ(0, daemon_.network_state_last_); 325 EXPECT_EQ(0, daemon_.network_state_last_);
238 EXPECT_EQ(MetricsDaemon::kUnknownPowerState, daemon_.power_state_); 326 EXPECT_EQ(MetricsDaemon::kUnknownPowerState, daemon_.power_state_);
239 327
240 daemon_.NetStateChanged("online", /* now */ 10); 328 daemon_.NetStateChanged("online", /* now */ 10);
241 EXPECT_EQ(MetricsDaemon::kNetworkStateOnline, daemon_.network_state_); 329 EXPECT_EQ(MetricsDaemon::kNetworkStateOnline, daemon_.network_state_);
242 EXPECT_EQ(10, daemon_.network_state_last_); 330 EXPECT_EQ(10, daemon_.network_state_last_);
243 331
244 EXPECT_TRUE(NoMetricGenerated()); 332 EXPECT_TRUE(NoMetricGenerated());
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
450 EXPECT_EQ(9 * kSecondsPerDay + 400, daemon_.user_active_last_); 538 EXPECT_EQ(9 * kSecondsPerDay + 400, daemon_.user_active_last_);
451 EXPECT_EQ(9, daemon_.daily_use_day_last_); 539 EXPECT_EQ(9, daemon_.daily_use_day_last_);
452 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 9, /* seconds */ 800); 540 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 9, /* seconds */ 800);
453 EXPECT_TRUE(AssertDailyUseTimeMetric(/* sample */ 10)); 541 EXPECT_TRUE(AssertDailyUseTimeMetric(/* sample */ 10));
454 } 542 }
455 543
456 int main(int argc, char **argv) { 544 int main(int argc, char **argv) {
457 testing::InitGoogleTest(&argc, argv); 545 testing::InitGoogleTest(&argc, argv);
458 return RUN_ALL_TESTS(); 546 return RUN_ALL_TESTS();
459 } 547 }
OLDNEW
« no previous file with comments | « src/platform/metrics/metrics_daemon.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698