// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include #include #include #include #include #include #include LOG_SETUP(".singlebucketjointest"); namespace storage { class SingleBucketJoinTest : public FileStorTestFixture { public: void testPersistenceCanHandleSingleBucketJoin(); CPPUNIT_TEST_SUITE(SingleBucketJoinTest); CPPUNIT_TEST(testPersistenceCanHandleSingleBucketJoin); CPPUNIT_TEST_SUITE_END(); }; CPPUNIT_TEST_SUITE_REGISTRATION(SingleBucketJoinTest); void SingleBucketJoinTest::testPersistenceCanHandleSingleBucketJoin() { TestFileStorComponents c(*this, "testPersistenceCanHandleSingleBucketJoin"); document::BucketId targetBucket(16, 1); document::BucketId sourceBucket(17, 1); createBucket(sourceBucket); // Make sure it's not empty c.sendPut(sourceBucket, DocumentIndex(0), PutTimestamp(1000)); expectOkReply(c.top); c.top.getRepliesOnce(); auto cmd = std::make_shared(targetBucket); cmd->getSourceBuckets().push_back(sourceBucket); cmd->getSourceBuckets().push_back(sourceBucket); c.top.sendDown(cmd); // If single bucket join locking is not working properly, this // will hang forever. expectOkReply(c.top); } } // namespace storage