diff options
author | initial.commit <initial.commit@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-07-26 22:42:52 +0000 |
---|---|---|
committer | initial.commit <initial.commit@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-07-26 22:42:52 +0000 |
commit | 586acc5fe142f498261f52c66862fa417c3d52d2 (patch) | |
tree | c98b3417a883f2477029c8cd5888f4078681e24e /net/base/cookie_monster_perftest.cc | |
parent | a814a8d55429605fe6d7045045cd25b6bf624580 (diff) | |
download | chromium_src-586acc5fe142f498261f52c66862fa417c3d52d2.zip chromium_src-586acc5fe142f498261f52c66862fa417c3d52d2.tar.gz chromium_src-586acc5fe142f498261f52c66862fa417c3d52d2.tar.bz2 |
Add net to the repository.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@14 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/base/cookie_monster_perftest.cc')
-rw-r--r-- | net/base/cookie_monster_perftest.cc | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/net/base/cookie_monster_perftest.cc b/net/base/cookie_monster_perftest.cc new file mode 100644 index 0000000..d5d93a7 --- /dev/null +++ b/net/base/cookie_monster_perftest.cc @@ -0,0 +1,120 @@ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#include "base/perftimer.h" +#include "base/string_util.h" +#include "net/base/cookie_monster.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "googleurl/src/gurl.h" + +namespace { + class ParsedCookieTest : public testing::Test { }; + class CookieMonsterTest : public testing::Test { }; +} + +static const int kNumCookies = 20000; +static const char kCookieLine[] = "A = \"b=;\\\"\" ;secure;;; httponly"; + +TEST(ParsedCookieTest, TestParseCookies) { + std::string cookie(kCookieLine); + PerfTimeLogger timer("Parsed_cookie_parse_cookies"); + for (int i = 0; i < kNumCookies; ++i) { + CookieMonster::ParsedCookie pc(cookie); + EXPECT_TRUE(pc.IsValid()); + } + timer.Done(); +} + +TEST(ParsedCookieTest, TestParseBigCookies) { + std::string cookie(3800, 'z'); + cookie += kCookieLine; + PerfTimeLogger timer("Parsed_cookie_parse_big_cookies"); + for (int i = 0; i < kNumCookies; ++i) { + CookieMonster::ParsedCookie pc(cookie); + EXPECT_TRUE(pc.IsValid()); + } + timer.Done(); +} + +static const GURL kUrlGoogle("http://www.google.izzle"); + +TEST(CookieMonsterTest, TestAddCookiesOnSingleHost) { + CookieMonster cm; + std::vector<std::string> cookies; + for (int i = 0; i < kNumCookies; i++) { + cookies.push_back(StringPrintf("a%03d=b", i)); + } + + // Add a bunch of cookies on a single host + PerfTimeLogger timer("Cookie_monster_add_single_host"); + for (std::vector<std::string>::const_iterator it = cookies.begin(); + it != cookies.end(); ++it) { + EXPECT_TRUE(cm.SetCookie(kUrlGoogle, *it)); + } + timer.Done(); + + PerfTimeLogger timer2("Cookie_monster_query_single_host"); + for (std::vector<std::string>::const_iterator it = cookies.begin(); + it != cookies.end(); ++it) { + cm.GetCookies(kUrlGoogle); + } + timer2.Done(); + + PerfTimeLogger timer3("Cookie_monster_deleteall_single_host"); + cm.DeleteAll(false); + timer3.Done(); +} + +TEST(CookieMonsterTest, TestAddCookieOnManyHosts) { + CookieMonster cm; + std::string cookie(kCookieLine); + std::vector<GURL> gurls; // just wanna have ffffuunnn + for (int i = 0; i < kNumCookies; ++i) { + gurls.push_back(GURL(StringPrintf("http://a%04d.izzle", i))); + } + + // Add a cookie on a bunch of host + PerfTimeLogger timer("Cookie_monster_add_many_hosts"); + for (std::vector<GURL>::const_iterator it = gurls.begin(); + it != gurls.end(); ++it) { + EXPECT_TRUE(cm.SetCookie(*it, cookie)); + } + timer.Done(); + + PerfTimeLogger timer2("Cookie_monster_query_many_hosts"); + for (std::vector<GURL>::const_iterator it = gurls.begin(); + it != gurls.end(); ++it) { + cm.GetCookies(*it); + } + timer2.Done(); + + PerfTimeLogger timer3("Cookie_monster_deleteall_many_hosts"); + cm.DeleteAll(false); + timer3.Done(); +} |