Commit e4760210 authored by nhiroki's avatar nhiroki Committed by Commit bot

ServiceWorker: Run ServiceWorkerContextTest.DeleteAndStartOver on disk

Currently DeleteAndStartOver() is tested in memory storage (MemEnv)
supported by LevelDB for performance, but it seems preferable to test
it on real environment, that is, on disk storage because the recovery
process can be affected by characteristics of lower filesystem.

BUG=468926
TEST=content_unittests --gtest_filter=ServiceWorkerContextTest.DeleteAndStartOver

Review URL: https://codereview.chromium.org/1022363002

Cr-Commit-Position: refs/heads/master@{#322346}
parent 191f6b22
...@@ -123,7 +123,8 @@ class GeofencingManagerTest : public testing::Test { ...@@ -123,7 +123,8 @@ class GeofencingManagerTest : public testing::Test {
} }
void SetUp() override { void SetUp() override {
helper_.reset(new EmbeddedWorkerTestHelper(kRenderProcessId)); helper_.reset(
new EmbeddedWorkerTestHelper(base::FilePath(), kRenderProcessId));
service_ = new TestGeofencingService(); service_ = new TestGeofencingService();
manager_ = new GeofencingManager(helper_->context_wrapper()); manager_ = new GeofencingManager(helper_->context_wrapper());
manager_->SetServiceForTesting(service_); manager_->SetServiceForTesting(service_);
......
...@@ -36,7 +36,8 @@ class EmbeddedWorkerInstanceTest : public testing::Test { ...@@ -36,7 +36,8 @@ class EmbeddedWorkerInstanceTest : public testing::Test {
: thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP) {} : thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP) {}
void SetUp() override { void SetUp() override {
helper_.reset(new EmbeddedWorkerTestHelper(kRenderProcessId)); helper_.reset(
new EmbeddedWorkerTestHelper(base::FilePath(), kRenderProcessId));
} }
void TearDown() override { helper_.reset(); } void TearDown() override { helper_.reset(); }
......
...@@ -18,7 +18,9 @@ ...@@ -18,7 +18,9 @@
namespace content { namespace content {
EmbeddedWorkerTestHelper::EmbeddedWorkerTestHelper(int mock_render_process_id) EmbeddedWorkerTestHelper::EmbeddedWorkerTestHelper(
const base::FilePath& user_data_directory,
int mock_render_process_id)
: wrapper_(new ServiceWorkerContextWrapper(NULL)), : wrapper_(new ServiceWorkerContextWrapper(NULL)),
next_thread_id_(0), next_thread_id_(0),
mock_render_process_id_(mock_render_process_id), mock_render_process_id_(mock_render_process_id),
...@@ -26,11 +28,8 @@ EmbeddedWorkerTestHelper::EmbeddedWorkerTestHelper(int mock_render_process_id) ...@@ -26,11 +28,8 @@ EmbeddedWorkerTestHelper::EmbeddedWorkerTestHelper(int mock_render_process_id)
scoped_ptr<MockServiceWorkerDatabaseTaskManager> database_task_manager( scoped_ptr<MockServiceWorkerDatabaseTaskManager> database_task_manager(
new MockServiceWorkerDatabaseTaskManager( new MockServiceWorkerDatabaseTaskManager(
base::MessageLoopProxy::current())); base::MessageLoopProxy::current()));
wrapper_->InitInternal(base::FilePath(), wrapper_->InitInternal(user_data_directory, database_task_manager.Pass(),
database_task_manager.Pass(), base::MessageLoopProxy::current(), NULL, NULL);
base::MessageLoopProxy::current(),
NULL,
NULL);
wrapper_->process_manager()->SetProcessIdForTest(mock_render_process_id); wrapper_->process_manager()->SetProcessIdForTest(mock_render_process_id);
registry()->AddChildProcessSender(mock_render_process_id, this, nullptr); registry()->AddChildProcessSender(mock_render_process_id, this, nullptr);
} }
......
...@@ -44,8 +44,10 @@ class EmbeddedWorkerTestHelper : public IPC::Sender, ...@@ -44,8 +44,10 @@ class EmbeddedWorkerTestHelper : public IPC::Sender,
public IPC::Listener { public IPC::Listener {
public: public:
// Initialize this helper for |context|, and enable this as an IPC // Initialize this helper for |context|, and enable this as an IPC
// sender for |mock_render_process_id|. // sender for |mock_render_process_id|. If |user_data_directory| is empty,
explicit EmbeddedWorkerTestHelper(int mock_render_process_id); // the context makes storage stuff in memory.
EmbeddedWorkerTestHelper(const base::FilePath& user_data_directory,
int mock_render_process_id);
~EmbeddedWorkerTestHelper() override; ~EmbeddedWorkerTestHelper() override;
// Call this to simulate add/associate a process to a pattern. // Call this to simulate add/associate a process to a pattern.
......
...@@ -35,7 +35,8 @@ class ServiceWorkerContextRequestHandlerTest : public testing::Test { ...@@ -35,7 +35,8 @@ class ServiceWorkerContextRequestHandlerTest : public testing::Test {
: browser_thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP) {} : browser_thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP) {}
void SetUp() override { void SetUp() override {
helper_.reset(new EmbeddedWorkerTestHelper(kMockRenderProcessId)); helper_.reset(
new EmbeddedWorkerTestHelper(base::FilePath(), kMockRenderProcessId));
// A new unstored registration/version. // A new unstored registration/version.
scope_ = GURL("http://host/scope/"); scope_ = GURL("http://host/scope/");
......
...@@ -79,7 +79,7 @@ void ExpectRegisteredWorkers( ...@@ -79,7 +79,7 @@ void ExpectRegisteredWorkers(
class RejectInstallTestHelper : public EmbeddedWorkerTestHelper { class RejectInstallTestHelper : public EmbeddedWorkerTestHelper {
public: public:
explicit RejectInstallTestHelper(int mock_render_process_id) explicit RejectInstallTestHelper(int mock_render_process_id)
: EmbeddedWorkerTestHelper(mock_render_process_id) {} : EmbeddedWorkerTestHelper(base::FilePath(), mock_render_process_id) {}
void OnInstallEvent(int embedded_worker_id, void OnInstallEvent(int embedded_worker_id,
int request_id) override { int request_id) override {
...@@ -93,7 +93,7 @@ class RejectInstallTestHelper : public EmbeddedWorkerTestHelper { ...@@ -93,7 +93,7 @@ class RejectInstallTestHelper : public EmbeddedWorkerTestHelper {
class RejectActivateTestHelper : public EmbeddedWorkerTestHelper { class RejectActivateTestHelper : public EmbeddedWorkerTestHelper {
public: public:
explicit RejectActivateTestHelper(int mock_render_process_id) explicit RejectActivateTestHelper(int mock_render_process_id)
: EmbeddedWorkerTestHelper(mock_render_process_id) {} : EmbeddedWorkerTestHelper(base::FilePath(), mock_render_process_id) {}
void OnActivateEvent(int embedded_worker_id, int request_id) override { void OnActivateEvent(int embedded_worker_id, int request_id) override {
SimulateSend( SimulateSend(
...@@ -125,7 +125,8 @@ class ServiceWorkerContextTest : public ServiceWorkerContextObserver, ...@@ -125,7 +125,8 @@ class ServiceWorkerContextTest : public ServiceWorkerContextObserver,
render_process_id_(99) {} render_process_id_(99) {}
void SetUp() override { void SetUp() override {
helper_.reset(new EmbeddedWorkerTestHelper(render_process_id_)); helper_.reset(
new EmbeddedWorkerTestHelper(base::FilePath(), render_process_id_));
helper_->context_wrapper()->AddObserver(this); helper_->context_wrapper()->AddObserver(this);
} }
...@@ -519,11 +520,17 @@ TEST_F(ServiceWorkerContextTest, RegisterDuplicateScript) { ...@@ -519,11 +520,17 @@ TEST_F(ServiceWorkerContextTest, RegisterDuplicateScript) {
EXPECT_EQ(old_registration_id, notifications_[1].registration_id); EXPECT_EQ(old_registration_id, notifications_[1].registration_id);
} }
// TODO(nhiroki): Test this for on-disk storage.
TEST_F(ServiceWorkerContextTest, DeleteAndStartOver) { TEST_F(ServiceWorkerContextTest, DeleteAndStartOver) {
GURL pattern("http://www.example.com/"); GURL pattern("http://www.example.com/");
GURL script_url("http://www.example.com/service_worker.js"); GURL script_url("http://www.example.com/service_worker.js");
// Reinitialize the helper to test on-disk storage.
base::ScopedTempDir user_data_directory;
ASSERT_TRUE(user_data_directory.CreateUniqueTempDir());
helper_.reset(new EmbeddedWorkerTestHelper(user_data_directory.path(),
render_process_id_));
helper_->context_wrapper()->AddObserver(this);
int64 registration_id = kInvalidServiceWorkerRegistrationId; int64 registration_id = kInvalidServiceWorkerRegistrationId;
bool called = false; bool called = false;
context()->RegisterServiceWorker( context()->RegisterServiceWorker(
......
...@@ -43,7 +43,8 @@ class ServiceWorkerControlleeRequestHandlerTest : public testing::Test { ...@@ -43,7 +43,8 @@ class ServiceWorkerControlleeRequestHandlerTest : public testing::Test {
: browser_thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP) {} : browser_thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP) {}
void SetUp() override { void SetUp() override {
helper_.reset(new EmbeddedWorkerTestHelper(kMockRenderProcessId)); helper_.reset(
new EmbeddedWorkerTestHelper(base::FilePath(), kMockRenderProcessId));
// A new unstored registration/version. // A new unstored registration/version.
scope_ = GURL("http://host/scope/"); scope_ = GURL("http://host/scope/");
......
...@@ -69,7 +69,8 @@ class ServiceWorkerDispatcherHostTest : public testing::Test { ...@@ -69,7 +69,8 @@ class ServiceWorkerDispatcherHostTest : public testing::Test {
: browser_thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP) {} : browser_thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP) {}
void SetUp() override { void SetUp() override {
helper_.reset(new EmbeddedWorkerTestHelper(kRenderProcessId)); helper_.reset(
new EmbeddedWorkerTestHelper(base::FilePath(), kRenderProcessId));
dispatcher_host_ = new TestingServiceWorkerDispatcherHost( dispatcher_host_ = new TestingServiceWorkerDispatcherHost(
kRenderProcessId, context_wrapper(), &resource_context_, helper_.get()); kRenderProcessId, context_wrapper(), &resource_context_, helper_.get());
} }
......
...@@ -71,7 +71,8 @@ class ServiceWorkerHandleTest : public testing::Test { ...@@ -71,7 +71,8 @@ class ServiceWorkerHandleTest : public testing::Test {
: browser_thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP) {} : browser_thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP) {}
void SetUp() override { void SetUp() override {
helper_.reset(new EmbeddedWorkerTestHelper(kRenderProcessId)); helper_.reset(
new EmbeddedWorkerTestHelper(base::FilePath(), kRenderProcessId));
dispatcher_host_ = new TestingServiceWorkerDispatcherHost( dispatcher_host_ = new TestingServiceWorkerDispatcherHost(
kRenderProcessId, helper_->context_wrapper(), kRenderProcessId, helper_->context_wrapper(),
......
...@@ -106,7 +106,8 @@ class ServiceWorkerJobTest : public testing::Test { ...@@ -106,7 +106,8 @@ class ServiceWorkerJobTest : public testing::Test {
render_process_id_(kMockRenderProcessId) {} render_process_id_(kMockRenderProcessId) {}
void SetUp() override { void SetUp() override {
helper_.reset(new EmbeddedWorkerTestHelper(render_process_id_)); helper_.reset(
new EmbeddedWorkerTestHelper(base::FilePath(), render_process_id_));
} }
void TearDown() override { helper_.reset(); } void TearDown() override { helper_.reset(); }
...@@ -359,7 +360,7 @@ TEST_F(ServiceWorkerJobTest, RegisterDuplicateScript) { ...@@ -359,7 +360,7 @@ TEST_F(ServiceWorkerJobTest, RegisterDuplicateScript) {
class FailToStartWorkerTestHelper : public EmbeddedWorkerTestHelper { class FailToStartWorkerTestHelper : public EmbeddedWorkerTestHelper {
public: public:
explicit FailToStartWorkerTestHelper(int mock_render_process_id) explicit FailToStartWorkerTestHelper(int mock_render_process_id)
: EmbeddedWorkerTestHelper(mock_render_process_id) {} : EmbeddedWorkerTestHelper(base::FilePath(), mock_render_process_id) {}
void OnStartWorker(int embedded_worker_id, void OnStartWorker(int embedded_worker_id,
int64 service_worker_version_id, int64 service_worker_version_id,
...@@ -783,7 +784,7 @@ class UpdateJobTestHelper ...@@ -783,7 +784,7 @@ class UpdateJobTestHelper
}; };
UpdateJobTestHelper(int mock_render_process_id) UpdateJobTestHelper(int mock_render_process_id)
: EmbeddedWorkerTestHelper(mock_render_process_id), : EmbeddedWorkerTestHelper(base::FilePath(), mock_render_process_id),
update_found_(false) {} update_found_(false) {}
~UpdateJobTestHelper() override { ~UpdateJobTestHelper() override {
if (registration_.get()) if (registration_.get())
...@@ -1257,7 +1258,7 @@ TEST_F(ServiceWorkerJobTest, RegisterMultipleTimesWhileUninstalling) { ...@@ -1257,7 +1258,7 @@ TEST_F(ServiceWorkerJobTest, RegisterMultipleTimesWhileUninstalling) {
class EventCallbackHelper : public EmbeddedWorkerTestHelper { class EventCallbackHelper : public EmbeddedWorkerTestHelper {
public: public:
explicit EventCallbackHelper(int mock_render_process_id) explicit EventCallbackHelper(int mock_render_process_id)
: EmbeddedWorkerTestHelper(mock_render_process_id), : EmbeddedWorkerTestHelper(base::FilePath(), mock_render_process_id),
install_event_result_(blink::WebServiceWorkerEventResultCompleted), install_event_result_(blink::WebServiceWorkerEventResultCompleted),
activate_event_result_(blink::WebServiceWorkerEventResultCompleted) {} activate_event_result_(blink::WebServiceWorkerEventResultCompleted) {}
......
...@@ -25,7 +25,8 @@ class ServiceWorkerProviderHostTest : public testing::Test { ...@@ -25,7 +25,8 @@ class ServiceWorkerProviderHostTest : public testing::Test {
~ServiceWorkerProviderHostTest() override {} ~ServiceWorkerProviderHostTest() override {}
void SetUp() override { void SetUp() override {
helper_.reset(new EmbeddedWorkerTestHelper(kRenderProcessId)); helper_.reset(
new EmbeddedWorkerTestHelper(base::FilePath(), kRenderProcessId));
context_ = helper_->context(); context_ = helper_->context();
script_url_ = GURL("http://www.example.com/service_worker.js"); script_url_ = GURL("http://www.example.com/service_worker.js");
registration1_ = new ServiceWorkerRegistration( registration1_ = new ServiceWorkerRegistration(
......
...@@ -38,7 +38,8 @@ class ServiceWorkerRequestHandlerTest : public testing::Test { ...@@ -38,7 +38,8 @@ class ServiceWorkerRequestHandlerTest : public testing::Test {
: browser_thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP) {} : browser_thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP) {}
void SetUp() override { void SetUp() override {
helper_.reset(new EmbeddedWorkerTestHelper(kMockRenderProcessId)); helper_.reset(
new EmbeddedWorkerTestHelper(base::FilePath(), kMockRenderProcessId));
// A new unstored registration/version. // A new unstored registration/version.
registration_ = new ServiceWorkerRegistration( registration_ = new ServiceWorkerRegistration(
......
...@@ -113,7 +113,7 @@ class ServiceWorkerURLRequestJobTest : public testing::Test { ...@@ -113,7 +113,7 @@ class ServiceWorkerURLRequestJobTest : public testing::Test {
void SetUp() override { void SetUp() override {
browser_context_.reset(new TestBrowserContext); browser_context_.reset(new TestBrowserContext);
InitializeResourceContext(browser_context_.get()); InitializeResourceContext(browser_context_.get());
SetUpWithHelper(new EmbeddedWorkerTestHelper(kProcessID)); SetUpWithHelper(new EmbeddedWorkerTestHelper(base::FilePath(), kProcessID));
} }
void SetUpWithHelper(EmbeddedWorkerTestHelper* helper) { void SetUpWithHelper(EmbeddedWorkerTestHelper* helper) {
...@@ -243,7 +243,7 @@ class BlobResponder : public EmbeddedWorkerTestHelper { ...@@ -243,7 +243,7 @@ class BlobResponder : public EmbeddedWorkerTestHelper {
BlobResponder(int mock_render_process_id, BlobResponder(int mock_render_process_id,
const std::string& blob_uuid, const std::string& blob_uuid,
uint64 blob_size) uint64 blob_size)
: EmbeddedWorkerTestHelper(mock_render_process_id), : EmbeddedWorkerTestHelper(base::FilePath(), mock_render_process_id),
blob_uuid_(blob_uuid), blob_uuid_(blob_uuid),
blob_size_(blob_size) {} blob_size_(blob_size) {}
~BlobResponder() override {} ~BlobResponder() override {}
...@@ -300,9 +300,8 @@ TEST_F(ServiceWorkerURLRequestJobTest, NonExistentBlobUUIDResponse) { ...@@ -300,9 +300,8 @@ TEST_F(ServiceWorkerURLRequestJobTest, NonExistentBlobUUIDResponse) {
// Responds to fetch events with a stream. // Responds to fetch events with a stream.
class StreamResponder : public EmbeddedWorkerTestHelper { class StreamResponder : public EmbeddedWorkerTestHelper {
public: public:
StreamResponder(int mock_render_process_id, StreamResponder(int mock_render_process_id, const GURL& stream_url)
const GURL& stream_url) : EmbeddedWorkerTestHelper(base::FilePath(), mock_render_process_id),
: EmbeddedWorkerTestHelper(mock_render_process_id),
stream_url_(stream_url) {} stream_url_(stream_url) {}
~StreamResponder() override {} ~StreamResponder() override {}
......
...@@ -35,7 +35,7 @@ static const int kRenderProcessId = 1; ...@@ -35,7 +35,7 @@ static const int kRenderProcessId = 1;
class MessageReceiver : public EmbeddedWorkerTestHelper { class MessageReceiver : public EmbeddedWorkerTestHelper {
public: public:
MessageReceiver() MessageReceiver()
: EmbeddedWorkerTestHelper(kRenderProcessId), : EmbeddedWorkerTestHelper(base::FilePath(), kRenderProcessId),
current_embedded_worker_id_(0) {} current_embedded_worker_id_(0) {}
~MessageReceiver() override {} ~MessageReceiver() override {}
......
...@@ -174,7 +174,8 @@ class ServiceWorkerWriteToCacheJobTest : public testing::Test { ...@@ -174,7 +174,8 @@ class ServiceWorkerWriteToCacheJobTest : public testing::Test {
~ServiceWorkerWriteToCacheJobTest() override {} ~ServiceWorkerWriteToCacheJobTest() override {}
void SetUp() override { void SetUp() override {
helper_.reset(new EmbeddedWorkerTestHelper(kMockRenderProcessId)); helper_.reset(
new EmbeddedWorkerTestHelper(base::FilePath(), kMockRenderProcessId));
// A new unstored registration/version. // A new unstored registration/version.
scope_ = GURL("https://host/scope/"); scope_ = GURL("https://host/scope/");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment