Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 |
| OLD | NEW |