From 1b17fc660f8bc188c53db8fca044d6d4d4c2fc29 Mon Sep 17 00:00:00 2001 From: Tor Egge Date: Thu, 8 Feb 2018 13:59:49 +0000 Subject: Test that bucket db updater fakes success when receiving encode error reply. --- .../src/tests/distributor/bucketdbupdatertest.cpp | 25 ++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'storage/src/tests') 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(); @@ -784,6 +786,29 @@ BucketDBUpdaterTest::testFailedRequestBucketInfo() _senderDown.getCommands()); } +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 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() { -- cgit v1.2.3