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

Side by Side Diff: net/cookies/cookie_monster_perftest.cc

Issue 1893083002: Change scoped_ptr to std::unique_ptr in //net. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: scopedptr-net-all: iwyu Created 4 years, 8 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
« no previous file with comments | « net/cookies/cookie_monster.cc ('k') | net/cookies/cookie_monster_store_test.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <algorithm> 5 #include <algorithm>
6 #include <memory>
6 7
7 #include "base/bind.h" 8 #include "base/bind.h"
8 #include "base/memory/ref_counted.h" 9 #include "base/memory/ref_counted.h"
9 #include "base/memory/scoped_ptr.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
11 #include "base/strings/string_util.h" 11 #include "base/strings/string_util.h"
12 #include "base/strings/stringprintf.h" 12 #include "base/strings/stringprintf.h"
13 #include "base/test/perf_time_logger.h" 13 #include "base/test/perf_time_logger.h"
14 #include "net/cookies/canonical_cookie.h" 14 #include "net/cookies/canonical_cookie.h"
15 #include "net/cookies/cookie_monster.h" 15 #include "net/cookies/cookie_monster.h"
16 #include "net/cookies/cookie_monster_store_test.h" 16 #include "net/cookies/cookie_monster_store_test.h"
17 #include "net/cookies/parsed_cookie.h" 17 #include "net/cookies/parsed_cookie.h"
18 #include "testing/gtest/include/gtest/gtest.h" 18 #include "testing/gtest/include/gtest/gtest.h"
19 #include "url/gurl.h" 19 #include "url/gurl.h"
20 20
21 namespace net { 21 namespace net {
22 22
23 namespace { 23 namespace {
24 24
25 const int kNumCookies = 20000; 25 const int kNumCookies = 20000;
26 const char kCookieLine[] = "A = \"b=;\\\"\" ;secure;;;"; 26 const char kCookieLine[] = "A = \"b=;\\\"\" ;secure;;;";
27 const char kGoogleURL[] = "http://www.google.izzle"; 27 const char kGoogleURL[] = "http://www.google.izzle";
28 28
29 int CountInString(const std::string& str, char c) { 29 int CountInString(const std::string& str, char c) {
30 return std::count(str.begin(), str.end(), c); 30 return std::count(str.begin(), str.end(), c);
31 } 31 }
32 32
33 class CookieMonsterTest : public testing::Test { 33 class CookieMonsterTest : public testing::Test {
34 public: 34 public:
35 CookieMonsterTest() : message_loop_(new base::MessageLoopForIO()) {} 35 CookieMonsterTest() : message_loop_(new base::MessageLoopForIO()) {}
36 36
37 private: 37 private:
38 scoped_ptr<base::MessageLoop> message_loop_; 38 std::unique_ptr<base::MessageLoop> message_loop_;
39 }; 39 };
40 40
41 class BaseCallback { 41 class BaseCallback {
42 public: 42 public:
43 BaseCallback() : has_run_(false) {} 43 BaseCallback() : has_run_(false) {}
44 44
45 protected: 45 protected:
46 void WaitForCallback() { 46 void WaitForCallback() {
47 // Note that the performance tests currently all operate on a loaded cookie 47 // Note that the performance tests currently all operate on a loaded cookie
48 // store (or, more precisely, one that has no backing persistent store). 48 // store (or, more precisely, one that has no backing persistent store).
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 cookie += kCookieLine; 114 cookie += kCookieLine;
115 base::PerfTimeLogger timer("Parsed_cookie_parse_big_cookies"); 115 base::PerfTimeLogger timer("Parsed_cookie_parse_big_cookies");
116 for (int i = 0; i < kNumCookies; ++i) { 116 for (int i = 0; i < kNumCookies; ++i) {
117 ParsedCookie pc(cookie); 117 ParsedCookie pc(cookie);
118 EXPECT_TRUE(pc.IsValid()); 118 EXPECT_TRUE(pc.IsValid());
119 } 119 }
120 timer.Done(); 120 timer.Done();
121 } 121 }
122 122
123 TEST_F(CookieMonsterTest, TestAddCookiesOnSingleHost) { 123 TEST_F(CookieMonsterTest, TestAddCookiesOnSingleHost) {
124 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr)); 124 std::unique_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
125 std::vector<std::string> cookies; 125 std::vector<std::string> cookies;
126 for (int i = 0; i < kNumCookies; i++) { 126 for (int i = 0; i < kNumCookies; i++) {
127 cookies.push_back(base::StringPrintf("a%03d=b", i)); 127 cookies.push_back(base::StringPrintf("a%03d=b", i));
128 } 128 }
129 129
130 SetCookieCallback setCookieCallback; 130 SetCookieCallback setCookieCallback;
131 131
132 // Add a bunch of cookies on a single host 132 // Add a bunch of cookies on a single host
133 base::PerfTimeLogger timer("Cookie_monster_add_single_host"); 133 base::PerfTimeLogger timer("Cookie_monster_add_single_host");
134 134
(...skipping 12 matching lines...) Expand all
147 } 147 }
148 timer2.Done(); 148 timer2.Done();
149 149
150 base::PerfTimeLogger timer3("Cookie_monster_deleteall_single_host"); 150 base::PerfTimeLogger timer3("Cookie_monster_deleteall_single_host");
151 cm->DeleteAllAsync(CookieMonster::DeleteCallback()); 151 cm->DeleteAllAsync(CookieMonster::DeleteCallback());
152 base::MessageLoop::current()->RunUntilIdle(); 152 base::MessageLoop::current()->RunUntilIdle();
153 timer3.Done(); 153 timer3.Done();
154 } 154 }
155 155
156 TEST_F(CookieMonsterTest, TestAddCookieOnManyHosts) { 156 TEST_F(CookieMonsterTest, TestAddCookieOnManyHosts) {
157 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr)); 157 std::unique_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
158 std::string cookie(kCookieLine); 158 std::string cookie(kCookieLine);
159 std::vector<GURL> gurls; // just wanna have ffffuunnn 159 std::vector<GURL> gurls; // just wanna have ffffuunnn
160 for (int i = 0; i < kNumCookies; ++i) { 160 for (int i = 0; i < kNumCookies; ++i) {
161 gurls.push_back(GURL(base::StringPrintf("https://a%04d.izzle", i))); 161 gurls.push_back(GURL(base::StringPrintf("https://a%04d.izzle", i)));
162 } 162 }
163 163
164 SetCookieCallback setCookieCallback; 164 SetCookieCallback setCookieCallback;
165 165
166 // Add a cookie on a bunch of host 166 // Add a cookie on a bunch of host
167 base::PerfTimeLogger timer("Cookie_monster_add_many_hosts"); 167 base::PerfTimeLogger timer("Cookie_monster_add_many_hosts");
(...skipping 12 matching lines...) Expand all
180 } 180 }
181 timer2.Done(); 181 timer2.Done();
182 182
183 base::PerfTimeLogger timer3("Cookie_monster_deleteall_many_hosts"); 183 base::PerfTimeLogger timer3("Cookie_monster_deleteall_many_hosts");
184 cm->DeleteAllAsync(CookieMonster::DeleteCallback()); 184 cm->DeleteAllAsync(CookieMonster::DeleteCallback());
185 base::MessageLoop::current()->RunUntilIdle(); 185 base::MessageLoop::current()->RunUntilIdle();
186 timer3.Done(); 186 timer3.Done();
187 } 187 }
188 188
189 TEST_F(CookieMonsterTest, TestDomainTree) { 189 TEST_F(CookieMonsterTest, TestDomainTree) {
190 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr)); 190 std::unique_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
191 GetCookiesCallback getCookiesCallback; 191 GetCookiesCallback getCookiesCallback;
192 SetCookieCallback setCookieCallback; 192 SetCookieCallback setCookieCallback;
193 const char domain_cookie_format_tree[] = "a=b; domain=%s"; 193 const char domain_cookie_format_tree[] = "a=b; domain=%s";
194 const std::string domain_base("top.com"); 194 const std::string domain_base("top.com");
195 195
196 std::vector<std::string> domain_list; 196 std::vector<std::string> domain_list;
197 197
198 // Create a balanced binary tree of domains on which the cookie is set. 198 // Create a balanced binary tree of domains on which the cookie is set.
199 domain_list.push_back(domain_base); 199 domain_list.push_back(domain_base);
200 for (int i1 = 0; i1 < 2; i1++) { 200 for (int i1 = 0; i1 < 2; i1++) {
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
233 EXPECT_EQ(5, CountInString(cookie_line, '=')) 233 EXPECT_EQ(5, CountInString(cookie_line, '='))
234 << "Cookie line: " << cookie_line; 234 << "Cookie line: " << cookie_line;
235 base::PerfTimeLogger timer("Cookie_monster_query_domain_tree"); 235 base::PerfTimeLogger timer("Cookie_monster_query_domain_tree");
236 for (int i = 0; i < kNumCookies; i++) { 236 for (int i = 0; i < kNumCookies; i++) {
237 getCookiesCallback.GetCookies(cm.get(), probe_gurl); 237 getCookiesCallback.GetCookies(cm.get(), probe_gurl);
238 } 238 }
239 timer.Done(); 239 timer.Done();
240 } 240 }
241 241
242 TEST_F(CookieMonsterTest, TestDomainLine) { 242 TEST_F(CookieMonsterTest, TestDomainLine) {
243 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr)); 243 std::unique_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
244 SetCookieCallback setCookieCallback; 244 SetCookieCallback setCookieCallback;
245 GetCookiesCallback getCookiesCallback; 245 GetCookiesCallback getCookiesCallback;
246 std::vector<std::string> domain_list; 246 std::vector<std::string> domain_list;
247 GURL probe_gurl("https://b.a.b.a.top.com/"); 247 GURL probe_gurl("https://b.a.b.a.top.com/");
248 std::string cookie_line; 248 std::string cookie_line;
249 249
250 // Create a line of 32 domain cookies such that all cookies stored 250 // Create a line of 32 domain cookies such that all cookies stored
251 // by effective TLD+1 will apply to probe GURL. 251 // by effective TLD+1 will apply to probe GURL.
252 // (TLD + 1 is the level above .com/org/net/etc, e.g. "top.com" 252 // (TLD + 1 is the level above .com/org/net/etc, e.g. "top.com"
253 // or "google.com". "Effective" is added to include sites like 253 // or "google.com". "Effective" is added to include sites like
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 std::string cookie_line( 294 std::string cookie_line(
295 base::StringPrintf("Cookie_%d=1; Path=/", cookie_num)); 295 base::StringPrintf("Cookie_%d=1; Path=/", cookie_num));
296 AddCookieToList(gurl, cookie_line, 296 AddCookieToList(gurl, cookie_line,
297 base::Time::FromInternalValue(time_tick++), 297 base::Time::FromInternalValue(time_tick++),
298 &initial_cookies); 298 &initial_cookies);
299 } 299 }
300 } 300 }
301 301
302 store->SetLoadExpectation(true, initial_cookies); 302 store->SetLoadExpectation(true, initial_cookies);
303 303
304 scoped_ptr<CookieMonster> cm(new CookieMonster(store.get(), nullptr)); 304 std::unique_ptr<CookieMonster> cm(new CookieMonster(store.get(), nullptr));
305 305
306 // Import will happen on first access. 306 // Import will happen on first access.
307 GURL gurl("www.google.com"); 307 GURL gurl("www.google.com");
308 CookieOptions options; 308 CookieOptions options;
309 base::PerfTimeLogger timer("Cookie_monster_import_from_store"); 309 base::PerfTimeLogger timer("Cookie_monster_import_from_store");
310 getCookiesCallback.GetCookies(cm.get(), gurl); 310 getCookiesCallback.GetCookies(cm.get(), gurl);
311 timer.Done(); 311 timer.Done();
312 312
313 // Just confirm keys were set as expected. 313 // Just confirm keys were set as expected.
314 EXPECT_EQ("domain_1.com", cm->GetKey("www.Domain_1.com")); 314 EXPECT_EQ("domain_1.com", cm->GetKey("www.Domain_1.com"));
315 } 315 }
316 316
317 TEST_F(CookieMonsterTest, TestGetKey) { 317 TEST_F(CookieMonsterTest, TestGetKey) {
318 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr)); 318 std::unique_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
319 base::PerfTimeLogger timer("Cookie_monster_get_key"); 319 base::PerfTimeLogger timer("Cookie_monster_get_key");
320 for (int i = 0; i < kNumCookies; i++) 320 for (int i = 0; i < kNumCookies; i++)
321 cm->GetKey("www.google.com"); 321 cm->GetKey("www.google.com");
322 timer.Done(); 322 timer.Done();
323 } 323 }
324 324
325 // This test is probing for whether garbage collection happens when it 325 // This test is probing for whether garbage collection happens when it
326 // shouldn't. This will not in general be visible functionally, since 326 // shouldn't. This will not in general be visible functionally, since
327 // if GC runs twice in a row without any change to the store, the second 327 // if GC runs twice in a row without any change to the store, the second
328 // GC run will not do anything the first one didn't. That's why this is 328 // GC run will not do anything the first one didn't. That's why this is
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 }, 364 },
365 { 365 {
366 "less_than_gc_thresh", 366 "less_than_gc_thresh",
367 // Few enough cookies that gc shouldn't happen at all. 367 // Few enough cookies that gc shouldn't happen at all.
368 CookieMonster::kMaxCookies - 5, 368 CookieMonster::kMaxCookies - 5,
369 0, 369 0,
370 }, 370 },
371 }; 371 };
372 for (int ci = 0; ci < static_cast<int>(arraysize(test_cases)); ++ci) { 372 for (int ci = 0; ci < static_cast<int>(arraysize(test_cases)); ++ci) {
373 const TestCase& test_case(test_cases[ci]); 373 const TestCase& test_case(test_cases[ci]);
374 scoped_ptr<CookieMonster> cm = CreateMonsterFromStoreForGC( 374 std::unique_ptr<CookieMonster> cm = CreateMonsterFromStoreForGC(
375 test_case.num_cookies, test_case.num_old_cookies, 0, 0, 375 test_case.num_cookies, test_case.num_old_cookies, 0, 0,
376 CookieMonster::kSafeFromGlobalPurgeDays * 2); 376 CookieMonster::kSafeFromGlobalPurgeDays * 2);
377 377
378 GURL gurl("http://google.com"); 378 GURL gurl("http://google.com");
379 std::string cookie_line("z=3"); 379 std::string cookie_line("z=3");
380 // Trigger the Garbage collection we're allowed. 380 // Trigger the Garbage collection we're allowed.
381 setCookieCallback.SetCookie(cm.get(), gurl, cookie_line); 381 setCookieCallback.SetCookie(cm.get(), gurl, cookie_line);
382 382
383 base::PerfTimeLogger timer((std::string("GC_") + test_case.name).c_str()); 383 base::PerfTimeLogger timer((std::string("GC_") + test_case.name).c_str());
384 for (int i = 0; i < kNumCookies; i++) 384 for (int i = 0; i < kNumCookies; i++)
385 setCookieCallback.SetCookie(cm.get(), gurl, cookie_line); 385 setCookieCallback.SetCookie(cm.get(), gurl, cookie_line);
386 timer.Done(); 386 timer.Done();
387 } 387 }
388 } 388 }
389 389
390 } // namespace net 390 } // namespace net
OLDNEW
« no previous file with comments | « net/cookies/cookie_monster.cc ('k') | net/cookies/cookie_monster_store_test.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698