Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(18)

Side by Side Diff: omaha_hash_calculator_unittest.cc

Issue 3588015: AU: Include the old/new kernel/rootfs size/hash in the update metadata. (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/update_engine.git
Patch Set: no need to close negative handles Created 10 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2009 The Chromium OS Authors. All rights reserved. 1 // Copyright (c) 2009 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 <math.h> 5 #include <math.h>
6 #include <unistd.h> 6 #include <unistd.h>
7 7
8 #include <string>
8 #include <vector> 9 #include <vector>
9 10
10 #include <glib.h> 11 #include <glib.h>
11 #include <gtest/gtest.h> 12 #include <gtest/gtest.h>
12 13
13 #include "update_engine/libcurl_http_fetcher.h" 14 #include "update_engine/libcurl_http_fetcher.h"
14 #include "update_engine/omaha_hash_calculator.h" 15 #include "update_engine/omaha_hash_calculator.h"
16 #include "update_engine/utils.h"
15 17
18 using std::string;
16 using std::vector; 19 using std::vector;
17 20
18 namespace chromeos_update_engine { 21 namespace chromeos_update_engine {
19 22
20 class OmahaHashCalculatorTest : public ::testing::Test { }; 23 class OmahaHashCalculatorTest : public ::testing::Test { };
21 24
22 // Generated by running this on a linux shell: 25 // Generated by running this on a linux shell:
23 // $ echo -n hi | openssl dgst -sha256 -binary | openssl base64 26 // $ echo -n hi | openssl dgst -sha256 -binary | openssl base64
24 static const char kExpectedHash[] = 27 static const char kExpectedHash[] =
25 "j0NDRmSPa5bfid2pAcUXaxCm2Dlh3TwayItZstwyeqQ="; 28 "j0NDRmSPa5bfid2pAcUXaxCm2Dlh3TwayItZstwyeqQ=";
(...skipping 21 matching lines...) Expand all
47 calc.Finalize(); 50 calc.Finalize();
48 EXPECT_EQ(kExpectedHash, calc.hash()); 51 EXPECT_EQ(kExpectedHash, calc.hash());
49 vector<char> raw_hash(kExpectedRawHash, 52 vector<char> raw_hash(kExpectedRawHash,
50 kExpectedRawHash + arraysize(kExpectedRawHash)); 53 kExpectedRawHash + arraysize(kExpectedRawHash));
51 EXPECT_TRUE(raw_hash == calc.raw_hash()); 54 EXPECT_TRUE(raw_hash == calc.raw_hash());
52 } 55 }
53 56
54 TEST(OmahaHashCalculatorTest, ContextTest) { 57 TEST(OmahaHashCalculatorTest, ContextTest) {
55 OmahaHashCalculator calc; 58 OmahaHashCalculator calc;
56 calc.Update("h", 1); 59 calc.Update("h", 1);
60 string calc_context = calc.GetContext();
61 calc.Finalize();
57 OmahaHashCalculator calc_next; 62 OmahaHashCalculator calc_next;
58 calc_next.SetContext(calc.GetContext()); 63 calc_next.SetContext(calc_context);
59 calc_next.Update("i", 1); 64 calc_next.Update("i", 1);
60 calc_next.Finalize(); 65 calc_next.Finalize();
61 // Generated by running this on a linux shell: 66 EXPECT_EQ(kExpectedHash, calc_next.hash());
62 // $ echo -n hi | openssl dgst -sha256 -binary | openssl base64 67 vector<char> raw_hash(kExpectedRawHash,
63 EXPECT_EQ("j0NDRmSPa5bfid2pAcUXaxCm2Dlh3TwayItZstwyeqQ=", calc_next.hash()); 68 kExpectedRawHash + arraysize(kExpectedRawHash));
69 EXPECT_TRUE(raw_hash == calc_next.raw_hash());
64 } 70 }
65 71
66 TEST(OmahaHashCalculatorTest, BigTest) { 72 TEST(OmahaHashCalculatorTest, BigTest) {
67 OmahaHashCalculator calc; 73 OmahaHashCalculator calc;
68 74
69 for (int i = 0; i < 1000000; i++) { 75 for (int i = 0; i < 1000000; i++) {
70 char buf[8]; 76 char buf[8];
71 ASSERT_EQ(0 == i ? 1 : static_cast<int>(floorf(logf(i) / logf(10))) + 1, 77 ASSERT_EQ(0 == i ? 1 : static_cast<int>(floorf(logf(i) / logf(10))) + 1,
72 snprintf(buf, sizeof(buf), "%d", i)) << " i = " << i; 78 snprintf(buf, sizeof(buf), "%d", i)) << " i = " << i;
73 calc.Update(buf, strlen(buf)); 79 calc.Update(buf, strlen(buf));
74 } 80 }
75 calc.Finalize(); 81 calc.Finalize();
76 82
77 // Hash constant generated by running this on a linux shell: 83 // Hash constant generated by running this on a linux shell:
78 // $ C=0 84 // $ C=0
79 // $ while [ $C -lt 1000000 ]; do 85 // $ while [ $C -lt 1000000 ]; do
80 // echo -n $C 86 // echo -n $C
81 // let C=C+1 87 // let C=C+1
82 // done | openssl dgst -sha256 -binary | openssl base64 88 // done | openssl dgst -sha256 -binary | openssl base64
83 EXPECT_EQ("NZf8k6SPBkYMvhaX8YgzuMgbkLP1XZ+neM8K5wcSsf8=", calc.hash()); 89 EXPECT_EQ("NZf8k6SPBkYMvhaX8YgzuMgbkLP1XZ+neM8K5wcSsf8=", calc.hash());
84 } 90 }
85 91
92 TEST(OmahaHashCalculatorTest, UpdateFileSimpleTest) {
93 string data_path;
94 ASSERT_TRUE(
95 utils::MakeTempFile("/tmp/data.XXXXXX", &data_path, NULL));
96 ScopedPathUnlinker data_path_unlinker(data_path);
97 ASSERT_TRUE(utils::WriteFile(data_path.c_str(), "hi", 2));
98
99 static const int kLengths[] = { -1, 2, 10 };
100 for (size_t i = 0; i < arraysize(kLengths); i++) {
101 OmahaHashCalculator calc;
102 EXPECT_EQ(2, calc.UpdateFile(data_path, kLengths[i]));
103 EXPECT_TRUE(calc.Finalize());
104 EXPECT_EQ(kExpectedHash, calc.hash());
105 vector<char> raw_hash(kExpectedRawHash,
106 kExpectedRawHash + arraysize(kExpectedRawHash));
107 EXPECT_TRUE(raw_hash == calc.raw_hash());
108 }
109
110 OmahaHashCalculator calc;
111 EXPECT_EQ(0, calc.UpdateFile(data_path, 0));
112 EXPECT_EQ(1, calc.UpdateFile(data_path, 1));
113 EXPECT_TRUE(calc.Finalize());
114 // echo -n h | openssl dgst -sha256 -binary | openssl base64
115 EXPECT_EQ("qqlAJmTxpB9A67xSyZk+tmrrNmYClY/fqig7ceZNsSM=", calc.hash());
116 }
117
118 TEST(OmahaHashCalculatorTest, UpdateFileNonexistentTest) {
119 OmahaHashCalculator calc;
120 EXPECT_EQ(-1, calc.UpdateFile("/some/non-existent/file", -1));
121 }
122
86 TEST(OmahaHashCalculatorTest, AbortTest) { 123 TEST(OmahaHashCalculatorTest, AbortTest) {
87 // Just make sure we don't crash and valgrind doesn't detect memory leaks 124 // Just make sure we don't crash and valgrind doesn't detect memory leaks
88 { 125 {
89 OmahaHashCalculator calc; 126 OmahaHashCalculator calc;
90 } 127 }
91 { 128 {
92 OmahaHashCalculator calc; 129 OmahaHashCalculator calc;
93 calc.Update("h", 1); 130 calc.Update("h", 1);
94 } 131 }
95 } 132 }
96 133
97 } // namespace chromeos_update_engine 134 } // namespace chromeos_update_engine
OLDNEW
« omaha_hash_calculator.cc ('K') | « omaha_hash_calculator.cc ('k') | update_metadata.proto » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698