OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium 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 <string> | 5 #include <string> |
6 #include <gtest/gtest.h> | 6 #include <gtest/gtest.h> |
7 #include "update_engine/omaha_response_handler_action.h" | 7 #include "update_engine/omaha_response_handler_action.h" |
8 #include "update_engine/test_utils.h" | 8 #include "update_engine/test_utils.h" |
9 #include "update_engine/utils.h" | 9 #include "update_engine/utils.h" |
10 | 10 |
11 using std::string; | 11 using std::string; |
12 | 12 |
13 namespace chromeos_update_engine { | 13 namespace chromeos_update_engine { |
14 | 14 |
15 class OmahaResponseHandlerActionTest : public ::testing::Test { | 15 class OmahaResponseHandlerActionTest : public ::testing::Test { |
16 public: | 16 public: |
17 // Return true iff the OmahaResponseHandlerAction succeeded. | 17 // Return true iff the OmahaResponseHandlerAction succeeded. |
18 // If out is non-NULL, it's set w/ the response from the action. | 18 // If out is non-NULL, it's set w/ the response from the action. |
19 bool DoTest(const UpdateCheckResponse& in, | 19 bool DoTest(const OmahaResponse& in, |
20 const string& boot_dev, | 20 const string& boot_dev, |
21 InstallPlan* out); | 21 InstallPlan* out); |
22 }; | 22 }; |
23 | 23 |
24 class OmahaResponseHandlerActionProcessorDelegate | 24 class OmahaResponseHandlerActionProcessorDelegate |
25 : public ActionProcessorDelegate { | 25 : public ActionProcessorDelegate { |
26 public: | 26 public: |
27 OmahaResponseHandlerActionProcessorDelegate() | 27 OmahaResponseHandlerActionProcessorDelegate() |
28 : success_(false), | 28 : success_(false), |
29 success_set_(false) {} | 29 success_set_(false) {} |
(...skipping 14 matching lines...) Expand all Loading... |
44 "very_long_name_and_no_slashes-very_long_name_and_no_slashes" | 44 "very_long_name_and_no_slashes-very_long_name_and_no_slashes" |
45 "very_long_name_and_no_slashes-very_long_name_and_no_slashes" | 45 "very_long_name_and_no_slashes-very_long_name_and_no_slashes" |
46 "very_long_name_and_no_slashes-very_long_name_and_no_slashes" | 46 "very_long_name_and_no_slashes-very_long_name_and_no_slashes" |
47 "very_long_name_and_no_slashes-very_long_name_and_no_slashes" | 47 "very_long_name_and_no_slashes-very_long_name_and_no_slashes" |
48 "very_long_name_and_no_slashes-very_long_name_and_no_slashes" | 48 "very_long_name_and_no_slashes-very_long_name_and_no_slashes" |
49 "very_long_name_and_no_slashes-very_long_name_and_no_slashes" | 49 "very_long_name_and_no_slashes-very_long_name_and_no_slashes" |
50 "very_long_name_and_no_slashes-very_long_name_and_no_slashes" | 50 "very_long_name_and_no_slashes-very_long_name_and_no_slashes" |
51 "-the_update_a.b.c.d_DELTA_.tgz"; | 51 "-the_update_a.b.c.d_DELTA_.tgz"; |
52 } // namespace {} | 52 } // namespace {} |
53 | 53 |
54 bool OmahaResponseHandlerActionTest::DoTest(const UpdateCheckResponse& in, | 54 bool OmahaResponseHandlerActionTest::DoTest(const OmahaResponse& in, |
55 const string& boot_dev, | 55 const string& boot_dev, |
56 InstallPlan* out) { | 56 InstallPlan* out) { |
57 ActionProcessor processor; | 57 ActionProcessor processor; |
58 OmahaResponseHandlerActionProcessorDelegate delegate; | 58 OmahaResponseHandlerActionProcessorDelegate delegate; |
59 processor.set_delegate(&delegate); | 59 processor.set_delegate(&delegate); |
60 | 60 |
61 ObjectFeederAction<UpdateCheckResponse> feeder_action; | 61 ObjectFeederAction<OmahaResponse> feeder_action; |
62 feeder_action.set_obj(in); | 62 feeder_action.set_obj(in); |
63 OmahaResponseHandlerAction response_handler_action; | 63 OmahaResponseHandlerAction response_handler_action; |
64 response_handler_action.set_boot_device(boot_dev); | 64 response_handler_action.set_boot_device(boot_dev); |
65 BondActions(&feeder_action, &response_handler_action); | 65 BondActions(&feeder_action, &response_handler_action); |
66 ObjectCollectorAction<InstallPlan> collector_action; | 66 ObjectCollectorAction<InstallPlan> collector_action; |
67 BondActions(&response_handler_action, &collector_action); | 67 BondActions(&response_handler_action, &collector_action); |
68 processor.EnqueueAction(&feeder_action); | 68 processor.EnqueueAction(&feeder_action); |
69 processor.EnqueueAction(&response_handler_action); | 69 processor.EnqueueAction(&response_handler_action); |
70 processor.EnqueueAction(&collector_action); | 70 processor.EnqueueAction(&collector_action); |
71 processor.StartProcessing(); | 71 processor.StartProcessing(); |
72 EXPECT_TRUE(!processor.IsRunning()) | 72 EXPECT_TRUE(!processor.IsRunning()) |
73 << "Update test to handle non-asynch actions"; | 73 << "Update test to handle non-asynch actions"; |
74 if (out) | 74 if (out) |
75 *out = collector_action.object(); | 75 *out = collector_action.object(); |
76 EXPECT_TRUE(delegate.success_set_); | 76 EXPECT_TRUE(delegate.success_set_); |
77 return delegate.success_; | 77 return delegate.success_; |
78 } | 78 } |
79 | 79 |
80 TEST_F(OmahaResponseHandlerActionTest, SimpleTest) { | 80 TEST_F(OmahaResponseHandlerActionTest, SimpleTest) { |
81 { | 81 { |
82 UpdateCheckResponse in; | 82 OmahaResponse in; |
83 in.update_exists = true; | 83 in.update_exists = true; |
84 in.display_version = "a.b.c.d"; | 84 in.display_version = "a.b.c.d"; |
85 in.codebase = "http://foo/the_update_a.b.c.d.tgz"; | 85 in.codebase = "http://foo/the_update_a.b.c.d.tgz"; |
86 in.more_info_url = "http://more/info"; | 86 in.more_info_url = "http://more/info"; |
87 in.hash = "HASH+"; | 87 in.hash = "HASH+"; |
88 in.size = 12; | 88 in.size = 12; |
89 in.needs_admin = true; | 89 in.needs_admin = true; |
90 in.prompt = false; | 90 in.prompt = false; |
91 InstallPlan install_plan; | 91 InstallPlan install_plan; |
92 EXPECT_TRUE(DoTest(in, "/dev/sda3", &install_plan)); | 92 EXPECT_TRUE(DoTest(in, "/dev/sda3", &install_plan)); |
93 EXPECT_TRUE(install_plan.is_full_update); | 93 EXPECT_TRUE(install_plan.is_full_update); |
94 EXPECT_EQ(in.codebase, install_plan.download_url); | 94 EXPECT_EQ(in.codebase, install_plan.download_url); |
95 EXPECT_EQ(in.hash, install_plan.download_hash); | 95 EXPECT_EQ(in.hash, install_plan.download_hash); |
96 EXPECT_EQ("/dev/sda5", install_plan.install_path); | 96 EXPECT_EQ("/dev/sda5", install_plan.install_path); |
97 } | 97 } |
98 { | 98 { |
99 UpdateCheckResponse in; | 99 OmahaResponse in; |
100 in.update_exists = true; | 100 in.update_exists = true; |
101 in.display_version = "a.b.c.d"; | 101 in.display_version = "a.b.c.d"; |
102 in.codebase = "http://foo/the_update_a.b.c.d.tgz"; | 102 in.codebase = "http://foo/the_update_a.b.c.d.tgz"; |
103 in.more_info_url = "http://more/info"; | 103 in.more_info_url = "http://more/info"; |
104 in.hash = "HASHj+"; | 104 in.hash = "HASHj+"; |
105 in.size = 12; | 105 in.size = 12; |
106 in.needs_admin = true; | 106 in.needs_admin = true; |
107 in.prompt = true; | 107 in.prompt = true; |
108 InstallPlan install_plan; | 108 InstallPlan install_plan; |
109 EXPECT_TRUE(DoTest(in, "/dev/sda5", &install_plan)); | 109 EXPECT_TRUE(DoTest(in, "/dev/sda5", &install_plan)); |
110 EXPECT_TRUE(install_plan.is_full_update); | 110 EXPECT_TRUE(install_plan.is_full_update); |
111 EXPECT_EQ(in.codebase, install_plan.download_url); | 111 EXPECT_EQ(in.codebase, install_plan.download_url); |
112 EXPECT_EQ(in.hash, install_plan.download_hash); | 112 EXPECT_EQ(in.hash, install_plan.download_hash); |
113 EXPECT_EQ("/dev/sda3", install_plan.install_path); | 113 EXPECT_EQ("/dev/sda3", install_plan.install_path); |
114 } | 114 } |
115 { | 115 { |
116 UpdateCheckResponse in; | 116 OmahaResponse in; |
117 in.update_exists = true; | 117 in.update_exists = true; |
118 in.display_version = "a.b.c.d"; | 118 in.display_version = "a.b.c.d"; |
119 in.codebase = kLongName; | 119 in.codebase = kLongName; |
120 in.more_info_url = "http://more/info"; | 120 in.more_info_url = "http://more/info"; |
121 in.hash = "HASHj+"; | 121 in.hash = "HASHj+"; |
122 in.size = 12; | 122 in.size = 12; |
123 in.needs_admin = true; | 123 in.needs_admin = true; |
124 in.prompt = true; | 124 in.prompt = true; |
125 InstallPlan install_plan; | 125 InstallPlan install_plan; |
126 EXPECT_TRUE(DoTest(in, "/dev/sda3", &install_plan)); | 126 EXPECT_TRUE(DoTest(in, "/dev/sda3", &install_plan)); |
127 EXPECT_TRUE(install_plan.is_full_update); | 127 EXPECT_TRUE(install_plan.is_full_update); |
128 EXPECT_EQ(in.codebase, install_plan.download_url); | 128 EXPECT_EQ(in.codebase, install_plan.download_url); |
129 EXPECT_EQ(in.hash, install_plan.download_hash); | 129 EXPECT_EQ(in.hash, install_plan.download_hash); |
130 EXPECT_EQ("/dev/sda5", install_plan.install_path); | 130 EXPECT_EQ("/dev/sda5", install_plan.install_path); |
131 } | 131 } |
132 } | 132 } |
133 | 133 |
134 TEST_F(OmahaResponseHandlerActionTest, NoUpdatesTest) { | 134 TEST_F(OmahaResponseHandlerActionTest, NoUpdatesTest) { |
135 UpdateCheckResponse in; | 135 OmahaResponse in; |
136 in.update_exists = false; | 136 in.update_exists = false; |
137 InstallPlan install_plan; | 137 InstallPlan install_plan; |
138 EXPECT_FALSE(DoTest(in, "/dev/sda1", &install_plan)); | 138 EXPECT_FALSE(DoTest(in, "/dev/sda1", &install_plan)); |
139 EXPECT_FALSE(install_plan.is_full_update); | 139 EXPECT_FALSE(install_plan.is_full_update); |
140 EXPECT_EQ("", install_plan.download_url); | 140 EXPECT_EQ("", install_plan.download_url); |
141 EXPECT_EQ("", install_plan.download_hash); | 141 EXPECT_EQ("", install_plan.download_hash); |
142 EXPECT_EQ("", install_plan.install_path); | 142 EXPECT_EQ("", install_plan.install_path); |
143 } | 143 } |
144 | 144 |
145 } // namespace chromeos_update_engine | 145 } // namespace chromeos_update_engine |
OLD | NEW |