diff options
author | Tor Egge <Tor.Egge@oath.com> | 2018-02-08 13:59:49 +0000 |
---|---|---|
committer | Tor Egge <Tor.Egge@oath.com> | 2018-02-08 14:02:15 +0000 |
commit | 1b17fc660f8bc188c53db8fca044d6d4d4c2fc29 (patch) | |
tree | fe726f8ab1bb0458fe496829c0c7585c2d626c7f /storage | |
parent | 8e6906d57191b7fef632e44290a97bf409483422 (diff) |
Test that bucket db updater fakes success when receiving encode error reply.
Diffstat (limited to 'storage')
-rw-r--r-- | storage/src/tests/distributor/bucketdbupdatertest.cpp | 25 |
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); |