From ee16679f293ca27ce3d822a97efad7d3fa8a049e Mon Sep 17 00:00:00 2001 From: "satish@chromium.org" <satish@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> Date: Thu, 9 Dec 2010 08:14:10 +0000 Subject: Add a new GetInstance() method for singleton classes under chrome/service and /net. This is a small step towards making all singleton classes use the Singleton<T> pattern within their code and not expect the callers to know about it. This CL includes files under chrome/service and /net with related files elsewhere. Suggested files to focus for reviewers: - @sanjeevr for chrome/common and chrome/service - @ukai for net/websockets - @agl for rest of net BUG=65298 TEST=all existing tests should continue to pass. Review URL: http://codereview.chromium.org/5634005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@68722 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/common/service_process_util_unittest.cc | 29 ++++++++++++++++++-------- 1 file changed, 20 insertions(+), 9 deletions(-) (limited to 'chrome/common/service_process_util_unittest.cc') diff --git a/chrome/common/service_process_util_unittest.cc b/chrome/common/service_process_util_unittest.cc index 6000b5c..58b68e1 100644 --- a/chrome/common/service_process_util_unittest.cc +++ b/chrome/common/service_process_util_unittest.cc @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "base/at_exit.h" #include "base/process_util.h" #include "base/string_util.h" #include "chrome/common/chrome_version_info.h" @@ -18,18 +19,28 @@ TEST(ServiceProcessUtilTest, ScopedVersionedName) { EXPECT_NE(std::string::npos, scoped_name.find(version_info.Version())); } +class ServiceProcessStateTest : public testing::Test { + private: + // This is used to release the ServiceProcessState singleton after each test. + base::ShadowingAtExitManager at_exit_manager_; +}; + #if defined(OS_WIN) // Singleton-ness is only implemented on Windows. -TEST(ServiceProcessStateTest, Singleton) { +// TODO(sanjeev): Rewrite this test to spawn a new process and test using the +// ServiceProcessState singleton across processes. +/* +TEST_F(ServiceProcessStateTest, Singleton) { ServiceProcessState state; EXPECT_TRUE(state.Initialize()); // The second instance should fail to Initialize. ServiceProcessState another_state; EXPECT_FALSE(another_state.Initialize()); } +*/ #endif // defined(OS_WIN) -TEST(ServiceProcessStateTest, ReadyState) { +TEST_F(ServiceProcessStateTest, ReadyState) { #if defined(OS_WIN) // On Posix, we use a lock file on disk to signal readiness. This lock file // could be lying around from previous crashes which could cause @@ -38,15 +49,15 @@ TEST(ServiceProcessStateTest, ReadyState) { // Posix, this check will only execute on Windows. EXPECT_FALSE(CheckServiceProcessReady()); #endif // defined(OS_WIN) - ServiceProcessState state; - EXPECT_TRUE(state.Initialize()); - state.SignalReady(NULL); + ServiceProcessState* state = ServiceProcessState::GetInstance(); + EXPECT_TRUE(state->Initialize()); + state->SignalReady(NULL); EXPECT_TRUE(CheckServiceProcessReady()); - state.SignalStopped(); + state->SignalStopped(); EXPECT_FALSE(CheckServiceProcessReady()); } -TEST(ServiceProcessStateTest, SharedMem) { +TEST_F(ServiceProcessStateTest, SharedMem) { #if defined(OS_WIN) // On Posix, named shared memory uses a file on disk. This file // could be lying around from previous crashes which could cause @@ -55,8 +66,8 @@ TEST(ServiceProcessStateTest, SharedMem) { // implementation on Posix, this check will only execute on Windows. EXPECT_EQ(0, GetServiceProcessPid()); #endif // defined(OS_WIN) - ServiceProcessState state; - EXPECT_TRUE(state.Initialize()); + ServiceProcessState* state = ServiceProcessState::GetInstance(); + EXPECT_TRUE(state->Initialize()); EXPECT_EQ(base::GetCurrentProcId(), GetServiceProcessPid()); } -- cgit v1.1