update_engine: Convert update_manager to chromeos::MessageLoop.
The update_manager/event_loop.* files were basically an abstraction of
the glib main loop in order to make it easier to replace it later.
This patch removes those files and replaces their functions with the
chromeos::MessageLoop interface, backing it up with a FakeMessageLoop
during test, and a real GlibMessageLoop during normal execution. This
patch reduces the running time of the unittest considerably since there
is no need to wait for the timeouts.
BUG=chromium:419827,chromium:402066
TEST=Unittest still pass. Tested on a link device that the UM still runs.
Change-Id: Id572248ff4c9c8be7226ef8c653a5c94ab9c1677
Reviewed-on: https://chromium-review.googlesource.com/276892
Reviewed-by: Alex Deymo <deymo@chromium.org>
Commit-Queue: Alex Deymo <deymo@chromium.org>
Tested-by: Alex Deymo <deymo@chromium.org>
diff --git a/update_manager/variable_unittest.cc b/update_manager/variable_unittest.cc
index 642b5dd..000176b 100644
--- a/update_manager/variable_unittest.cc
+++ b/update_manager/variable_unittest.cc
@@ -6,12 +6,14 @@
#include <vector>
+#include <chromeos/message_loops/fake_message_loop.h>
+#include <chromeos/message_loops/message_loop.h>
+#include <chromeos/message_loops/message_loop_utils.h>
#include <gtest/gtest.h>
-#include "update_engine/test_utils.h"
-
using base::TimeDelta;
-using chromeos_update_engine::test_utils::RunGMainLoopMaxIterations;
+using chromeos::MessageLoop;
+using chromeos::MessageLoopRunMaxIterations;
using std::string;
using std::vector;
@@ -37,26 +39,35 @@
DISALLOW_COPY_AND_ASSIGN(DefaultVariable);
};
-TEST(UmBaseVariableTest, GetNameTest) {
+class UmBaseVariableTest : public ::testing::Test {
+ protected:
+ void SetUp() override {
+ loop_.SetAsCurrent();
+ }
+
+ chromeos::FakeMessageLoop loop_{nullptr};
+};
+
+TEST_F(UmBaseVariableTest, GetNameTest) {
DefaultVariable<int> var("var", kVariableModeConst);
EXPECT_EQ(var.GetName(), string("var"));
}
-TEST(UmBaseVariableTest, GetModeTest) {
+TEST_F(UmBaseVariableTest, GetModeTest) {
DefaultVariable<int> var("var", kVariableModeConst);
EXPECT_EQ(var.GetMode(), kVariableModeConst);
DefaultVariable<int> other_var("other_var", kVariableModePoll);
EXPECT_EQ(other_var.GetMode(), kVariableModePoll);
}
-TEST(UmBaseVariableTest, DefaultPollIntervalTest) {
+TEST_F(UmBaseVariableTest, DefaultPollIntervalTest) {
DefaultVariable<int> const_var("const_var", kVariableModeConst);
EXPECT_EQ(const_var.GetPollInterval(), TimeDelta());
DefaultVariable<int> poll_var("poll_var", kVariableModePoll);
EXPECT_EQ(poll_var.GetPollInterval(), TimeDelta::FromMinutes(5));
}
-TEST(UmBaseVariableTest, GetPollIntervalTest) {
+TEST_F(UmBaseVariableTest, GetPollIntervalTest) {
DefaultVariable<int> var("var", TimeDelta::FromMinutes(3));
EXPECT_EQ(var.GetMode(), kVariableModePoll);
EXPECT_EQ(var.GetPollInterval(), TimeDelta::FromMinutes(3));
@@ -72,7 +83,7 @@
vector<BaseVariable*> calls_;
};
-TEST(UmBaseVariableTest, RepeatedObserverTest) {
+TEST_F(UmBaseVariableTest, RepeatedObserverTest) {
DefaultVariable<int> var("var", kVariableModeAsync);
BaseVariableObserver observer;
var.AddObserver(&observer);
@@ -85,14 +96,14 @@
EXPECT_EQ(var.observer_list_.size(), 0);
}
-TEST(UmBaseVariableTest, NotifyValueChangedTest) {
+TEST_F(UmBaseVariableTest, NotifyValueChangedTest) {
DefaultVariable<int> var("var", kVariableModeAsync);
BaseVariableObserver observer1;
var.AddObserver(&observer1);
// Simulate a value change on the variable's implementation.
var.NotifyValueChanged();
ASSERT_EQ(0, observer1.calls_.size());
- RunGMainLoopMaxIterations(100);
+ MessageLoopRunMaxIterations(MessageLoop::current(), 100);
ASSERT_EQ(1, observer1.calls_.size());
// Check that the observer is called with the right argument.
@@ -101,7 +112,7 @@
BaseVariableObserver observer2;
var.AddObserver(&observer2);
var.NotifyValueChanged();
- RunGMainLoopMaxIterations(100);
+ MessageLoopRunMaxIterations(MessageLoop::current(), 100);
// Check that all the observers are called.
EXPECT_EQ(2, observer1.calls_.size());
@@ -135,7 +146,7 @@
// Tests that we can remove an observer from a Variable on the ValueChanged()
// call to that observer.
-TEST(UmBaseVariableTest, NotifyValueRemovesObserversTest) {
+TEST_F(UmBaseVariableTest, NotifyValueRemovesObserversTest) {
DefaultVariable<int> var("var", kVariableModeAsync);
BaseVariableObserverRemover observer1;
BaseVariableObserverRemover observer2;
@@ -150,7 +161,7 @@
observer2.OnCallRemoveObserver(&observer2);
var.NotifyValueChanged();
- RunGMainLoopMaxIterations(100);
+ MessageLoopRunMaxIterations(MessageLoop::current(), 100);
EXPECT_EQ(1, observer1.get_calls() + observer2.get_calls());
}