diff options
author | Tor Egge <Tor.Egge@oath.com> | 2017-09-13 18:49:20 +0000 |
---|---|---|
committer | Tor Egge <Tor.Egge@oath.com> | 2017-09-13 18:49:20 +0000 |
commit | bc6d7f9667b4dd5ebe4b722139b86ad95f06e5be (patch) | |
tree | f71475894e278443ff80c71f48b676b311be68f5 | |
parent | 403c3cfc37cdecb8e342d686a3512fdd74989ffb (diff) |
Test that notifyCreateBucket() causes bucket to be reconsidered in bucket
move job.
-rw-r--r-- | searchcore/src/tests/proton/documentdb/documentbucketmover/documentbucketmover_test.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/searchcore/src/tests/proton/documentdb/documentbucketmover/documentbucketmover_test.cpp b/searchcore/src/tests/proton/documentdb/documentbucketmover/documentbucketmover_test.cpp index 3a753227a98..fec39e47df4 100644 --- a/searchcore/src/tests/proton/documentdb/documentbucketmover/documentbucketmover_test.cpp +++ b/searchcore/src/tests/proton/documentdb/documentbucketmover/documentbucketmover_test.cpp @@ -601,6 +601,10 @@ struct ControllerFixtureBase const BucketIdVector &calcAsked() const { return _calc->asked(); } + void runLoop() { + while (!_bmj.isBlocked() && !_bmj.run()) { + } + } }; ControllerFixtureBase::ControllerFixtureBase(const BlockableMaintenanceJobConfig &blockableConfig, bool storeMoveDoneContexts) @@ -1219,6 +1223,25 @@ TEST_F("explicitly active not ready bucket can be moved to ready even if node is EXPECT_EQUAL(f._notReady.bucket(3), f.bucketsModified()[0]); } +TEST_F("require that notifyCreateBucket works", ControllerFixture) +{ + EXPECT_FALSE(f._bmj.done()); + f.addReady(f._ready.bucket(1)); + f.addReady(f._ready.bucket(2)); + f.runLoop(); + EXPECT_TRUE(f._bmj.done()); + EXPECT_TRUE(f.docsMoved().empty()); + EXPECT_TRUE(f.bucketsModified().empty()); + f.addReady(f._notReady.bucket(3)); // bucket 3 now ready, no notify + EXPECT_TRUE(f._bmj.done()); // move job still believes work done + f._bmj.notifyCreateBucket(f._notReady.bucket(3)); // reconsider bucket 3 + EXPECT_FALSE(f._bmj.done()); + f.runLoop(); + EXPECT_TRUE(f._bmj.done()); + EXPECT_EQUAL(1u, f.bucketsModified().size()); + EXPECT_EQUAL(2u, f.docsMoved().size()); +} + struct ResourceLimitControllerFixture : public ControllerFixture { ResourceLimitControllerFixture(double resourceLimitFactor = RESOURCE_LIMIT_FACTOR) : |