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 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/file_util.h" | 9 #include "base/file_util.h" |
10 #include "gtest/gtest.h" | 10 #include "gtest/gtest.h" |
(...skipping 10 matching lines...) Expand all Loading... |
21 protected: | 21 protected: |
22 // Return true iff the OmahaRequestDeviceParams::Init succeeded. If | 22 // Return true iff the OmahaRequestDeviceParams::Init succeeded. If |
23 // out is non-NULL, it's set w/ the generated data. | 23 // out is non-NULL, it's set w/ the generated data. |
24 bool DoTest(OmahaRequestParams* out, const string& app_version, | 24 bool DoTest(OmahaRequestParams* out, const string& app_version, |
25 const string& omaha_url); | 25 const string& omaha_url); |
26 | 26 |
27 virtual void SetUp() { | 27 virtual void SetUp() { |
28 ASSERT_EQ(0, System(string("mkdir -p ") + kTestDir + "/etc")); | 28 ASSERT_EQ(0, System(string("mkdir -p ") + kTestDir + "/etc")); |
29 ASSERT_EQ(0, System(string("mkdir -p ") + kTestDir + | 29 ASSERT_EQ(0, System(string("mkdir -p ") + kTestDir + |
30 utils::kStatefulPartition + "/etc")); | 30 utils::kStatefulPartition + "/etc")); |
| 31 params_.set_root(string("./") + kTestDir); |
| 32 params_.SetBuildTypeOfficial(false); |
31 } | 33 } |
32 | 34 |
33 virtual void TearDown() { | 35 virtual void TearDown() { |
34 EXPECT_EQ(0, System(string("rm -rf ") + kTestDir)); | 36 EXPECT_EQ(0, System(string("rm -rf ") + kTestDir)); |
35 } | 37 } |
36 | 38 |
| 39 OmahaRequestDeviceParams params_; |
| 40 |
37 static const string kTestDir; | 41 static const string kTestDir; |
38 }; | 42 }; |
39 | 43 |
40 const string OmahaRequestDeviceParamsTest::kTestDir = | 44 const string OmahaRequestDeviceParamsTest::kTestDir = |
41 "omaha_request_device_params-test"; | 45 "omaha_request_device_params-test"; |
42 | 46 |
43 bool OmahaRequestDeviceParamsTest::DoTest(OmahaRequestParams* out, | 47 bool OmahaRequestDeviceParamsTest::DoTest(OmahaRequestParams* out, |
44 const string& app_version, | 48 const string& app_version, |
45 const string& omaha_url) { | 49 const string& omaha_url) { |
46 OmahaRequestDeviceParams params; | 50 bool success = params_.Init(app_version, omaha_url); |
47 params.set_root(string("./") + kTestDir); | |
48 bool success = params.Init(app_version, omaha_url); | |
49 if (out) | 51 if (out) |
50 *out = params; | 52 *out = params_; |
51 return success; | 53 return success; |
52 } | 54 } |
53 | 55 |
54 namespace { | 56 namespace { |
55 string GetMachineType() { | 57 string GetMachineType() { |
56 FILE* fp = popen("uname -m", "r"); | 58 FILE* fp = popen("uname -m", "r"); |
57 if (!fp) | 59 if (!fp) |
58 return ""; | 60 return ""; |
59 string ret; | 61 string ret; |
60 for (;;) { | 62 for (;;) { |
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
220 ASSERT_TRUE(file_util::CreateDirectory(hwid_path.DirName())); | 222 ASSERT_TRUE(file_util::CreateDirectory(hwid_path.DirName())); |
221 ASSERT_EQ(test_class.size(), | 223 ASSERT_EQ(test_class.size(), |
222 file_util::WriteFile(hwid_path, | 224 file_util::WriteFile(hwid_path, |
223 test_class.data(), | 225 test_class.data(), |
224 test_class.size())); | 226 test_class.size())); |
225 OmahaRequestParams out; | 227 OmahaRequestParams out; |
226 EXPECT_TRUE(DoTest(&out, "", "")); | 228 EXPECT_TRUE(DoTest(&out, "", "")); |
227 EXPECT_EQ("sample hardware class", out.hardware_class); | 229 EXPECT_EQ("sample hardware class", out.hardware_class); |
228 } | 230 } |
229 | 231 |
| 232 TEST_F(OmahaRequestDeviceParamsTest, OverrideTest) { |
| 233 ASSERT_TRUE(WriteFileString( |
| 234 kTestDir + "/etc/lsb-release", |
| 235 "CHROMEOS_RELEASE_BOARD=arm-generic\n" |
| 236 "CHROMEOS_RELEASE_FOO=bar\n" |
| 237 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n" |
| 238 "CHROMEOS_RELEASE_TRACK=footrack\n" |
| 239 "CHROMEOS_AUSERVER=http://www.google.com")); |
| 240 ASSERT_TRUE(WriteFileString( |
| 241 kTestDir + utils::kStatefulPartition + "/etc/lsb-release", |
| 242 "CHROMEOS_RELEASE_BOARD=x86-generic\n" |
| 243 "CHROMEOS_RELEASE_TRACK=bartrack\n" |
| 244 "CHROMEOS_AUSERVER=http://www.google.com")); |
| 245 OmahaRequestParams out; |
| 246 EXPECT_TRUE(DoTest(&out, "", "")); |
| 247 EXPECT_EQ("Chrome OS", out.os_platform); |
| 248 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp); |
| 249 EXPECT_EQ("x86-generic", out.os_board); |
| 250 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id); |
| 251 EXPECT_EQ("0.2.2.3", out.app_version); |
| 252 EXPECT_EQ("en-US", out.app_lang); |
| 253 EXPECT_EQ("", out.hardware_class); |
| 254 EXPECT_TRUE(out.delta_okay); |
| 255 EXPECT_EQ("bartrack", out.app_track); |
| 256 EXPECT_EQ("http://www.google.com", out.update_url); |
| 257 } |
| 258 |
| 259 TEST_F(OmahaRequestDeviceParamsTest, SetTrackSimpleTest) { |
| 260 ASSERT_TRUE(WriteFileString( |
| 261 kTestDir + "/etc/lsb-release", |
| 262 "CHROMEOS_RELEASE_BOARD=arm-generic\n" |
| 263 "CHROMEOS_RELEASE_FOO=bar\n" |
| 264 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n" |
| 265 "CHROMEOS_RELEASE_TRACK=footrack\n" |
| 266 "CHROMEOS_AUSERVER=http://www.google.com")); |
| 267 { |
| 268 OmahaRequestDeviceParams params; |
| 269 params.set_root(string("./") + kTestDir); |
| 270 params.SetBuildTypeOfficial(false); |
| 271 EXPECT_TRUE(params.Init("", "")); |
| 272 params.SetTrack("zootrack"); |
| 273 } |
| 274 OmahaRequestParams out; |
| 275 EXPECT_TRUE(DoTest(&out, "", "")); |
| 276 EXPECT_EQ("arm-generic", out.os_board); |
| 277 EXPECT_EQ("zootrack", out.app_track); |
| 278 } |
| 279 |
| 280 TEST_F(OmahaRequestDeviceParamsTest, SetTrackPreserveTest) { |
| 281 ASSERT_TRUE(WriteFileString( |
| 282 kTestDir + "/etc/lsb-release", |
| 283 "CHROMEOS_RELEASE_BOARD=arm-generic\n" |
| 284 "CHROMEOS_RELEASE_FOO=bar\n" |
| 285 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n" |
| 286 "CHROMEOS_RELEASE_TRACK=footrack\n" |
| 287 "CHROMEOS_AUSERVER=http://www.google.com")); |
| 288 ASSERT_TRUE(WriteFileString( |
| 289 kTestDir + utils::kStatefulPartition + "/etc/lsb-release", |
| 290 "CHROMEOS_RELEASE_BOARD=x86-generic\n" |
| 291 "CHROMEOS_RELEASE_TRACK=bartrack")); |
| 292 { |
| 293 OmahaRequestDeviceParams params; |
| 294 params.set_root(string("./") + kTestDir); |
| 295 params.SetBuildTypeOfficial(false); |
| 296 EXPECT_TRUE(params.Init("", "")); |
| 297 params.SetTrack("zootrack"); |
| 298 } |
| 299 OmahaRequestParams out; |
| 300 EXPECT_TRUE(DoTest(&out, "", "")); |
| 301 EXPECT_EQ("x86-generic", out.os_board); |
| 302 EXPECT_EQ("zootrack", out.app_track); |
| 303 } |
| 304 |
| 305 TEST_F(OmahaRequestDeviceParamsTest, SetTrackInvalidTest) { |
| 306 ASSERT_TRUE(WriteFileString( |
| 307 kTestDir + "/etc/lsb-release", |
| 308 "CHROMEOS_RELEASE_BOARD=arm-generic\n" |
| 309 "CHROMEOS_RELEASE_FOO=bar\n" |
| 310 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n" |
| 311 "CHROMEOS_RELEASE_TRACK=footrack\n" |
| 312 "CHROMEOS_AUSERVER=http://www.google.com")); |
| 313 { |
| 314 OmahaRequestDeviceParams params; |
| 315 params.set_root(string("./") + kTestDir); |
| 316 params.SetBuildTypeOfficial(true); |
| 317 EXPECT_TRUE(params.Init("", "")); |
| 318 params.SetTrack("zootrack"); |
| 319 } |
| 320 OmahaRequestParams out; |
| 321 EXPECT_TRUE(DoTest(&out, "", "")); |
| 322 EXPECT_EQ("arm-generic", out.os_board); |
| 323 EXPECT_EQ("footrack", out.app_track); |
| 324 } |
| 325 |
| 326 TEST_F(OmahaRequestDeviceParamsTest, IsValidTrackTest) { |
| 327 params_.SetBuildTypeOfficial(true); |
| 328 EXPECT_TRUE(params_.IsValidTrack("beta-channel")); |
| 329 EXPECT_TRUE(params_.IsValidTrack("dev-channel")); |
| 330 EXPECT_FALSE(params_.IsValidTrack("some-channel")); |
| 331 EXPECT_FALSE(params_.IsValidTrack("")); |
| 332 params_.SetBuildTypeOfficial(false); |
| 333 EXPECT_TRUE(params_.IsValidTrack("beta-channel")); |
| 334 EXPECT_TRUE(params_.IsValidTrack("dev-channel")); |
| 335 EXPECT_TRUE(params_.IsValidTrack("some-channel")); |
| 336 EXPECT_TRUE(params_.IsValidTrack("")); |
| 337 } |
| 338 |
| 339 TEST_F(OmahaRequestDeviceParamsTest, InvalidTrackTest) { |
| 340 ASSERT_TRUE(WriteFileString( |
| 341 kTestDir + "/etc/lsb-release", |
| 342 "CHROMEOS_RELEASE_BOARD=arm-generic\n" |
| 343 "CHROMEOS_RELEASE_FOO=bar\n" |
| 344 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n" |
| 345 "CHROMEOS_RELEASE_TRACK=footrack\n" |
| 346 "CHROMEOS_AUSERVER=http://www.google.com")); |
| 347 params_.SetBuildTypeOfficial(true); |
| 348 OmahaRequestParams out; |
| 349 EXPECT_TRUE(DoTest(&out, "", "")); |
| 350 EXPECT_EQ("Chrome OS", out.os_platform); |
| 351 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp); |
| 352 EXPECT_EQ("arm-generic", out.os_board); |
| 353 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id); |
| 354 EXPECT_EQ("0.2.2.3", out.app_version); |
| 355 EXPECT_EQ("en-US", out.app_lang); |
| 356 EXPECT_EQ("", out.hardware_class); |
| 357 EXPECT_TRUE(out.delta_okay); |
| 358 EXPECT_EQ("", out.app_track); |
| 359 EXPECT_EQ("http://www.google.com", out.update_url); |
| 360 } |
| 361 |
| 362 TEST_F(OmahaRequestDeviceParamsTest, ValidTrackTest) { |
| 363 ASSERT_TRUE(WriteFileString( |
| 364 kTestDir + "/etc/lsb-release", |
| 365 "CHROMEOS_RELEASE_BOARD=arm-generic\n" |
| 366 "CHROMEOS_RELEASE_FOO=bar\n" |
| 367 "CHROMEOS_RELEASE_VERSION=0.2.2.3\n" |
| 368 "CHROMEOS_RELEASE_TRACK=dev-channel\n" |
| 369 "CHROMEOS_AUSERVER=http://www.google.com")); |
| 370 params_.SetBuildTypeOfficial(true); |
| 371 OmahaRequestParams out; |
| 372 EXPECT_TRUE(DoTest(&out, "", "")); |
| 373 EXPECT_EQ("Chrome OS", out.os_platform); |
| 374 EXPECT_EQ(string("0.2.2.3_") + GetMachineType(), out.os_sp); |
| 375 EXPECT_EQ("arm-generic", out.os_board); |
| 376 EXPECT_EQ("{87efface-864d-49a5-9bb3-4b050a7c227a}", out.app_id); |
| 377 EXPECT_EQ("0.2.2.3", out.app_version); |
| 378 EXPECT_EQ("en-US", out.app_lang); |
| 379 EXPECT_EQ("", out.hardware_class); |
| 380 EXPECT_TRUE(out.delta_okay); |
| 381 EXPECT_EQ("dev-channel", out.app_track); |
| 382 EXPECT_EQ("http://www.google.com", out.update_url); |
| 383 } |
| 384 |
230 } // namespace chromeos_update_engine | 385 } // namespace chromeos_update_engine |
OLD | NEW |