From cffdfa7b2a69c976e39dfc46a601f6d4c258eae5 Mon Sep 17 00:00:00 2001 From: "erikwright@chromium.org" Date: Wed, 27 Feb 2013 04:15:02 +0000 Subject: Make SQLitePersistentCookieStore run on injected SequencedTaskRunners vs named BrowserThreads. In a follow-up, I will make the production code run on the worker pool, which will hopefully speed up browser startup by eliminating delays due to other long-running DB thread tasks. R=rdsmith@chromium.org TBR=jar@chromium.org,mmenke@chromium.org BUG=175415 Review URL: https://chromiumcodereview.appspot.com/12314015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@184868 0039d316-1c4b-4281-b951-d872f2087c98 --- .../net/sqlite_persistent_cookie_store_perftest.cc | 51 ++++++++++++++-------- 1 file changed, 33 insertions(+), 18 deletions(-) (limited to 'chrome/browser/net/sqlite_persistent_cookie_store_perftest.cc') diff --git a/chrome/browser/net/sqlite_persistent_cookie_store_perftest.cc b/chrome/browser/net/sqlite_persistent_cookie_store_perftest.cc index b03a14c..d48ad3f 100644 --- a/chrome/browser/net/sqlite_persistent_cookie_store_perftest.cc +++ b/chrome/browser/net/sqlite_persistent_cookie_store_perftest.cc @@ -3,26 +3,24 @@ // found in the LICENSE file. #include "base/bind.h" +#include "base/compiler_specific.h" #include "base/files/scoped_temp_dir.h" -#include "base/message_loop.h" #include "base/perftimer.h" +#include "base/sequenced_task_runner.h" #include "base/stringprintf.h" #include "base/synchronization/waitable_event.h" -#include "base/test/thread_test_helper.h" +#include "base/test/sequenced_worker_pool_owner.h" +#include "base/threading/sequenced_worker_pool.h" #include "chrome/browser/net/sqlite_persistent_cookie_store.h" #include "chrome/common/chrome_constants.h" -#include "content/public/test/test_browser_thread.h" #include "googleurl/src/gurl.h" #include "net/cookies/canonical_cookie.h" #include "testing/gtest/include/gtest/gtest.h" -using content::BrowserThread; - class SQLitePersistentCookieStorePerfTest : public testing::Test { public: SQLitePersistentCookieStorePerfTest() - : db_thread_(BrowserThread::DB), - io_thread_(BrowserThread::IO), + : pool_owner_(new base::SequencedWorkerPoolOwner(1, "Background Pool")), loaded_event_(false, false), key_loaded_event_(false, false) { } @@ -43,12 +41,22 @@ class SQLitePersistentCookieStorePerfTest : public testing::Test { loaded_event_.Wait(); } - virtual void SetUp() { - db_thread_.Start(); - io_thread_.Start(); + scoped_refptr background_task_runner() { + return pool_owner_->pool()->GetSequencedTaskRunner( + pool_owner_->pool()->GetNamedSequenceToken("background")); + } + + scoped_refptr client_task_runner() { + return pool_owner_->pool()->GetSequencedTaskRunner( + pool_owner_->pool()->GetNamedSequenceToken("client")); + } + + virtual void SetUp() OVERRIDE { ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); store_ = new SQLitePersistentCookieStore( temp_dir_.path().Append(chrome::kCookieFilename), + client_task_runner(), + background_task_runner(), false, NULL); std::vector cookies; Load(); @@ -70,19 +78,26 @@ class SQLitePersistentCookieStorePerfTest : public testing::Test { // Replace the store effectively destroying the current one and forcing it // to write its data to disk. store_ = NULL; - scoped_refptr helper( - new base::ThreadTestHelper( - BrowserThread::GetMessageLoopProxyForThread(BrowserThread::DB))); - // Make sure we wait until the destructor has run. - ASSERT_TRUE(helper->Run()); + + // Shut down the pool, causing deferred (no-op) commits to be discarded. + pool_owner_->pool()->Shutdown(); + // ~SequencedWorkerPoolOwner blocks on pool shutdown. + pool_owner_.reset(new base::SequencedWorkerPoolOwner(1, "pool")); store_ = new SQLitePersistentCookieStore( - temp_dir_.path().Append(chrome::kCookieFilename), false, NULL); + temp_dir_.path().Append(chrome::kCookieFilename), + client_task_runner(), + background_task_runner(), + false, NULL); + } + + virtual void TearDown() OVERRIDE { + store_ = NULL; + pool_owner_->pool()->Shutdown(); } protected: - content::TestBrowserThread db_thread_; - content::TestBrowserThread io_thread_; + scoped_ptr pool_owner_; base::WaitableEvent loaded_event_; base::WaitableEvent key_loaded_event_; std::vector cookies_; -- cgit v1.1