diff options
author | Tor Brede Vekterli <vekterli@yahoo-inc.com> | 2017-08-31 12:06:53 +0000 |
---|---|---|
committer | Tor Brede Vekterli <vekterli@yahoo-inc.com> | 2017-08-31 15:22:15 +0000 |
commit | bd2827d46947646a538e256a4e656c8f94438917 (patch) | |
tree | dbaad465b045df560188cb94718b54d280dfe9ad /storage/src/tests/persistence | |
parent | 239ccaca10f97e9e4038ae48604e248e14074eb3 (diff) |
Wire together new listener to propagate errors
Diffstat (limited to 'storage/src/tests/persistence')
-rw-r--r-- | storage/src/tests/persistence/CMakeLists.txt | 2 | ||||
-rw-r--r-- | storage/src/tests/persistence/provider_error_wrapper_test.cpp (renamed from storage/src/tests/persistence/providershutdownwrappertest.cpp) | 63 |
2 files changed, 3 insertions, 62 deletions
diff --git a/storage/src/tests/persistence/CMakeLists.txt b/storage/src/tests/persistence/CMakeLists.txt index 44aed95ba77..f5715ca3531 100644 --- a/storage/src/tests/persistence/CMakeLists.txt +++ b/storage/src/tests/persistence/CMakeLists.txt @@ -6,7 +6,7 @@ vespa_add_library(storage_testpersistence TEST splitbitdetectortest.cpp legacyoperationhandlertest.cpp diskmoveoperationhandlertest.cpp - providershutdownwrappertest.cpp + provider_error_wrapper_test.cpp mergehandlertest.cpp persistencethread_splittest.cpp bucketownershipnotifiertest.cpp diff --git a/storage/src/tests/persistence/providershutdownwrappertest.cpp b/storage/src/tests/persistence/provider_error_wrapper_test.cpp index f7998607184..94a2586f0d8 100644 --- a/storage/src/tests/persistence/providershutdownwrappertest.cpp +++ b/storage/src/tests/persistence/provider_error_wrapper_test.cpp @@ -6,11 +6,9 @@ namespace storage { -// TODO rename file class ProviderErrorWrapperTest : public SingleDiskPersistenceTestUtils { public: CPPUNIT_TEST_SUITE(ProviderErrorWrapperTest); - CPPUNIT_TEST(testShutdownOnFatalError); CPPUNIT_TEST(fatal_error_invokes_listener); CPPUNIT_TEST(resource_exhaustion_error_invokes_listener); CPPUNIT_TEST(listener_not_invoked_on_success); @@ -18,7 +16,6 @@ public: CPPUNIT_TEST(multiple_listeners_can_be_registered); CPPUNIT_TEST_SUITE_END(); - void testShutdownOnFatalError(); void fatal_error_invokes_listener(); void resource_exhaustion_error_invokes_listener(); void listener_not_invoked_on_success(); @@ -30,22 +27,6 @@ CPPUNIT_TEST_SUITE_REGISTRATION(ProviderErrorWrapperTest); namespace { -class TestShutdownListener - : public framework::defaultimplementation::ShutdownListener -{ -public: - TestShutdownListener() : _reason() {} - - void requestShutdown(vespalib::stringref reason) override { - _reason = reason; - } - - bool shutdownRequested() const { return !_reason.empty(); } - const vespalib::string& getReason() const { return _reason; } -private: - vespalib::string _reason; -}; - struct MockErrorListener : ProviderErrorListener { void on_fatal_error(vespalib::stringref message) override { _seen_fatal_error = true; @@ -73,19 +54,17 @@ struct Fixture { : providerWrapper(provider), app(), component(app.getComponentRegister(), "dummy"), - errorWrapper(providerWrapper, component) + errorWrapper(providerWrapper) { providerWrapper.setFailureMask(PersistenceProviderWrapper::FAIL_ALL_OPERATIONS); } - ~Fixture(); + ~Fixture() {} void perform_spi_operation() { errorWrapper.getBucketInfo(spi::Bucket(document::BucketId(16, 1234), spi::PartitionId(0))); } }; -Fixture::~Fixture() {} - } void ProviderErrorWrapperTest::fatal_error_invokes_listener() { @@ -157,44 +136,6 @@ void ProviderErrorWrapperTest::multiple_listeners_can_be_registered() { CPPUNIT_ASSERT(listener2->_seen_resource_exhaustion_error); } - - -// TODO rewrite, move component interaction testing elsewhere -void -ProviderErrorWrapperTest::testShutdownOnFatalError() { - Fixture f(getPersistenceProvider()); - - TestShutdownListener shutdownListener; - - f.app.getComponentRegister().registerShutdownListener(shutdownListener); - - f.providerWrapper.setResult( - spi::Result(spi::Result::FATAL_ERROR, "eject! eject!")); - f.providerWrapper.setFailureMask( - PersistenceProviderWrapper::FAIL_ALL_OPERATIONS); - - CPPUNIT_ASSERT(!shutdownListener.shutdownRequested()); - // This should cause the node to implicitly be shut down - f.errorWrapper.getBucketInfo( - spi::Bucket(document::BucketId(16, 1234), - spi::PartitionId(0))); - - CPPUNIT_ASSERT(shutdownListener.shutdownRequested()); - CPPUNIT_ASSERT_EQUAL(vespalib::string("eject! eject!"), - shutdownListener.getReason()); - - // Triggering a new error should not cause shutdown to be requested twice. - f.providerWrapper.setResult( - spi::Result(spi::Result::FATAL_ERROR, "boom!")); - - f.errorWrapper.getBucketInfo( - spi::Bucket(document::BucketId(16, 1234), - spi::PartitionId(0))); - - CPPUNIT_ASSERT_EQUAL(vespalib::string("eject! eject!"), - shutdownListener.getReason()); -} - } // ns storage |