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

Side by Side Diff: components/safe_browsing_db/v4_store_unittest.cc

Issue 2128173003: Merge the hash prefixes from the old store and the additions in the partial (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Simplified merge logic. +Nit: Fix a failing test Created 4 years, 5 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "base/files/file_util.h" 5 #include "base/files/file_util.h"
6 #include "base/files/scoped_temp_dir.h" 6 #include "base/files/scoped_temp_dir.h"
7 #include "base/memory/ptr_util.h" 7 #include "base/memory/ptr_util.h"
8 #include "base/run_loop.h" 8 #include "base/run_loop.h"
9 #include "base/test/test_simple_task_runner.h" 9 #include "base/test/test_simple_task_runner.h"
10 #include "base/time/time.h" 10 #include "base/time/time.h"
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 list_update_response->set_response_type(ListUpdateResponse::FULL_UPDATE); 134 list_update_response->set_response_type(ListUpdateResponse::FULL_UPDATE);
135 list_update_response->set_new_client_state("test_client_state"); 135 list_update_response->set_new_client_state("test_client_state");
136 EXPECT_EQ(WRITE_SUCCESS, V4Store(task_runner_, store_path_) 136 EXPECT_EQ(WRITE_SUCCESS, V4Store(task_runner_, store_path_)
137 .WriteToDisk(std::move(list_update_response))); 137 .WriteToDisk(std::move(list_update_response)));
138 138
139 std::unique_ptr<V4Store> read_store(new V4Store(task_runner_, store_path_)); 139 std::unique_ptr<V4Store> read_store(new V4Store(task_runner_, store_path_));
140 EXPECT_EQ(READ_SUCCESS, read_store->ReadFromDisk()); 140 EXPECT_EQ(READ_SUCCESS, read_store->ReadFromDisk());
141 EXPECT_EQ("test_client_state", read_store->state_); 141 EXPECT_EQ("test_client_state", read_store->state_);
142 } 142 }
143 143
144 TEST_F(V4StoreTest, TestAddUnlumpedHashesWithInvalidAddition) {
145 HashPrefixMap prefix_map;
146 MergeResult result = V4Store::AddUnlumpedHashes(5, "a", &prefix_map);
147 EXPECT_EQ(ADDITIONS_SIZE_UNEXPECTED_FAILURE, result);
148 EXPECT_TRUE(prefix_map.empty());
149 }
150
151 TEST_F(V4StoreTest, TestAddUnlumpedHashesWithEmptyString) {
152 HashPrefixMap prefix_map;
153 MergeResult result = V4Store::AddUnlumpedHashes(5, "", &prefix_map);
154 EXPECT_EQ(MERGE_SUCCESS, result);
155 EXPECT_TRUE(prefix_map[5].empty());
156 }
157
158 TEST_F(V4StoreTest, TestAddUnlumpedHashes) {
159 HashPrefixMap prefix_map;
160 PrefixSize prefix_size = 5;
161 EXPECT_EQ(MERGE_SUCCESS,
162 V4Store::AddUnlumpedHashes(prefix_size, "abcde5432100000-----",
163 &prefix_map));
164 EXPECT_EQ(1u, prefix_map.size());
165 HashPrefixes hash_prefixes = prefix_map.at(prefix_size);
166 EXPECT_EQ(4 * prefix_size, hash_prefixes.size());
167 EXPECT_EQ("abcde", hash_prefixes.substr(0 * prefix_size, prefix_size));
Nathan Parker 2016/07/12 20:35:06 Seems like you could just test that the whole stri
vakh (use Gerrit instead) 2016/07/12 21:57:03 Done.
168 EXPECT_EQ("54321", hash_prefixes.substr(1 * prefix_size, prefix_size));
169 EXPECT_EQ("00000", hash_prefixes.substr(2 * prefix_size, prefix_size));
170 EXPECT_EQ("-----", hash_prefixes.substr(3 * prefix_size, prefix_size));
171
172 prefix_size = 4;
173 EXPECT_EQ(MERGE_SUCCESS,
174 V4Store::AddUnlumpedHashes(prefix_size, "abcde5432100000-----",
175 &prefix_map));
176 EXPECT_EQ(2u, prefix_map.size());
177 hash_prefixes = prefix_map.at(prefix_size);
178 EXPECT_EQ(5 * prefix_size, hash_prefixes.size());
179 EXPECT_EQ("abcd", hash_prefixes.substr(0 * prefix_size, prefix_size));
180 EXPECT_EQ("e543", hash_prefixes.substr(1 * prefix_size, prefix_size));
181 EXPECT_EQ("2100", hash_prefixes.substr(2 * prefix_size, prefix_size));
182 EXPECT_EQ("000-", hash_prefixes.substr(3 * prefix_size, prefix_size));
183 EXPECT_EQ("----", hash_prefixes.substr(4 * prefix_size, prefix_size));
184 }
185
186 TEST_F(V4StoreTest, TestGetNextSmallestPrefixSizeWithEmptyPrefixMap) {
187 HashPrefixMap prefix_map;
188 CounterMap counter_map;
189 V4Store::InitializeCounterMap(prefix_map, &counter_map);
190
191 PrefixSize prefix_size;
192 EXPECT_FALSE(V4Store::GetNextSmallestPrefixSize(prefix_map, counter_map,
193 &prefix_size));
194 }
195
196 TEST_F(V4StoreTest, TestGetNextSmallestPrefixSize) {
197 HashPrefixMap prefix_map;
198 V4Store::AddUnlumpedHashes(5, "-----0000054321abcde", &prefix_map);
199 V4Store::AddUnlumpedHashes(4, "-----0000054321abcde", &prefix_map);
200 CounterMap counter_map;
201 V4Store::InitializeCounterMap(prefix_map, &counter_map);
202
203 PrefixSize prefix_size;
204 EXPECT_TRUE(V4Store::GetNextSmallestPrefixSize(prefix_map, counter_map,
205 &prefix_size));
206 EXPECT_EQ(4u, prefix_size);
207 }
208
209 TEST_F(V4StoreTest, TestGetNextUnmergedPrefix) {
210 HashPrefixMap prefix_map;
211 V4Store::AddUnlumpedHashes(5, "-----0000054321abcde", &prefix_map);
212 V4Store::AddUnlumpedHashes(4, "-----0000054321abcde", &prefix_map);
Nathan Parker 2016/07/12 20:35:06 nit: maybe use a string that looks like it's in se
vakh (use Gerrit instead) 2016/07/12 21:57:03 Good idea but when I do that, the output of 'git c
213 CounterMap counter_map;
214 V4Store::InitializeCounterMap(prefix_map, &counter_map);
215
216 PrefixSize prefix_size;
217 EXPECT_TRUE(V4Store::GetNextSmallestPrefixSize(prefix_map, counter_map,
218 &prefix_size));
219 const HashPrefix& prefix = V4Store::GetNextUnmergedPrefixForSize(
220 prefix_size, prefix_map, counter_map);
221 EXPECT_EQ("----", prefix);
222 }
223
224 TEST_F(V4StoreTest, TestMergeUpdates) {
225 HashPrefixMap prefix_map_old;
226 V4Store::AddUnlumpedHashes(4, "abcdefgh", &prefix_map_old);
227 V4Store::AddUnlumpedHashes(5, "54321abcde", &prefix_map_old);
228 HashPrefixMap prefix_map_additions;
229 V4Store::AddUnlumpedHashes(4, "----1111bbbb", &prefix_map_additions);
230 V4Store::AddUnlumpedHashes(5, "22222bcdef", &prefix_map_additions);
231
232 std::unique_ptr<V4Store> store(new V4Store(task_runner_, store_path_));
233 store->MergeUpdate(prefix_map_old, prefix_map_additions);
234 const HashPrefixMap& prefix_map = store->hash_prefix_map_;
235 EXPECT_EQ(2u, prefix_map.size());
236
237 PrefixSize prefix_size = 4;
238 HashPrefixes hash_prefixes = prefix_map.at(prefix_size);
239 EXPECT_EQ(5 * prefix_size, hash_prefixes.size());
240 EXPECT_EQ("----", hash_prefixes.substr(0 * prefix_size, prefix_size));
241 EXPECT_EQ("1111", hash_prefixes.substr(1 * prefix_size, prefix_size));
242 EXPECT_EQ("abcd", hash_prefixes.substr(2 * prefix_size, prefix_size));
243 EXPECT_EQ("bbbb", hash_prefixes.substr(3 * prefix_size, prefix_size));
244 EXPECT_EQ("efgh", hash_prefixes.substr(4 * prefix_size, prefix_size));
245
246 prefix_size = 5;
247 hash_prefixes = prefix_map.at(prefix_size);
248 EXPECT_EQ(4 * prefix_size, hash_prefixes.size());
249 EXPECT_EQ("22222", hash_prefixes.substr(0 * prefix_size, prefix_size));
250 EXPECT_EQ("54321", hash_prefixes.substr(1 * prefix_size, prefix_size));
251 EXPECT_EQ("abcde", hash_prefixes.substr(2 * prefix_size, prefix_size));
252 EXPECT_EQ("bcdef", hash_prefixes.substr(3 * prefix_size, prefix_size));
253 }
254
144 } // namespace safe_browsing 255 } // namespace safe_browsing
OLDNEW
« components/safe_browsing_db/v4_store.cc ('K') | « components/safe_browsing_db/v4_store.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698