summaryrefslogtreecommitdiffstats
path: root/storage/src/tests/persistence
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@yahoo-inc.com>2017-08-31 12:06:53 +0000
committerTor Brede Vekterli <vekterli@yahoo-inc.com>2017-08-31 15:22:15 +0000
commitbd2827d46947646a538e256a4e656c8f94438917 (patch)
treedbaad465b045df560188cb94718b54d280dfe9ad /storage/src/tests/persistence
parent239ccaca10f97e9e4038ae48604e248e14074eb3 (diff)
Wire together new listener to propagate errors
Diffstat (limited to 'storage/src/tests/persistence')
-rw-r--r--storage/src/tests/persistence/CMakeLists.txt2
-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