summaryrefslogtreecommitdiffstats
path: root/gpu
diff options
context:
space:
mode:
authorsievers@chromium.org <sievers@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-18 14:42:06 +0000
committersievers@chromium.org <sievers@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-18 14:42:06 +0000
commit3bb37114b1ac75ab25bafbe70b401ee1f9017bd9 (patch)
treecac58cd2836db7a8f1926b3b6e69a8ce84860097 /gpu
parent0ef4de24e2a560ebb594cc1d36a750dfb033aa8f (diff)
downloadchromium_src-3bb37114b1ac75ab25bafbe70b401ee1f9017bd9.zip
chromium_src-3bb37114b1ac75ab25bafbe70b401ee1f9017bd9.tar.gz
chromium_src-3bb37114b1ac75ab25bafbe70b401ee1f9017bd9.tar.bz2
gpu: Add base class for gpu service tests
This allows for properly setting up and tearing down GL bindings. Before this patch bindings were intialized in unittest_main.cc but also reinitialized with a different GL version and extension in some GLES2CmdDecoderTests which leaves room for problems depending on which order tests happen to run in. More importantly, this will allow me to initialize GL bindings with a certain GL version and extension bindings for some tests. Review URL: https://codereview.chromium.org/332303002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@278059 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu')
-rw-r--r--gpu/command_buffer/common/unittest_main.cc10
-rw-r--r--gpu/command_buffer/service/buffer_manager_unittest.cc11
-rw-r--r--gpu/command_buffer/service/context_group_unittest.cc14
-rw-r--r--gpu/command_buffer/service/feature_info_unittest.cc14
-rw-r--r--gpu/command_buffer/service/framebuffer_manager_unittest.cc26
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc1
-rw-r--r--gpu/command_buffer/service/gpu_service_test.cc50
-rw-r--r--gpu/command_buffer/service/gpu_service_test.h42
-rw-r--r--gpu/command_buffer/service/gpu_tracer_unittest.cc10
-rw-r--r--gpu/command_buffer/service/mailbox_manager_unittest.cc33
-rw-r--r--gpu/command_buffer/service/memory_program_cache_unittest.cc13
-rw-r--r--gpu/command_buffer/service/program_manager_unittest.cc39
-rw-r--r--gpu/command_buffer/service/query_manager_unittest.cc13
-rw-r--r--gpu/command_buffer/service/renderbuffer_manager_unittest.cc11
-rw-r--r--gpu/command_buffer/service/shader_manager_unittest.cc15
-rw-r--r--gpu/command_buffer/service/texture_manager_unittest.cc33
-rw-r--r--gpu/command_buffer/service/vertex_array_manager_unittest.cc18
-rw-r--r--gpu/command_buffer/service/vertex_attrib_manager_unittest.cc14
-rw-r--r--gpu/gpu.gyp1
19 files changed, 173 insertions, 195 deletions
diff --git a/gpu/command_buffer/common/unittest_main.cc b/gpu/command_buffer/common/unittest_main.cc
index 358805a..2d6a2d1 100644
--- a/gpu/command_buffer/common/unittest_main.cc
+++ b/gpu/command_buffer/common/unittest_main.cc
@@ -9,9 +9,6 @@
#include "base/test/test_suite.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
-#include "ui/gl/gl_implementation.h"
-#include "ui/gl/gl_mock.h"
-#include "ui/gl/gl_surface.h"
namespace {
@@ -20,13 +17,6 @@ class NoAtExitBaseTestSuite : public base::TestSuite {
NoAtExitBaseTestSuite(int argc, char** argv)
: base::TestSuite(argc, argv, false) {
}
-
- virtual void Initialize() OVERRIDE {
- base::TestSuite::Initialize();
- gfx::SetGLGetProcAddressProc(gfx::MockGLInterface::GetGLProcAddress);
- gfx::GLSurface::InitializeOneOffWithMockBindingsForTests();
- gfx::GLSurface::InitializeDynamicMockBindingsForTests(NULL);
- }
};
int RunTestSuite(int argc, char** argv) {
diff --git a/gpu/command_buffer/service/buffer_manager_unittest.cc b/gpu/command_buffer/service/buffer_manager_unittest.cc
index 4d222b0..77f32dc 100644
--- a/gpu/command_buffer/service/buffer_manager_unittest.cc
+++ b/gpu/command_buffer/service/buffer_manager_unittest.cc
@@ -5,6 +5,7 @@
#include "gpu/command_buffer/service/buffer_manager.h"
#include "gpu/command_buffer/service/error_state_mock.h"
#include "gpu/command_buffer/service/feature_info.h"
+#include "gpu/command_buffer/service/gpu_service_test.h"
#include "gpu/command_buffer/service/mocks.h"
#include "gpu/command_buffer/service/test_helper.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -17,14 +18,13 @@ using ::testing::StrictMock;
namespace gpu {
namespace gles2 {
-class BufferManagerTestBase : public testing::Test {
+class BufferManagerTestBase : public GpuServiceTest {
protected:
void SetUpBase(
MemoryTracker* memory_tracker,
FeatureInfo* feature_info,
const char* extensions) {
- gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>());
- ::gfx::MockGLInterface::SetGLInterface(gl_.get());
+ GpuServiceTest::SetUp();
if (feature_info) {
TestHelper::SetupFeatureInfoInitExpectations(gl_.get(), extensions);
feature_info->Initialize();
@@ -36,9 +36,8 @@ class BufferManagerTestBase : public testing::Test {
virtual void TearDown() {
manager_->Destroy(false);
manager_.reset();
- ::gfx::MockGLInterface::SetGLInterface(NULL);
error_state_.reset();
- gl_.reset();
+ GpuServiceTest::TearDown();
}
GLenum GetTarget(const Buffer* buffer) const {
@@ -73,8 +72,6 @@ class BufferManagerTestBase : public testing::Test {
return success;
}
- // Use StrictMock to make 100% sure we know how GL will be called.
- scoped_ptr< ::testing::StrictMock< ::gfx::MockGLInterface> > gl_;
scoped_ptr<BufferManager> manager_;
scoped_ptr<MockErrorState> error_state_;
};
diff --git a/gpu/command_buffer/service/context_group_unittest.cc b/gpu/command_buffer/service/context_group_unittest.cc
index 902d79e..608109d 100644
--- a/gpu/command_buffer/service/context_group_unittest.cc
+++ b/gpu/command_buffer/service/context_group_unittest.cc
@@ -6,12 +6,12 @@
#include "base/memory/scoped_ptr.h"
#include "gpu/command_buffer/service/gles2_cmd_decoder_mock.h"
+#include "gpu/command_buffer/service/gpu_service_test.h"
#include "gpu/command_buffer/service/test_helper.h"
#include "gpu/command_buffer/service/texture_manager.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/gl/gl_mock.h"
-using ::gfx::MockGLInterface;
using ::testing::_;
using ::testing::DoAll;
using ::testing::HasSubstr;
@@ -23,12 +23,11 @@ using ::testing::Return;
using ::testing::SetArrayArgument;
using ::testing::SetArgumentPointee;
using ::testing::StrEq;
-using ::testing::StrictMock;
namespace gpu {
namespace gles2 {
-class ContextGroupTest : public testing::Test {
+class ContextGroupTest : public GpuServiceTest {
public:
static const bool kBindGeneratesResource = false;
@@ -36,19 +35,12 @@ class ContextGroupTest : public testing::Test {
protected:
virtual void SetUp() {
- gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>());
- ::gfx::MockGLInterface::SetGLInterface(gl_.get());
+ GpuServiceTest::SetUp();
decoder_.reset(new MockGLES2Decoder());
group_ = scoped_refptr<ContextGroup>(
new ContextGroup(NULL, NULL, NULL, NULL, NULL, kBindGeneratesResource));
}
- virtual void TearDown() {
- ::gfx::MockGLInterface::SetGLInterface(NULL);
- gl_.reset();
- }
-
- scoped_ptr< ::testing::StrictMock< ::gfx::MockGLInterface> > gl_;
scoped_ptr<MockGLES2Decoder> decoder_;
scoped_refptr<ContextGroup> group_;
};
diff --git a/gpu/command_buffer/service/feature_info_unittest.cc b/gpu/command_buffer/service/feature_info_unittest.cc
index 81ecfe2..be3e38a 100644
--- a/gpu/command_buffer/service/feature_info_unittest.cc
+++ b/gpu/command_buffer/service/feature_info_unittest.cc
@@ -7,6 +7,7 @@
#include "base/command_line.h"
#include "base/memory/scoped_ptr.h"
#include "base/strings/string_number_conversions.h"
+#include "gpu/command_buffer/service/gpu_service_test.h"
#include "gpu/command_buffer/service/gpu_switches.h"
#include "gpu/command_buffer/service/test_helper.h"
#include "gpu/command_buffer/service/texture_manager.h"
@@ -15,7 +16,6 @@
#include "ui/gl/gl_implementation.h"
#include "ui/gl/gl_mock.h"
-using ::gfx::MockGLInterface;
using ::testing::_;
using ::testing::DoAll;
using ::testing::HasSubstr;
@@ -27,7 +27,6 @@ using ::testing::Return;
using ::testing::SetArrayArgument;
using ::testing::SetArgumentPointee;
using ::testing::StrEq;
-using ::testing::StrictMock;
namespace gpu {
namespace gles2 {
@@ -36,7 +35,7 @@ namespace {
const char kGLRendererStringANGLE[] = "ANGLE (some renderer)";
} // anonymous namespace
-class FeatureInfoTest : public testing::Test {
+class FeatureInfoTest : public GpuServiceTest {
public:
FeatureInfoTest() {
}
@@ -70,18 +69,11 @@ class FeatureInfoTest : public testing::Test {
}
protected:
- virtual void SetUp() {
- gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>());
- ::gfx::MockGLInterface::SetGLInterface(gl_.get());
- }
-
virtual void TearDown() {
info_ = NULL;
- ::gfx::MockGLInterface::SetGLInterface(NULL);
- gl_.reset();
+ GpuServiceTest::TearDown();
}
- scoped_ptr< ::testing::StrictMock< ::gfx::MockGLInterface> > gl_;
scoped_refptr<FeatureInfo> info_;
};
diff --git a/gpu/command_buffer/service/framebuffer_manager_unittest.cc b/gpu/command_buffer/service/framebuffer_manager_unittest.cc
index a27e6ae..1ded558 100644
--- a/gpu/command_buffer/service/framebuffer_manager_unittest.cc
+++ b/gpu/command_buffer/service/framebuffer_manager_unittest.cc
@@ -5,6 +5,7 @@
#include "gpu/command_buffer/service/error_state_mock.h"
#include "gpu/command_buffer/service/framebuffer_manager.h"
#include "gpu/command_buffer/service/feature_info.h"
+#include "gpu/command_buffer/service/gpu_service_test.h"
#include "gpu/command_buffer/service/renderbuffer_manager.h"
#include "gpu/command_buffer/service/test_helper.h"
#include "gpu/command_buffer/service/texture_manager.h"
@@ -29,7 +30,7 @@ const bool kUseDefaultTextures = false;
} // namespace
-class FramebufferManagerTest : public testing::Test {
+class FramebufferManagerTest : public GpuServiceTest {
public:
FramebufferManagerTest()
: manager_(1, 1),
@@ -49,18 +50,7 @@ class FramebufferManagerTest : public testing::Test {
}
protected:
- virtual void SetUp() {
- gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>());
- ::gfx::MockGLInterface::SetGLInterface(gl_.get());
- }
-
- virtual void TearDown() {
- ::gfx::MockGLInterface::SetGLInterface(NULL);
- gl_.reset();
- }
- // Use StrictMock to make 100% sure we know how GL will be called.
- scoped_ptr< ::testing::StrictMock< ::gfx::MockGLInterface> > gl_;
FramebufferManager manager_;
TextureManager texture_manager_;
RenderbufferManager renderbuffer_manager_;
@@ -110,7 +100,7 @@ TEST_F(FramebufferManagerTest, Destroy) {
ASSERT_TRUE(framebuffer1 == NULL);
}
-class FramebufferInfoTest : public testing::Test {
+class FramebufferInfoTest : public GpuServiceTest {
public:
static const GLuint kClient1Id = 1;
static const GLuint kService1Id = 11;
@@ -138,8 +128,7 @@ class FramebufferInfoTest : public testing::Test {
}
void InitializeContext(const char* gl_version, const char* extensions) {
- gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>());
- ::gfx::MockGLInterface::SetGLInterface(gl_.get());
+ GpuServiceTest::SetUp();
TestHelper::SetupFeatureInfoInitExpectationsWithGLVersion(gl_.get(),
extensions, "", gl_version);
feature_info_->Initialize();
@@ -149,13 +138,6 @@ class FramebufferInfoTest : public testing::Test {
ASSERT_TRUE(framebuffer_ != NULL);
}
- virtual void TearDown() {
- ::gfx::MockGLInterface::SetGLInterface(NULL);
- gl_.reset();
- }
-
- // Use StrictMock to make 100% sure we know how GL will be called.
- scoped_ptr< ::testing::StrictMock< ::gfx::MockGLInterface> > gl_;
FramebufferManager manager_;
Framebuffer* framebuffer_;
scoped_refptr<FeatureInfo> feature_info_;
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc
index 1c188a9..57c9c9d 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc
@@ -427,6 +427,7 @@ void GLES2DecoderTestBase::ResetDecoder() {
engine_.reset();
::gfx::MockGLInterface::SetGLInterface(NULL);
gl_.reset();
+ gfx::ClearGLBindings();
}
void GLES2DecoderTestBase::TearDown() {
diff --git a/gpu/command_buffer/service/gpu_service_test.cc b/gpu/command_buffer/service/gpu_service_test.cc
new file mode 100644
index 0000000..a51a54c
--- /dev/null
+++ b/gpu/command_buffer/service/gpu_service_test.cc
@@ -0,0 +1,50 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "gpu/command_buffer/service/gpu_service_test.h"
+
+#include "gpu/command_buffer/service/test_helper.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "ui/gl/gl_context_stub_with_extensions.h"
+#include "ui/gl/gl_implementation.h"
+#include "ui/gl/gl_mock.h"
+#include "ui/gl/gl_surface.h"
+
+namespace gpu {
+namespace gles2 {
+
+GpuServiceTest::GpuServiceTest() : ran_setup_(false), ran_teardown_(false) {
+}
+
+GpuServiceTest::~GpuServiceTest() {
+ DCHECK(ran_teardown_);
+}
+
+void GpuServiceTest::SetUp() {
+ testing::Test::SetUp();
+
+ gfx::SetGLGetProcAddressProc(gfx::MockGLInterface::GetGLProcAddress);
+ gfx::GLSurface::InitializeOneOffWithMockBindingsForTests();
+ gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>());
+ ::gfx::MockGLInterface::SetGLInterface(gl_.get());
+
+ context_ = new gfx::GLContextStubWithExtensions;
+ context_->AddExtensionsString(NULL);
+ context_->SetGLVersionString("3.0");
+ gfx::GLSurface::InitializeDynamicMockBindingsForTests(context_);
+ ran_setup_ = true;
+}
+
+void GpuServiceTest::TearDown() {
+ DCHECK(ran_setup_);
+ ::gfx::MockGLInterface::SetGLInterface(NULL);
+ gl_.reset();
+ gfx::ClearGLBindings();
+ ran_teardown_ = true;
+
+ testing::Test::TearDown();
+}
+
+} // namespace gles2
+} // namespace gpu
diff --git a/gpu/command_buffer/service/gpu_service_test.h b/gpu/command_buffer/service/gpu_service_test.h
new file mode 100644
index 0000000..f371787
--- /dev/null
+++ b/gpu/command_buffer/service/gpu_service_test.h
@@ -0,0 +1,42 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef GPU_COMMAND_BUFFER_SERVICE_GPU_SERVICE_TEST_H_
+#define GPU_COMMAND_BUFFER_SERVICE_GPU_SERVICE_TEST_H_
+
+#include "base/memory/ref_counted.h"
+#include "base/memory/scoped_ptr.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "ui/gl/gl_mock.h"
+
+namespace gfx {
+class GLContextStubWithExtensions;
+}
+
+namespace gpu {
+namespace gles2 {
+
+// Base class for tests that need mock GL bindings.
+class GpuServiceTest : public testing::Test {
+ public:
+ GpuServiceTest();
+ virtual ~GpuServiceTest();
+
+ protected:
+ virtual void SetUp() OVERRIDE;
+ virtual void TearDown() OVERRIDE;
+
+ scoped_ptr< ::testing::StrictMock< ::gfx::MockGLInterface> > gl_;
+
+ private:
+ bool ran_setup_;
+ bool ran_teardown_;
+ scoped_refptr<gfx::GLContextStubWithExtensions> context_;
+};
+
+} // namespace gles2
+} // namespace gpu
+
+#endif // GPU_COMMAND_BUFFER_SERVICE_MAILBOX_SYNCHRONIZER_H_
diff --git a/gpu/command_buffer/service/gpu_tracer_unittest.cc b/gpu/command_buffer/service/gpu_tracer_unittest.cc
index 7954fc7..735498c 100644
--- a/gpu/command_buffer/service/gpu_tracer_unittest.cc
+++ b/gpu/command_buffer/service/gpu_tracer_unittest.cc
@@ -5,6 +5,7 @@
#include <map>
#include <set>
+#include "gpu/command_buffer/service/gpu_service_test.h"
#include "gpu/command_buffer/service/gpu_tracer.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/gl/gl_mock.h"
@@ -12,7 +13,6 @@
namespace gpu {
namespace gles2 {
-using ::gfx::MockGLInterface;
using ::testing::InvokeWithoutArgs;
using ::testing::Return;
using ::testing::ReturnRef;
@@ -109,7 +109,7 @@ class GlFakeQueries {
std::map<GLuint, GLint64> query_timestamp_;
};
-class GpuTracerTest : public testing::Test {
+class GpuTracerTest : public GpuServiceTest {
public:
GpuTracerTest() {}
@@ -117,15 +117,14 @@ class GpuTracerTest : public testing::Test {
protected:
virtual void SetUp() {
- gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>());
- ::gfx::MockGLInterface::SetGLInterface(gl_.get());
+ GpuServiceTest::SetUp();
gl_fake_queries_.Reset();
}
virtual void TearDown() {
- ::gfx::MockGLInterface::SetGLInterface(NULL);
gl_.reset();
gl_fake_queries_.Reset();
+ GpuServiceTest::TearDown();
}
void SetupTimerQueryMocks() {
@@ -154,7 +153,6 @@ class GpuTracerTest : public testing::Test {
Invoke(&gl_fake_queries_, &GlFakeQueries::DeleteQueries));
}
- scoped_ptr< ::testing::StrictMock< ::gfx::MockGLInterface> > gl_;
GlFakeQueries gl_fake_queries_;
};
diff --git a/gpu/command_buffer/service/mailbox_manager_unittest.cc b/gpu/command_buffer/service/mailbox_manager_unittest.cc
index 13005e6..8e57faa 100644
--- a/gpu/command_buffer/service/mailbox_manager_unittest.cc
+++ b/gpu/command_buffer/service/mailbox_manager_unittest.cc
@@ -5,6 +5,7 @@
#include "gpu/command_buffer/service/mailbox_manager.h"
#include "gpu/command_buffer/service/feature_info.h"
+#include "gpu/command_buffer/service/gpu_service_test.h"
#include "gpu/command_buffer/service/mailbox_synchronizer.h"
#include "gpu/command_buffer/service/texture_manager.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -17,18 +18,32 @@ namespace gles2 {
using namespace ::testing;
-class MailboxManagerTest : public testing::Test {
+class MailboxManagerTest : public GpuServiceTest {
public:
- MailboxManagerTest() {}
+ MailboxManagerTest() : initialized_synchronizer_(false) {}
virtual ~MailboxManagerTest() {}
protected:
virtual void SetUp() {
- testing::Test::SetUp();
+ GpuServiceTest::SetUp();
feature_info_ = new FeatureInfo;
manager_ = new MailboxManager;
}
+ virtual void SetUpWithSynchronizer() {
+ GpuServiceTest::SetUp();
+ MailboxSynchronizer::Initialize();
+ initialized_synchronizer_ = true;
+ feature_info_ = new FeatureInfo;
+ manager_ = new MailboxManager;
+ }
+
+ virtual void TearDown() {
+ if (initialized_synchronizer_)
+ MailboxSynchronizer::Terminate();
+ GpuServiceTest::TearDown();
+ }
+
Texture* CreateTexture() {
return new Texture(1);
}
@@ -73,6 +88,7 @@ class MailboxManagerTest : public testing::Test {
scoped_refptr<MailboxManager> manager_;
private:
+ bool initialized_synchronizer_;
scoped_refptr<FeatureInfo> feature_info_;
DISALLOW_COPY_AND_ASSIGN(MailboxManagerTest);
@@ -185,11 +201,8 @@ class MailboxManagerSyncTest : public MailboxManagerTest {
protected:
virtual void SetUp() {
- MailboxSynchronizer::Initialize();
- MailboxManagerTest::SetUp();
+ MailboxManagerTest::SetUpWithSynchronizer();
manager2_ = new MailboxManager;
- gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>());
- ::gfx::MockGLInterface::SetGLInterface(gl_.get());
context_ = new gfx::GLContextStub();
surface_ = new gfx::GLSurfaceStub();
context_->MakeCurrent(surface_);
@@ -252,14 +265,10 @@ class MailboxManagerSyncTest : public MailboxManagerTest {
}
virtual void TearDown() {
- MailboxManagerTest::TearDown();
- MailboxSynchronizer::Terminate();
context_->ReleaseCurrent(NULL);
- ::gfx::MockGLInterface::SetGLInterface(NULL);
- gl_.reset();
+ MailboxManagerTest::TearDown();
}
- scoped_ptr< ::testing::StrictMock< ::gfx::MockGLInterface> > gl_;
scoped_refptr<MailboxManager> manager2_;
scoped_refptr<gfx::GLContext> context_;
scoped_refptr<gfx::GLSurface> surface_;
diff --git a/gpu/command_buffer/service/memory_program_cache_unittest.cc b/gpu/command_buffer/service/memory_program_cache_unittest.cc
index 2db0df5..6973e67 100644
--- a/gpu/command_buffer/service/memory_program_cache_unittest.cc
+++ b/gpu/command_buffer/service/memory_program_cache_unittest.cc
@@ -7,6 +7,7 @@
#include "base/bind.h"
#include "gpu/command_buffer/common/gles2_cmd_format.h"
#include "gpu/command_buffer/service/gl_utils.h"
+#include "gpu/command_buffer/service/gpu_service_test.h"
#include "gpu/command_buffer/service/shader_manager.h"
#include "gpu/command_buffer/service/shader_translator.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -65,7 +66,7 @@ class ProgramBinaryEmulator {
const char* binary_;
};
-class MemoryProgramCacheTest : public testing::Test {
+class MemoryProgramCacheTest : public GpuServiceTest {
public:
static const size_t kCacheSizeBytes = 1024;
static const GLuint kVertexShaderClientId = 90;
@@ -92,8 +93,7 @@ class MemoryProgramCacheTest : public testing::Test {
protected:
virtual void SetUp() {
- gl_.reset(new ::testing::StrictMock<gfx::MockGLInterface>());
- ::gfx::MockGLInterface::SetGLInterface(gl_.get());
+ GpuServiceTest::SetUp();
vertex_shader_ = shader_manager_.CreateShader(kVertexShaderClientId,
kVertexShaderServiceId,
@@ -137,11 +137,6 @@ class MemoryProgramCacheTest : public testing::Test {
fragment_shader_->SetStatus(true, NULL, NULL);
}
- virtual void TearDown() {
- ::gfx::MockGLInterface::SetGLInterface(NULL);
- gl_.reset();
- }
-
void SetExpectationsForSaveLinkedProgram(
const GLint program_id,
ProgramBinaryEmulator* emulator) const {
@@ -181,8 +176,6 @@ class MemoryProgramCacheTest : public testing::Test {
.WillOnce(SetArgPointee<2>(GL_FALSE));
}
- // Use StrictMock to make 100% sure we know how GL will be called.
- scoped_ptr< ::testing::StrictMock<gfx::MockGLInterface> > gl_;
scoped_ptr<MemoryProgramCache> cache_;
ShaderManager shader_manager_;
Shader* vertex_shader_;
diff --git a/gpu/command_buffer/service/program_manager_unittest.cc b/gpu/command_buffer/service/program_manager_unittest.cc
index 686916a..3264861 100644
--- a/gpu/command_buffer/service/program_manager_unittest.cc
+++ b/gpu/command_buffer/service/program_manager_unittest.cc
@@ -13,13 +13,13 @@
#include "gpu/command_buffer/common/gles2_cmd_utils.h"
#include "gpu/command_buffer/service/common_decoder.h"
#include "gpu/command_buffer/service/feature_info.h"
+#include "gpu/command_buffer/service/gpu_service_test.h"
#include "gpu/command_buffer/service/mocks.h"
#include "gpu/command_buffer/service/shader_manager.h"
#include "gpu/command_buffer/service/test_helper.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/gl/gl_mock.h"
-using ::gfx::MockGLInterface;
using ::testing::_;
using ::testing::DoAll;
using ::testing::InSequence;
@@ -30,7 +30,6 @@ using ::testing::ReturnRef;
using ::testing::SetArrayArgument;
using ::testing::SetArgumentPointee;
using ::testing::StrEq;
-using ::testing::StrictMock;
namespace gpu {
namespace gles2 {
@@ -41,7 +40,7 @@ const uint32 kMaxVaryingVectors = 8;
void ShaderCacheCb(const std::string& key, const std::string& shader) {}
} // namespace anonymous
-class ProgramManagerTest : public testing::Test {
+class ProgramManagerTest : public GpuServiceTest {
public:
ProgramManagerTest() : manager_(NULL, kMaxVaryingVectors) { }
virtual ~ProgramManagerTest() {
@@ -49,18 +48,6 @@ class ProgramManagerTest : public testing::Test {
}
protected:
- virtual void SetUp() {
- gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>());
- ::gfx::MockGLInterface::SetGLInterface(gl_.get());
- }
-
- virtual void TearDown() {
- ::gfx::MockGLInterface::SetGLInterface(NULL);
- gl_.reset();
- }
-
- // Use StrictMock to make 100% sure we know how GL will be called.
- scoped_ptr< ::testing::StrictMock< ::gfx::MockGLInterface> > gl_;
ProgramManager manager_;
};
@@ -138,7 +125,7 @@ TEST_F(ProgramManagerTest, Program) {
EXPECT_TRUE(program1->log_info() == NULL);
}
-class ProgramManagerWithShaderTest : public testing::Test {
+class ProgramManagerWithShaderTest : public GpuServiceTest {
public:
ProgramManagerWithShaderTest()
: manager_(NULL, kMaxVaryingVectors), program_(NULL) {
@@ -228,8 +215,7 @@ class ProgramManagerWithShaderTest : public testing::Test {
} VarInfo;
virtual void SetUp() {
- gl_.reset(new StrictMock<gfx::MockGLInterface>());
- ::gfx::MockGLInterface::SetGLInterface(gl_.get());
+ GpuServiceTest::SetUp();
SetupDefaultShaderExpectations();
@@ -272,10 +258,6 @@ class ProgramManagerWithShaderTest : public testing::Test {
gl_.get(), uniforms, num_uniforms);
}
- virtual void TearDown() {
- ::gfx::MockGLInterface::SetGLInterface(NULL);
- }
-
// Return true if link status matches expected_link_status
bool LinkAsExpected(Program* program,
bool expected_link_status) {
@@ -398,8 +380,6 @@ class ProgramManagerWithShaderTest : public testing::Test {
static AttribInfo kAttribs[];
static UniformInfo kUniforms[];
- scoped_ptr<StrictMock<gfx::MockGLInterface> > gl_;
-
ProgramManager manager_;
Program* program_;
ShaderManager shader_manager_;
@@ -1569,7 +1549,7 @@ TEST_F(ProgramManagerWithShaderTest, BindUniformLocation) {
program->GetUniformFakeLocation(kUniform3GoodName));
}
-class ProgramManagerWithCacheTest : public testing::Test {
+class ProgramManagerWithCacheTest : public GpuServiceTest {
public:
static const GLuint kClientProgramId = 1;
static const GLuint kServiceProgramId = 10;
@@ -1592,8 +1572,7 @@ class ProgramManagerWithCacheTest : public testing::Test {
protected:
virtual void SetUp() {
- gl_.reset(new StrictMock<gfx::MockGLInterface>());
- ::gfx::MockGLInterface::SetGLInterface(gl_.get());
+ GpuServiceTest::SetUp();
vertex_shader_ = shader_manager_.CreateShader(
kVertexShaderClientId, kVertexShaderServiceId, GL_VERTEX_SHADER);
@@ -1612,10 +1591,6 @@ class ProgramManagerWithCacheTest : public testing::Test {
program_->AttachShader(&shader_manager_, fragment_shader_);
}
- virtual void TearDown() {
- ::gfx::MockGLInterface::SetGLInterface(NULL);
- }
-
void SetShadersCompiled() {
vertex_shader_->SetStatus(true, NULL, NULL);
fragment_shader_->SetStatus(true, NULL, NULL);
@@ -1757,8 +1732,6 @@ class ProgramManagerWithCacheTest : public testing::Test {
.Times(1);
}
- scoped_ptr<StrictMock<gfx::MockGLInterface> > gl_;
-
scoped_ptr<MockProgramCache> cache_;
ProgramManager manager_;
diff --git a/gpu/command_buffer/service/query_manager_unittest.cc b/gpu/command_buffer/service/query_manager_unittest.cc
index 0acbbec..9f0156f 100644
--- a/gpu/command_buffer/service/query_manager_unittest.cc
+++ b/gpu/command_buffer/service/query_manager_unittest.cc
@@ -6,9 +6,10 @@
#include "gpu/command_buffer/common/gles2_cmd_format.h"
#include "gpu/command_buffer/service/cmd_buffer_engine.h"
#include "gpu/command_buffer/service/error_state_mock.h"
+#include "gpu/command_buffer/service/feature_info.h"
#include "gpu/command_buffer/service/gles2_cmd_decoder.h"
#include "gpu/command_buffer/service/gles2_cmd_decoder_mock.h"
-#include "gpu/command_buffer/service/feature_info.h"
+#include "gpu/command_buffer/service/gpu_service_test.h"
#include "gpu/command_buffer/service/test_helper.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/gl/gl_mock.h"
@@ -21,7 +22,7 @@ using ::testing::SetArgumentPointee;
namespace gpu {
namespace gles2 {
-class QueryManagerTest : public testing::Test {
+class QueryManagerTest : public GpuServiceTest {
public:
static const int32 kSharedMemoryId = 401;
static const size_t kSharedBufferSize = 2048;
@@ -38,8 +39,7 @@ class QueryManagerTest : public testing::Test {
protected:
virtual void SetUp() {
- gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>());
- ::gfx::MockGLInterface::SetGLInterface(gl_.get());
+ GpuServiceTest::SetUp();
engine_.reset(new MockCommandBufferEngine());
decoder_.reset(new MockGLES2Decoder());
decoder_->set_engine(engine_.get());
@@ -56,8 +56,7 @@ class QueryManagerTest : public testing::Test {
manager_->Destroy(false);
manager_.reset();
engine_.reset();
- ::gfx::MockGLInterface::SetGLInterface(NULL);
- gl_.reset();
+ GpuServiceTest::TearDown();
}
QueryManager::Query* CreateQuery(
@@ -82,8 +81,6 @@ class QueryManagerTest : public testing::Test {
EXPECT_TRUE(manager_->EndQuery(query, submit_count));
}
- // Use StrictMock to make 100% sure we know how GL will be called.
- scoped_ptr< ::testing::StrictMock< ::gfx::MockGLInterface> > gl_;
scoped_ptr<MockGLES2Decoder> decoder_;
scoped_ptr<QueryManager> manager_;
diff --git a/gpu/command_buffer/service/renderbuffer_manager_unittest.cc b/gpu/command_buffer/service/renderbuffer_manager_unittest.cc
index 6548258..ba0ebea 100644
--- a/gpu/command_buffer/service/renderbuffer_manager_unittest.cc
+++ b/gpu/command_buffer/service/renderbuffer_manager_unittest.cc
@@ -6,6 +6,7 @@
#include <set>
#include "gpu/command_buffer/common/gles2_cmd_utils.h"
+#include "gpu/command_buffer/service/gpu_service_test.h"
#include "gpu/command_buffer/service/mocks.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/gl/gl_implementation.h"
@@ -16,15 +17,14 @@ using ::testing::StrictMock;
namespace gpu {
namespace gles2 {
-class RenderbufferManagerTestBase : public testing::Test {
+class RenderbufferManagerTestBase : public GpuServiceTest {
public:
static const GLint kMaxSize = 128;
static const GLint kMaxSamples = 4;
protected:
void SetUpBase(MemoryTracker* memory_tracker, bool depth24_supported) {
- gl_.reset(new ::testing::StrictMock<gfx::MockGLInterface>());
- ::gfx::MockGLInterface::SetGLInterface(gl_.get());
+ GpuServiceTest::SetUp();
manager_.reset(new RenderbufferManager(
memory_tracker, kMaxSize, kMaxSamples, depth24_supported));
}
@@ -32,12 +32,9 @@ class RenderbufferManagerTestBase : public testing::Test {
virtual void TearDown() {
manager_->Destroy(true);
manager_.reset();
- ::gfx::MockGLInterface::SetGLInterface(NULL);
- gl_.reset();
+ GpuServiceTest::TearDown();
}
- // Use StrictMock to make 100% sure we know how GL will be called.
- scoped_ptr< ::testing::StrictMock< ::gfx::MockGLInterface> > gl_;
scoped_ptr<RenderbufferManager> manager_;
};
diff --git a/gpu/command_buffer/service/shader_manager_unittest.cc b/gpu/command_buffer/service/shader_manager_unittest.cc
index 1f48f2d..b5b7b38 100644
--- a/gpu/command_buffer/service/shader_manager_unittest.cc
+++ b/gpu/command_buffer/service/shader_manager_unittest.cc
@@ -5,6 +5,7 @@
#include "gpu/command_buffer/service/shader_manager.h"
#include "base/memory/scoped_ptr.h"
+#include "gpu/command_buffer/service/gpu_service_test.h"
#include "gpu/command_buffer/service/mocks.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/gl/gl_mock.h"
@@ -15,7 +16,7 @@ using ::testing::ReturnRef;
namespace gpu {
namespace gles2 {
-class ShaderManagerTest : public testing::Test {
+class ShaderManagerTest : public GpuServiceTest {
public:
ShaderManagerTest() {
}
@@ -25,18 +26,6 @@ class ShaderManagerTest : public testing::Test {
}
protected:
- virtual void SetUp() {
- gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>());
- ::gfx::MockGLInterface::SetGLInterface(gl_.get());
- }
-
- virtual void TearDown() {
- ::gfx::MockGLInterface::SetGLInterface(NULL);
- gl_.reset();
- }
-
- // Use StrictMock to make 100% sure we know how GL will be called.
- scoped_ptr< ::testing::StrictMock< ::gfx::MockGLInterface> > gl_;
ShaderManager manager_;
};
diff --git a/gpu/command_buffer/service/texture_manager_unittest.cc b/gpu/command_buffer/service/texture_manager_unittest.cc
index 873511d..2335191 100644
--- a/gpu/command_buffer/service/texture_manager_unittest.cc
+++ b/gpu/command_buffer/service/texture_manager_unittest.cc
@@ -9,6 +9,7 @@
#include "gpu/command_buffer/service/feature_info.h"
#include "gpu/command_buffer/service/framebuffer_manager.h"
#include "gpu/command_buffer/service/gles2_cmd_decoder_mock.h"
+#include "gpu/command_buffer/service/gpu_service_test.h"
#include "gpu/command_buffer/service/mailbox_manager.h"
#include "gpu/command_buffer/service/memory_tracking.h"
#include "gpu/command_buffer/service/mocks.h"
@@ -39,7 +40,7 @@ class TextureTestHelper {
}
};
-class TextureManagerTest : public testing::Test {
+class TextureManagerTest : public GpuServiceTest {
public:
static const GLint kMaxTextureSize = 16;
static const GLint kMaxCubeMapTextureSize = 8;
@@ -56,9 +57,7 @@ class TextureManagerTest : public testing::Test {
protected:
virtual void SetUp() {
- gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>());
- ::gfx::MockGLInterface::SetGLInterface(gl_.get());
-
+ GpuServiceTest::SetUp();
manager_.reset(new TextureManager(NULL,
feature_info_.get(),
kMaxTextureSize,
@@ -73,8 +72,7 @@ class TextureManagerTest : public testing::Test {
virtual void TearDown() {
manager_->Destroy(false);
manager_.reset();
- ::gfx::MockGLInterface::SetGLInterface(NULL);
- gl_.reset();
+ GpuServiceTest::TearDown();
}
void SetParameter(
@@ -84,8 +82,6 @@ class TextureManagerTest : public testing::Test {
texture_ref, pname, value, error);
}
- // Use StrictMock to make 100% sure we know how GL will be called.
- scoped_ptr< ::testing::StrictMock< ::gfx::MockGLInterface> > gl_;
scoped_refptr<FeatureInfo> feature_info_;
scoped_ptr<TextureManager> manager_;
scoped_ptr<MockErrorState> error_state_;
@@ -385,7 +381,7 @@ TEST_F(TextureManagerTest, ValidForTargetNPOT) {
manager.Destroy(false);
}
-class TextureTestBase : public testing::Test {
+class TextureTestBase : public GpuServiceTest {
public:
static const GLint kMaxTextureSize = 16;
static const GLint kMaxCubeMapTextureSize = 8;
@@ -404,9 +400,7 @@ class TextureTestBase : public testing::Test {
protected:
void SetUpBase(MemoryTracker* memory_tracker, std::string extensions) {
- gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>());
- ::gfx::MockGLInterface::SetGLInterface(gl_.get());
-
+ GpuServiceTest::SetUp();
if (!extensions.empty()) {
TestHelper::SetupFeatureInfoInitExpectations(gl_.get(),
extensions.c_str());
@@ -440,8 +434,7 @@ class TextureTestBase : public testing::Test {
}
manager_->Destroy(false);
manager_.reset();
- ::gfx::MockGLInterface::SetGLInterface(NULL);
- gl_.reset();
+ GpuServiceTest::TearDown();
}
void SetParameter(
@@ -453,8 +446,6 @@ class TextureTestBase : public testing::Test {
scoped_ptr<MockGLES2Decoder> decoder_;
scoped_ptr<MockErrorState> error_state_;
- // Use StrictMock to make 100% sure we know how GL will be called.
- scoped_ptr< ::testing::StrictMock< ::gfx::MockGLInterface> > gl_;
scoped_refptr<FeatureInfo> feature_info_;
scoped_ptr<TextureManager> manager_;
scoped_refptr<TextureRef> texture_ref_;
@@ -2201,7 +2192,7 @@ class CountingMemoryTracker : public MemoryTracker {
DISALLOW_COPY_AND_ASSIGN(CountingMemoryTracker);
};
-class SharedTextureTest : public testing::Test {
+class SharedTextureTest : public GpuServiceTest {
public:
static const bool kUseDefaultTextures = false;
@@ -2211,9 +2202,7 @@ class SharedTextureTest : public testing::Test {
}
virtual void SetUp() {
- gl_.reset(new ::gfx::MockGLInterface());
- ::gfx::MockGLInterface::SetGLInterface(gl_.get());
-
+ GpuServiceTest::SetUp();
memory_tracker1_ = new CountingMemoryTracker;
texture_manager1_.reset(
new TextureManager(memory_tracker1_.get(),
@@ -2241,12 +2230,10 @@ class SharedTextureTest : public testing::Test {
texture_manager2_.reset();
texture_manager1_->Destroy(false);
texture_manager1_.reset();
- ::gfx::MockGLInterface::SetGLInterface(NULL);
- gl_.reset();
+ GpuServiceTest::TearDown();
}
protected:
- scoped_ptr< ::gfx::MockGLInterface > gl_;
scoped_refptr<FeatureInfo> feature_info_;
scoped_refptr<CountingMemoryTracker> memory_tracker1_;
scoped_ptr<TextureManager> texture_manager1_;
diff --git a/gpu/command_buffer/service/vertex_array_manager_unittest.cc b/gpu/command_buffer/service/vertex_array_manager_unittest.cc
index 617a5f6..aa2df35 100644
--- a/gpu/command_buffer/service/vertex_array_manager_unittest.cc
+++ b/gpu/command_buffer/service/vertex_array_manager_unittest.cc
@@ -7,6 +7,7 @@
#include "base/memory/scoped_ptr.h"
#include "gpu/command_buffer/service/feature_info.h"
+#include "gpu/command_buffer/service/gpu_service_test.h"
#include "gpu/command_buffer/service/test_helper.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/gl/gl_mock.h"
@@ -17,7 +18,7 @@ using ::testing::_;
namespace gpu {
namespace gles2 {
-class VertexArrayManagerTest : public testing::Test {
+class VertexArrayManagerTest : public GpuServiceTest {
public:
static const uint32 kNumVertexAttribs = 8;
@@ -29,21 +30,16 @@ class VertexArrayManagerTest : public testing::Test {
protected:
virtual void SetUp() {
- gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>());
- ::gfx::MockGLInterface::SetGLInterface(gl_.get());
-
- manager_ = new VertexArrayManager();
+ GpuServiceTest::SetUp();
+ manager_.reset(new VertexArrayManager());
}
virtual void TearDown() {
- delete manager_;
- ::gfx::MockGLInterface::SetGLInterface(NULL);
- gl_.reset();
+ manager_.reset();
+ GpuServiceTest::TearDown();
}
- // Use StrictMock to make 100% sure we know how GL will be called.
- scoped_ptr< ::testing::StrictMock< ::gfx::MockGLInterface> > gl_;
- VertexArrayManager* manager_;
+ scoped_ptr<VertexArrayManager> manager_;
};
// GCC requires these declarations, but MSVC requires they not be present
diff --git a/gpu/command_buffer/service/vertex_attrib_manager_unittest.cc b/gpu/command_buffer/service/vertex_attrib_manager_unittest.cc
index 27d1ee4..e7fd690 100644
--- a/gpu/command_buffer/service/vertex_attrib_manager_unittest.cc
+++ b/gpu/command_buffer/service/vertex_attrib_manager_unittest.cc
@@ -8,6 +8,7 @@
#include "gpu/command_buffer/service/buffer_manager.h"
#include "gpu/command_buffer/service/error_state_mock.h"
#include "gpu/command_buffer/service/feature_info.h"
+#include "gpu/command_buffer/service/gpu_service_test.h"
#include "gpu/command_buffer/service/test_helper.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/gl/gl_mock.h"
@@ -18,7 +19,7 @@ using ::testing::_;
namespace gpu {
namespace gles2 {
-class VertexAttribManagerTest : public testing::Test {
+class VertexAttribManagerTest : public GpuServiceTest {
public:
static const uint32 kNumVertexAttribs = 8;
@@ -30,8 +31,7 @@ class VertexAttribManagerTest : public testing::Test {
protected:
virtual void SetUp() {
- gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>());
- ::gfx::MockGLInterface::SetGLInterface(gl_.get());
+ GpuServiceTest::SetUp();
for (uint32 ii = 0; ii < kNumVertexAttribs; ++ii) {
EXPECT_CALL(*gl_, VertexAttrib4f(ii, 0.0f, 0.0f, 0.0f, 1.0f))
@@ -43,14 +43,6 @@ class VertexAttribManagerTest : public testing::Test {
manager_->Initialize(kNumVertexAttribs, true);
}
- virtual void TearDown() {
- manager_ = NULL;
- ::gfx::MockGLInterface::SetGLInterface(NULL);
- gl_.reset();
- }
-
- // Use StrictMock to make 100% sure we know how GL will be called.
- scoped_ptr< ::testing::StrictMock< ::gfx::MockGLInterface> > gl_;
scoped_refptr<VertexAttribManager> manager_;
};
diff --git a/gpu/gpu.gyp b/gpu/gpu.gyp
index 7d0695e..3215e9d 100644
--- a/gpu/gpu.gyp
+++ b/gpu/gpu.gyp
@@ -248,6 +248,7 @@
'command_buffer/service/gl_surface_mock.cc',
'command_buffer/service/gl_surface_mock.h',
'command_buffer/service/gpu_scheduler_unittest.cc',
+ 'command_buffer/service/gpu_service_test.cc',
'command_buffer/service/id_manager_unittest.cc',
'command_buffer/service/mailbox_manager_unittest.cc',
'command_buffer/service/memory_program_cache_unittest.cc',