| Index: src/platform/metrics/metrics_daemon_test.cc
|
| diff --git a/src/platform/metrics/metrics_daemon_test.cc b/src/platform/metrics/metrics_daemon_test.cc
|
| index 043be724914c5e0e8393c4fa40d21afe37005173..25b0855c79edc52b5aee91d202c55e4383b4ef26 100644
|
| --- a/src/platform/metrics/metrics_daemon_test.cc
|
| +++ b/src/platform/metrics/metrics_daemon_test.cc
|
| @@ -12,7 +12,7 @@
|
| #include <base/string_util.h>
|
| #include <gtest/gtest.h>
|
|
|
| -static const char kTestDailyUseRecordFile[] = "/tmp/daily-usage-test";
|
| +static const char kTestDailyUseRecordFile[] = "daily-usage-test";
|
| static const char kDoesNotExistFile[] = "/does/not/exist";
|
|
|
| static const int kSecondsPerDay = 24 * 60 * 60;
|
| @@ -123,6 +123,8 @@ class MetricsDaemonTest : public testing::Test {
|
| return testing::AssertionSuccess();
|
| }
|
|
|
| + // Returns true if the daily use record file does not exist or is
|
| + // empty, false otherwise.
|
| bool NoOrEmptyUseRecordFile() {
|
| FilePath record_file(daemon_.daily_use_record_file_);
|
| int64 record_file_size;
|
| @@ -131,6 +133,34 @@ class MetricsDaemonTest : public testing::Test {
|
| record_file_size == 0);
|
| }
|
|
|
| + // Creates a new DBus signal message with a single string
|
| + // argument. The message can be deallocated through
|
| + // DeleteDBusMessage.
|
| + //
|
| + // |path| is the object emitting the signal.
|
| + // |interface| is the interface the signal is emitted from.
|
| + // |name| is the name of the signal.
|
| + // |arg_value| is the value of the string argument.
|
| + DBusMessage* NewDBusSignalString(const std::string& path,
|
| + const std::string& interface,
|
| + const std::string& name,
|
| + const std::string& arg_value) {
|
| + DBusMessage* msg = dbus_message_new_signal(path.c_str(),
|
| + interface.c_str(),
|
| + name.c_str());
|
| + DBusMessageIter iter;
|
| + dbus_message_iter_init_append(msg, &iter);
|
| + const char* arg_value_c = arg_value.c_str();
|
| + dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &arg_value_c);
|
| + return msg;
|
| + }
|
| +
|
| + // Deallocates the DBus message |msg| previously allocated through
|
| + // dbus_message_new*.
|
| + void DeleteDBusMessage(DBusMessage* msg) {
|
| + dbus_message_unref(msg);
|
| + }
|
| +
|
| // Pointer to the current test fixture.
|
| static MetricsDaemonTest* daemon_test_;
|
|
|
| @@ -232,6 +262,64 @@ TEST_F(MetricsDaemonTest, LookupSessionState) {
|
| daemon_.LookupSessionState("somestate"));
|
| }
|
|
|
| +TEST_F(MetricsDaemonTest, MessageFilter) {
|
| + DBusMessage* msg = dbus_message_new(DBUS_MESSAGE_TYPE_METHOD_CALL);
|
| + DBusHandlerResult res =
|
| + MetricsDaemon::MessageFilter(/* connection */ NULL, msg, &daemon_);
|
| + EXPECT_EQ(DBUS_HANDLER_RESULT_NOT_YET_HANDLED, res);
|
| + DeleteDBusMessage(msg);
|
| +
|
| + msg = NewDBusSignalString("/",
|
| + "org.moblin.connman.Manager",
|
| + "StateChanged",
|
| + "online");
|
| + EXPECT_EQ(MetricsDaemon::kUnknownNetworkState, daemon_.network_state_);
|
| + res = MetricsDaemon::MessageFilter(/* connection */ NULL, msg, &daemon_);
|
| + EXPECT_EQ(MetricsDaemon::kNetworkStateOnline, daemon_.network_state_);
|
| + EXPECT_EQ(DBUS_HANDLER_RESULT_HANDLED, res);
|
| + DeleteDBusMessage(msg);
|
| +
|
| + msg = NewDBusSignalString("/",
|
| + "org.chromium.Power.Manager",
|
| + "PowerStateChanged",
|
| + "on");
|
| + EXPECT_EQ(MetricsDaemon::kUnknownPowerState, daemon_.power_state_);
|
| + res = MetricsDaemon::MessageFilter(/* connection */ NULL, msg, &daemon_);
|
| + EXPECT_EQ(MetricsDaemon::kPowerStateOn, daemon_.power_state_);
|
| + EXPECT_EQ(DBUS_HANDLER_RESULT_HANDLED, res);
|
| + DeleteDBusMessage(msg);
|
| +
|
| + msg = NewDBusSignalString("/",
|
| + "org.chromium.ScreenSaver.Manager",
|
| + "LockStateChanged",
|
| + "unlocked");
|
| + EXPECT_EQ(MetricsDaemon::kUnknownScreenSaverState,
|
| + daemon_.screensaver_state_);
|
| + res = MetricsDaemon::MessageFilter(/* connection */ NULL, msg, &daemon_);
|
| + EXPECT_EQ(MetricsDaemon::kScreenSaverStateUnlocked,
|
| + daemon_.screensaver_state_);
|
| + EXPECT_EQ(DBUS_HANDLER_RESULT_HANDLED, res);
|
| + DeleteDBusMessage(msg);
|
| +
|
| + msg = NewDBusSignalString("/org/chromium/SessionManager",
|
| + "org.chromium.SessionManagerInterface",
|
| + "SessionStateChanged",
|
| + "started");
|
| + EXPECT_EQ(MetricsDaemon::kUnknownSessionState, daemon_.session_state_);
|
| + res = MetricsDaemon::MessageFilter(/* connection */ NULL, msg, &daemon_);
|
| + EXPECT_EQ(MetricsDaemon::kSessionStateStarted, daemon_.session_state_);
|
| + EXPECT_EQ(DBUS_HANDLER_RESULT_HANDLED, res);
|
| + DeleteDBusMessage(msg);
|
| +
|
| + msg = NewDBusSignalString("/",
|
| + "org.chromium.UnknownService.Manager",
|
| + "StateChanged",
|
| + "randomstate");
|
| + res = MetricsDaemon::MessageFilter(/* connection */ NULL, msg, &daemon_);
|
| + EXPECT_EQ(DBUS_HANDLER_RESULT_NOT_YET_HANDLED, res);
|
| + DeleteDBusMessage(msg);
|
| +}
|
| +
|
| TEST_F(MetricsDaemonTest, NetStateChanged) {
|
| EXPECT_EQ(MetricsDaemon::kUnknownNetworkState, daemon_.network_state_);
|
| EXPECT_EQ(0, daemon_.network_state_last_);
|
|
|