OLD | NEW |
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 <stdio.h> | 5 #include <stdio.h> |
6 #include <string> | 6 #include <string> |
7 #include <gtest/gtest.h> | 7 #include <gtest/gtest.h> |
8 #include "update_engine/install_plan.h" | 8 #include "update_engine/install_plan.h" |
9 #include "update_engine/omaha_request_params.h" | 9 #include "update_engine/omaha_request_params.h" |
10 #include "update_engine/test_utils.h" | 10 #include "update_engine/test_utils.h" |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
42 const string& omaha_url) { | 42 const string& omaha_url) { |
43 OmahaRequestDeviceParams params; | 43 OmahaRequestDeviceParams params; |
44 params.set_root(string("./") + kTestDir); | 44 params.set_root(string("./") + kTestDir); |
45 bool success = params.Init(app_version, omaha_url); | 45 bool success = params.Init(app_version, omaha_url); |
46 if (out) | 46 if (out) |
47 *out = params; | 47 *out = params; |
48 return success; | 48 return success; |
49 } | 49 } |
50 | 50 |
51 namespace { | 51 namespace { |
52 bool IsHexDigit(char c) { | |
53 return ((c >= '0') && (c <= '9')) || | |
54 ((c >= 'a') && (c <= 'f')) || | |
55 ((c >= 'A') && (c <= 'F')); | |
56 } | |
57 | |
58 // Returns true iff str is formatted as a GUID. Example GUID: | |
59 // "{2251FFAD-DBAB-4E53-8B3A-18F98BB4EB80}" | |
60 bool IsValidGuid(const string& str) { | |
61 TEST_AND_RETURN_FALSE(str.size() == 38); | |
62 TEST_AND_RETURN_FALSE((*str.begin() == '{') && (*str.rbegin() == '}')); | |
63 for (string::size_type i = 1; i < (str.size() - 1); ++i) { | |
64 if ((i == 9) || (i == 14) || (i == 19) || (i == 24)) { | |
65 TEST_AND_RETURN_FALSE(str[i] == '-'); | |
66 } else { | |
67 TEST_AND_RETURN_FALSE(IsHexDigit(str[i])); | |
68 } | |
69 } | |
70 return true; | |
71 } | |
72 | |
73 string GetMachineType() { | 52 string GetMachineType() { |
74 FILE* fp = popen("uname -m", "r"); | 53 FILE* fp = popen("uname -m", "r"); |
75 if (!fp) | 54 if (!fp) |
76 return ""; | 55 return ""; |
77 string ret; | 56 string ret; |
78 for (;;) { | 57 for (;;) { |
79 char buffer[10]; | 58 char buffer[10]; |
80 size_t r = fread(buffer, 1, sizeof(buffer), fp); | 59 size_t r = fread(buffer, 1, sizeof(buffer), fp); |
81 if (r == 0) | 60 if (r == 0) |
82 break; | 61 break; |
(...skipping 10 matching lines...) Expand all Loading... |
93 TEST_F(OmahaRequestDeviceParamsTest, SimpleTest) { | 72 TEST_F(OmahaRequestDeviceParamsTest, SimpleTest) { |
94 ASSERT_TRUE(WriteFileString( | 73 ASSERT_TRUE(WriteFileString( |
95 kTestDir + "/etc/lsb-release", | 74 kTestDir + "/etc/lsb-release", |
96 "CHROMEOS_RELEASE_BOARD=arm-generic\n" | 75 "CHROMEOS_RELEASE_BOARD=arm-generic\n" |
97 "CHROMEOS_RELEASE_FOO=bar\n" | 76 "CHROMEOS_RELEASE_FOO=bar\n" |
98 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n" | 77 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n" |
99 "CHROMEOS_RELEASE_TRACK=footrack\n" | 78 "CHROMEOS_RELEASE_TRACK=footrack\n" |
100 "CHROMEOS_AUSERVER=http://www.google.com")); | 79 "CHROMEOS_AUSERVER=http://www.google.com")); |
101 OmahaRequestParams out; | 80 OmahaRequestParams out; |
102 EXPECT_TRUE(DoTest(&out, "", "")); | 81 EXPECT_TRUE(DoTest(&out, "", "")); |
103 EXPECT_TRUE(IsValidGuid(out.machine_id)) << "id: " << out.machine_id; | |
104 // for now we're just using the machine id here | |
105 EXPECT_TRUE(IsValidGuid(out.user_id)) << "id: " << out.user_id; | |
106 EXPECT_EQ("Chrome OS", out.os_platform); | 82 EXPECT_EQ("Chrome OS", out.os_platform); |
107 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp); | 83 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp); |
108 EXPECT_EQ("arm-generic", out.os_board); | 84 EXPECT_EQ("arm-generic", out.os_board); |
109 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id); | 85 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id); |
110 EXPECT_EQ("0.2.2.3", out.app_version); | 86 EXPECT_EQ("0.2.2.3", out.app_version); |
111 EXPECT_EQ("en-US", out.app_lang); | 87 EXPECT_EQ("en-US", out.app_lang); |
112 EXPECT_TRUE(out.delta_okay); | 88 EXPECT_TRUE(out.delta_okay); |
113 EXPECT_EQ("footrack", out.app_track); | 89 EXPECT_EQ("footrack", out.app_track); |
114 EXPECT_EQ("http://www.google.com", out.update_url); | 90 EXPECT_EQ("http://www.google.com", out.update_url); |
115 } | 91 } |
116 | 92 |
117 TEST_F(OmahaRequestDeviceParamsTest, MissingTrackTest) { | 93 TEST_F(OmahaRequestDeviceParamsTest, MissingTrackTest) { |
118 ASSERT_TRUE(WriteFileString( | 94 ASSERT_TRUE(WriteFileString( |
119 kTestDir + "/etc/lsb-release", | 95 kTestDir + "/etc/lsb-release", |
120 "CHROMEOS_RELEASE_FOO=bar\n" | 96 "CHROMEOS_RELEASE_FOO=bar\n" |
121 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n" | 97 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n" |
122 "CHROMEOS_RELEASE_TRXCK=footrack")); | 98 "CHROMEOS_RELEASE_TRXCK=footrack")); |
123 OmahaRequestParams out; | 99 OmahaRequestParams out; |
124 EXPECT_TRUE(DoTest(&out, "", "")); | 100 EXPECT_TRUE(DoTest(&out, "", "")); |
125 EXPECT_TRUE(IsValidGuid(out.machine_id)); | |
126 // for now we're just using the machine id here | |
127 EXPECT_TRUE(IsValidGuid(out.user_id)); | |
128 EXPECT_EQ("Chrome OS", out.os_platform); | 101 EXPECT_EQ("Chrome OS", out.os_platform); |
129 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp); | 102 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp); |
130 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id); | 103 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id); |
131 EXPECT_EQ("0.2.2.3", out.app_version); | 104 EXPECT_EQ("0.2.2.3", out.app_version); |
132 EXPECT_EQ("en-US", out.app_lang); | 105 EXPECT_EQ("en-US", out.app_lang); |
133 EXPECT_EQ("", out.app_track); | 106 EXPECT_EQ("", out.app_track); |
134 } | 107 } |
135 | 108 |
136 TEST_F(OmahaRequestDeviceParamsTest, ConfusingReleaseTest) { | 109 TEST_F(OmahaRequestDeviceParamsTest, ConfusingReleaseTest) { |
137 ASSERT_TRUE(WriteFileString( | 110 ASSERT_TRUE(WriteFileString( |
138 kTestDir + "/etc/lsb-release", | 111 kTestDir + "/etc/lsb-release", |
139 "CHROMEOS_RELEASE_FOO=CHROMEOS_RELEASE_VERSION=1.2.3.4\n" | 112 "CHROMEOS_RELEASE_FOO=CHROMEOS_RELEASE_VERSION=1.2.3.4\n" |
140 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n" | 113 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n" |
141 "CHROMEOS_RELEASE_TRXCK=footrack")); | 114 "CHROMEOS_RELEASE_TRXCK=footrack")); |
142 OmahaRequestParams out; | 115 OmahaRequestParams out; |
143 EXPECT_TRUE(DoTest(&out, "", "")); | 116 EXPECT_TRUE(DoTest(&out, "", "")); |
144 EXPECT_TRUE(IsValidGuid(out.machine_id)) << out.machine_id; | |
145 // for now we're just using the machine id here | |
146 EXPECT_TRUE(IsValidGuid(out.user_id)); | |
147 EXPECT_EQ("Chrome OS", out.os_platform); | 117 EXPECT_EQ("Chrome OS", out.os_platform); |
148 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp); | 118 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp); |
149 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id); | 119 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id); |
150 EXPECT_EQ("0.2.2.3", out.app_version); | 120 EXPECT_EQ("0.2.2.3", out.app_version); |
151 EXPECT_EQ("en-US", out.app_lang); | 121 EXPECT_EQ("en-US", out.app_lang); |
152 EXPECT_EQ("", out.app_track); | 122 EXPECT_EQ("", out.app_track); |
153 } | 123 } |
154 | 124 |
155 TEST_F(OmahaRequestDeviceParamsTest, MachineIdPersistsTest) { | |
156 ASSERT_TRUE(WriteFileString( | |
157 kTestDir + "/etc/lsb-release", | |
158 "CHROMEOS_RELEASE_FOO=CHROMEOS_RELEASE_VERSION=1.2.3.4\n" | |
159 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n" | |
160 "CHROMEOS_RELEASE_TRXCK=footrack")); | |
161 OmahaRequestParams out1; | |
162 EXPECT_TRUE(DoTest(&out1, "", "")); | |
163 string machine_id; | |
164 EXPECT_TRUE(utils::ReadFileToString( | |
165 kTestDir + | |
166 utils::kStatefulPartition + "/etc/omaha_id", | |
167 &machine_id)); | |
168 EXPECT_EQ(machine_id, out1.machine_id); | |
169 OmahaRequestParams out2; | |
170 EXPECT_TRUE(DoTest(&out2, "", "")); | |
171 EXPECT_EQ(machine_id, out2.machine_id); | |
172 } | |
173 | |
174 TEST_F(OmahaRequestDeviceParamsTest, MissingVersionTest) { | 125 TEST_F(OmahaRequestDeviceParamsTest, MissingVersionTest) { |
175 ASSERT_TRUE(WriteFileString( | 126 ASSERT_TRUE(WriteFileString( |
176 kTestDir + "/etc/lsb-release", | 127 kTestDir + "/etc/lsb-release", |
177 "CHROMEOS_RELEASE_BOARD=arm-generic\n" | 128 "CHROMEOS_RELEASE_BOARD=arm-generic\n" |
178 "CHROMEOS_RELEASE_FOO=bar\n" | 129 "CHROMEOS_RELEASE_FOO=bar\n" |
179 "CHROMEOS_RELEASE_TRACK=footrack")); | 130 "CHROMEOS_RELEASE_TRACK=footrack")); |
180 OmahaRequestParams out; | 131 OmahaRequestParams out; |
181 EXPECT_TRUE(DoTest(&out, "", "")); | 132 EXPECT_TRUE(DoTest(&out, "", "")); |
182 EXPECT_TRUE(IsValidGuid(out.machine_id)) << "id: " << out.machine_id; | |
183 // for now we're just using the machine id here | |
184 EXPECT_TRUE(IsValidGuid(out.user_id)) << "id: " << out.user_id; | |
185 EXPECT_EQ("Chrome OS", out.os_platform); | 133 EXPECT_EQ("Chrome OS", out.os_platform); |
186 EXPECT_EQ(string("_") + GetMachineType(), out.os_sp); | 134 EXPECT_EQ(string("_") + GetMachineType(), out.os_sp); |
187 EXPECT_EQ("arm-generic", out.os_board); | 135 EXPECT_EQ("arm-generic", out.os_board); |
188 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id); | 136 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id); |
189 EXPECT_EQ("", out.app_version); | 137 EXPECT_EQ("", out.app_version); |
190 EXPECT_EQ("en-US", out.app_lang); | 138 EXPECT_EQ("en-US", out.app_lang); |
191 EXPECT_TRUE(out.delta_okay); | 139 EXPECT_TRUE(out.delta_okay); |
192 EXPECT_EQ("footrack", out.app_track); | 140 EXPECT_EQ("footrack", out.app_track); |
193 } | 141 } |
194 | 142 |
195 TEST_F(OmahaRequestDeviceParamsTest, ForceVersionTest) { | 143 TEST_F(OmahaRequestDeviceParamsTest, ForceVersionTest) { |
196 ASSERT_TRUE(WriteFileString( | 144 ASSERT_TRUE(WriteFileString( |
197 kTestDir + "/etc/lsb-release", | 145 kTestDir + "/etc/lsb-release", |
198 "CHROMEOS_RELEASE_BOARD=arm-generic\n" | 146 "CHROMEOS_RELEASE_BOARD=arm-generic\n" |
199 "CHROMEOS_RELEASE_FOO=bar\n" | 147 "CHROMEOS_RELEASE_FOO=bar\n" |
200 "CHROMEOS_RELEASE_TRACK=footrack")); | 148 "CHROMEOS_RELEASE_TRACK=footrack")); |
201 OmahaRequestParams out; | 149 OmahaRequestParams out; |
202 EXPECT_TRUE(DoTest(&out, "ForcedVersion", "")); | 150 EXPECT_TRUE(DoTest(&out, "ForcedVersion", "")); |
203 EXPECT_TRUE(IsValidGuid(out.machine_id)) << "id: " << out.machine_id; | |
204 // for now we're just using the machine id here | |
205 EXPECT_TRUE(IsValidGuid(out.user_id)) << "id: " << out.user_id; | |
206 EXPECT_EQ("Chrome OS", out.os_platform); | 151 EXPECT_EQ("Chrome OS", out.os_platform); |
207 EXPECT_EQ(string("ForcedVersion_") + GetMachineType(), out.os_sp); | 152 EXPECT_EQ(string("ForcedVersion_") + GetMachineType(), out.os_sp); |
208 EXPECT_EQ("arm-generic", out.os_board); | 153 EXPECT_EQ("arm-generic", out.os_board); |
209 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id); | 154 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id); |
210 EXPECT_EQ("ForcedVersion", out.app_version); | 155 EXPECT_EQ("ForcedVersion", out.app_version); |
211 EXPECT_EQ("en-US", out.app_lang); | 156 EXPECT_EQ("en-US", out.app_lang); |
212 EXPECT_TRUE(out.delta_okay); | 157 EXPECT_TRUE(out.delta_okay); |
213 EXPECT_EQ("footrack", out.app_track); | 158 EXPECT_EQ("footrack", out.app_track); |
214 } | 159 } |
215 | 160 |
216 TEST_F(OmahaRequestDeviceParamsTest, ForcedURLTest) { | 161 TEST_F(OmahaRequestDeviceParamsTest, ForcedURLTest) { |
217 ASSERT_TRUE(WriteFileString( | 162 ASSERT_TRUE(WriteFileString( |
218 kTestDir + "/etc/lsb-release", | 163 kTestDir + "/etc/lsb-release", |
219 "CHROMEOS_RELEASE_BOARD=arm-generic\n" | 164 "CHROMEOS_RELEASE_BOARD=arm-generic\n" |
220 "CHROMEOS_RELEASE_FOO=bar\n" | 165 "CHROMEOS_RELEASE_FOO=bar\n" |
221 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n" | 166 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n" |
222 "CHROMEOS_RELEASE_TRACK=footrack")); | 167 "CHROMEOS_RELEASE_TRACK=footrack")); |
223 OmahaRequestParams out; | 168 OmahaRequestParams out; |
224 EXPECT_TRUE(DoTest(&out, "", "http://forced.google.com")); | 169 EXPECT_TRUE(DoTest(&out, "", "http://forced.google.com")); |
225 EXPECT_TRUE(IsValidGuid(out.machine_id)) << "id: " << out.machine_id; | |
226 // for now we're just using the machine id here | |
227 EXPECT_TRUE(IsValidGuid(out.user_id)) << "id: " << out.user_id; | |
228 EXPECT_EQ("Chrome OS", out.os_platform); | 170 EXPECT_EQ("Chrome OS", out.os_platform); |
229 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp); | 171 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp); |
230 EXPECT_EQ("arm-generic", out.os_board); | 172 EXPECT_EQ("arm-generic", out.os_board); |
231 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id); | 173 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id); |
232 EXPECT_EQ("0.2.2.3", out.app_version); | 174 EXPECT_EQ("0.2.2.3", out.app_version); |
233 EXPECT_EQ("en-US", out.app_lang); | 175 EXPECT_EQ("en-US", out.app_lang); |
234 EXPECT_TRUE(out.delta_okay); | 176 EXPECT_TRUE(out.delta_okay); |
235 EXPECT_EQ("footrack", out.app_track); | 177 EXPECT_EQ("footrack", out.app_track); |
236 EXPECT_EQ("http://forced.google.com", out.update_url); | 178 EXPECT_EQ("http://forced.google.com", out.update_url); |
237 } | 179 } |
238 | 180 |
239 TEST_F(OmahaRequestDeviceParamsTest, MissingURLTest) { | 181 TEST_F(OmahaRequestDeviceParamsTest, MissingURLTest) { |
240 ASSERT_TRUE(WriteFileString( | 182 ASSERT_TRUE(WriteFileString( |
241 kTestDir + "/etc/lsb-release", | 183 kTestDir + "/etc/lsb-release", |
242 "CHROMEOS_RELEASE_BOARD=arm-generic\n" | 184 "CHROMEOS_RELEASE_BOARD=arm-generic\n" |
243 "CHROMEOS_RELEASE_FOO=bar\n" | 185 "CHROMEOS_RELEASE_FOO=bar\n" |
244 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n" | 186 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n" |
245 "CHROMEOS_RELEASE_TRACK=footrack")); | 187 "CHROMEOS_RELEASE_TRACK=footrack")); |
246 OmahaRequestParams out; | 188 OmahaRequestParams out; |
247 EXPECT_TRUE(DoTest(&out, "", "")); | 189 EXPECT_TRUE(DoTest(&out, "", "")); |
248 EXPECT_TRUE(IsValidGuid(out.machine_id)) << "id: " << out.machine_id; | |
249 // for now we're just using the machine id here | |
250 EXPECT_TRUE(IsValidGuid(out.user_id)) << "id: " << out.user_id; | |
251 EXPECT_EQ("Chrome OS", out.os_platform); | 190 EXPECT_EQ("Chrome OS", out.os_platform); |
252 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp); | 191 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp); |
253 EXPECT_EQ("arm-generic", out.os_board); | 192 EXPECT_EQ("arm-generic", out.os_board); |
254 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id); | 193 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id); |
255 EXPECT_EQ("0.2.2.3", out.app_version); | 194 EXPECT_EQ("0.2.2.3", out.app_version); |
256 EXPECT_EQ("en-US", out.app_lang); | 195 EXPECT_EQ("en-US", out.app_lang); |
257 EXPECT_TRUE(out.delta_okay); | 196 EXPECT_TRUE(out.delta_okay); |
258 EXPECT_EQ("footrack", out.app_track); | 197 EXPECT_EQ("footrack", out.app_track); |
259 EXPECT_EQ(OmahaRequestParams::kUpdateUrl, out.update_url); | 198 EXPECT_EQ(OmahaRequestParams::kUpdateUrl, out.update_url); |
260 } | 199 } |
261 | 200 |
262 TEST_F(OmahaRequestDeviceParamsTest, NoDeltasTest) { | 201 TEST_F(OmahaRequestDeviceParamsTest, NoDeltasTest) { |
263 ASSERT_TRUE(WriteFileString( | 202 ASSERT_TRUE(WriteFileString( |
264 kTestDir + "/etc/lsb-release", | 203 kTestDir + "/etc/lsb-release", |
265 "CHROMEOS_RELEASE_FOO=CHROMEOS_RELEASE_VERSION=1.2.3.4\n" | 204 "CHROMEOS_RELEASE_FOO=CHROMEOS_RELEASE_VERSION=1.2.3.4\n" |
266 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n" | 205 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n" |
267 "CHROMEOS_RELEASE_TRXCK=footrack")); | 206 "CHROMEOS_RELEASE_TRXCK=footrack")); |
268 ASSERT_TRUE(WriteFileString(kTestDir + "/.nodelta", "")); | 207 ASSERT_TRUE(WriteFileString(kTestDir + "/.nodelta", "")); |
269 OmahaRequestParams out; | 208 OmahaRequestParams out; |
270 EXPECT_TRUE(DoTest(&out, "", "")); | 209 EXPECT_TRUE(DoTest(&out, "", "")); |
271 EXPECT_FALSE(out.delta_okay); | 210 EXPECT_FALSE(out.delta_okay); |
272 } | 211 } |
273 | 212 |
274 } // namespace chromeos_update_engine | 213 } // namespace chromeos_update_engine |
OLD | NEW |