summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@oath.com>2018-02-08 13:59:49 +0000
committerTor Egge <Tor.Egge@oath.com>2018-02-08 14:02:15 +0000
commit1b17fc660f8bc188c53db8fca044d6d4d4c2fc29 (patch)
treefe726f8ab1bb0458fe496829c0c7585c2d626c7f
parent8e6906d57191b7fef632e44290a97bf409483422 (diff)
Test that bucket db updater fakes success when receiving encode error reply.
-rw-r--r--storage/src/tests/distributor/bucketdbupdatertest.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/storage/src/tests/distributor/bucketdbupdatertest.cpp b/storage/src/tests/distributor/bucketdbupdatertest.cpp
index ff442114c4c..b79894aee9a 100644
--- a/storage/src/tests/distributor/bucketdbupdatertest.cpp
+++ b/storage/src/tests/distributor/bucketdbupdatertest.cpp
@@ -34,6 +34,7 @@ class BucketDBUpdaterTest : public CppUnit::TestFixture,
CPPUNIT_TEST(testDistributorChangeWithGrouping);
CPPUNIT_TEST(testNormalUsageInitializing); // Check that we send request bucket info when storage node is initializing, and send another when it's up.
CPPUNIT_TEST(testFailedRequestBucketInfo);
+ CPPUNIT_TEST(testEncodeErrorHandling);
CPPUNIT_TEST(testBitChange); // Check what happens when distribution bits change
CPPUNIT_TEST(testNodeDown);
CPPUNIT_TEST(testStorageNodeInMaintenanceClearsBucketsForNode);
@@ -92,6 +93,7 @@ protected:
void testDistributorChangeWithGrouping();
void testNormalUsageInitializing();
void testFailedRequestBucketInfo();
+ void testEncodeErrorHandling();
void testNoResponses();
void testBitChange();
void testInconsistentChecksum();
@@ -785,6 +787,29 @@ BucketDBUpdaterTest::testFailedRequestBucketInfo()
}
void
+BucketDBUpdaterTest::testEncodeErrorHandling()
+{
+ setSystemState(lib::ClusterState("distributor:1 .0.s:i storage:1"));
+
+ CPPUNIT_ASSERT_EQUAL(size_t(1), _sender.commands.size());
+
+ // Not yet passing on system state.
+ CPPUNIT_ASSERT_EQUAL(size_t(0), _senderDown.commands.size());
+ {
+ std::shared_ptr<api::RequestBucketInfoReply> reply =
+ getFakeBucketReply(lib::ClusterState("distributor:1 .0.s:i storage:1"),
+ *((RequestBucketInfoCommand*)_sender.commands[0].get()),
+ 0,
+ 10);
+
+ reply->setResult(api::ReturnCode::ENCODE_ERROR);
+ getBucketDBUpdater().onRequestBucketInfoReply(reply);
+ }
+ CPPUNIT_ASSERT_EQUAL(std::string("Set system state"),
+ _senderDown.getCommands());
+}
+
+void
BucketDBUpdaterTest::testDownWhileInit()
{
setStorageNodes(3);