Index: src/platform/update_engine/update_check_action_unittest.cc |
diff --git a/src/platform/update_engine/update_check_action_unittest.cc b/src/platform/update_engine/update_check_action_unittest.cc |
index 9b8436cc711c0f243131889163d3795b03425f96..723fc2201190f91a50b267cea370907ddf8b0b66 100644 |
--- a/src/platform/update_engine/update_check_action_unittest.cc |
+++ b/src/platform/update_engine/update_check_action_unittest.cc |
@@ -3,6 +3,7 @@ |
// found in the LICENSE file. |
#include <string> |
+#include <vector> |
#include <glib.h> |
#include <gtest/gtest.h> |
#include "update_engine/action_pipe.h" |
@@ -11,9 +12,10 @@ |
#include "update_engine/omaha_hash_calculator.h" |
#include "update_engine/test_utils.h" |
-namespace chromeos_update_engine { |
- |
using std::string; |
+using std::vector; |
+ |
+namespace chromeos_update_engine { |
class UpdateCheckActionTest : public ::testing::Test { }; |
@@ -35,8 +37,9 @@ string GetUpdateResponse(const string& app_id, |
const string& needsadmin, |
const string& size) { |
return string("<?xml version=\"1.0\" encoding=\"UTF-8\"?><gupdate " |
- "xmlns=\"http://www.google.com/update2/response\" protocol=\"2.0\"><app " |
- "appid=\"") + app_id + "\" status=\"ok\"><ping " |
+ "xmlns=\"http://www.google.com/update2/response\" " |
+ "protocol=\"2.0\"><app " |
+ "appid=\"") + app_id + "\" status=\"ok\"><ping " |
"status=\"ok\"/><updatecheck DisplayVersion=\"" + display_version + "\" " |
"MoreInfo=\"" + more_info_url + "\" Prompt=\"" + prompt + "\" " |
"codebase=\"" + codebase + "\" " |
@@ -56,11 +59,11 @@ class UpdateCheckActionTestProcessorDelegate : public ActionProcessorDelegate { |
g_main_loop_quit(loop_); |
} |
- virtual void ActionCompleted(const ActionProcessor* processor, |
- const AbstractAction* action, |
+ virtual void ActionCompleted(ActionProcessor* processor, |
+ AbstractAction* action, |
bool success) { |
// make sure actions always succeed |
- if (action->Type() == "UpdateCheckAction") |
+ if (action->Type() == UpdateCheckAction::StaticType()) |
EXPECT_EQ(expected_success_, success); |
else |
EXPECT_TRUE(success); |
@@ -102,7 +105,10 @@ class OutputObjectCollectorAction : public Action<OutputObjectCollectorAction> { |
CHECK(false); |
} |
// Debugging/logging |
- std::string Type() const { return "OutputObjectCollectorAction"; } |
+ static std::string StaticType() { |
+ return "OutputObjectCollectorAction"; |
+ } |
+ std::string Type() const { return StaticType(); } |
bool has_input_object_; |
UpdateCheckResponse update_check_response_; |
}; |
@@ -119,17 +125,20 @@ bool TestUpdateCheckAction(const UpdateCheckParams& params, |
GMainLoop *loop = g_main_loop_new(g_main_context_default(), FALSE); |
MockHttpFetcher *fetcher = new MockHttpFetcher(http_response.data(), |
http_response.size()); |
- |
- UpdateCheckAction action(params, fetcher); // takes ownership of fetcher |
+ ObjectFeederAction<UpdateCheckParams> feeder_action; |
+ UpdateCheckAction action(fetcher); // takes ownership of fetcher |
UpdateCheckActionTestProcessorDelegate delegate; |
delegate.loop_ = loop; |
delegate.expected_success_ = expected_success; |
ActionProcessor processor; |
+ feeder_action.set_obj(params); |
processor.set_delegate(&delegate); |
+ processor.EnqueueAction(&feeder_action); |
processor.EnqueueAction(&action); |
OutputObjectCollectorAction collector_action; |
+ BondActions(&feeder_action, &action); |
BondActions(&action, &collector_action); |
processor.EnqueueAction(&collector_action); |
@@ -211,14 +220,17 @@ TEST(UpdateCheckActionTest, NoOutputPipeTest) { |
GMainLoop *loop = g_main_loop_new(g_main_context_default(), FALSE); |
- UpdateCheckAction action(params, |
- new MockHttpFetcher(http_response.data(), |
+ ObjectFeederAction<UpdateCheckParams> feeder_action; |
+ feeder_action.set_obj(params); |
+ UpdateCheckAction action(new MockHttpFetcher(http_response.data(), |
http_response.size())); |
UpdateCheckActionTestProcessorDelegate delegate; |
delegate.loop_ = loop; |
ActionProcessor processor; |
processor.set_delegate(&delegate); |
+ processor.EnqueueAction(&feeder_action); |
processor.EnqueueAction(&action); |
+ BondActions(&feeder_action, &action); |
g_timeout_add(0, &StartProcessorInRunLoop, &processor); |
g_main_loop_run(loop); |
@@ -327,18 +339,23 @@ TEST(UpdateCheckActionTest, MissingFieldTest) { |
"unittest_track"); |
UpdateCheckResponse response; |
ASSERT_TRUE(TestUpdateCheckAction(params, |
- string("<?xml version=\"1.0\" encoding=\"UTF-8\"?><gupdate " |
- "xmlns=\"http://www.google.com/update2/response\" " |
- "protocol=\"2.0\"><app appid=\"") + |
- UpdateCheckParams::kAppId + "\" status=\"ok\"><ping " |
- "status=\"ok\"/><updatecheck DisplayVersion=\"1.2.3.4\" " |
- "Prompt=\"false\" " |
- "codebase=\"http://code/base\" " |
- "hash=\"HASH1234=\" needsadmin=\"true\" " |
- "size=\"123\" status=\"ok\"/></app></gupdate>", |
- true, |
- &response, |
- NULL)); |
+ string("<?xml version=\"1.0\" " |
+ "encoding=\"UTF-8\"?><gupdate " |
+ "xmlns=\"http://www.google.com/" |
+ "update2/response\" " |
+ "protocol=\"2.0\"><app appid=\"") + |
+ UpdateCheckParams::kAppId |
+ + "\" status=\"ok\"><ping " |
+ "status=\"ok\"/><updatecheck " |
+ "DisplayVersion=\"1.2.3.4\" " |
+ "Prompt=\"false\" " |
+ "codebase=\"http://code/base\" " |
+ "hash=\"HASH1234=\" needsadmin=\"true\" " |
+ "size=\"123\" " |
+ "status=\"ok\"/></app></gupdate>", |
+ true, |
+ &response, |
+ NULL)); |
EXPECT_TRUE(response.update_exists); |
EXPECT_EQ("1.2.3.4", response.display_version); |
EXPECT_EQ("http://code/base", response.codebase); |
@@ -381,14 +398,17 @@ TEST(UpdateCheckActionTest, TerminateTransferTest) { |
string http_response("doesn't matter"); |
GMainLoop *loop = g_main_loop_new(g_main_context_default(), FALSE); |
- UpdateCheckAction action(params, |
- new MockHttpFetcher(http_response.data(), |
+ ObjectFeederAction<UpdateCheckParams> feeder_action; |
+ feeder_action.set_obj(params); |
+ UpdateCheckAction action(new MockHttpFetcher(http_response.data(), |
http_response.size())); |
TerminateEarlyTestProcessorDelegate delegate; |
delegate.loop_ = loop; |
ActionProcessor processor; |
processor.set_delegate(&delegate); |
+ processor.EnqueueAction(&feeder_action); |
processor.EnqueueAction(&action); |
+ BondActions(&feeder_action, &action); |
g_timeout_add(0, &TerminateTransferTestStarter, &processor); |
g_main_loop_run(loop); |