MB-21142: Ensure vbucket states are persisted before the test 64/68264/2
authorSriram Ganesan <sriram@couchbase.com>
Mon, 3 Oct 2016 09:14:18 +0000 (14:44 +0530)
committerDave Rigby <daver@couchbase.com>
Mon, 3 Oct 2016 09:46:30 +0000 (09:46 +0000)
In test_tap_filter_stream, vb ids 0 to 3 are set to active
before the test. The test needs to ensure that all the vbucket
states are persisted and the respective couchstore files created
so that there is no race between file creation and operations
on the file

Context: test_tap_filter_stream

Change-Id: Idad34474bdf418504012731459cf4eb3272b1ba9
Reviewed-on: http://review.couchbase.org/68264
Tested-by: buildbot <build@couchbase.com>
Reviewed-by: Dave Rigby <daver@couchbase.com>
tests/ep_testsuite_tap.cc

index 0b1afb6..1a21092 100644 (file)
@@ -705,11 +705,17 @@ static enum test_result test_tap_takeover(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1
 
 static enum test_result test_tap_filter_stream(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1) {
     uint16_t vbid;
-    for (vbid = 0; vbid < 4; ++vbid) {
+    int num_vbstate_persist = get_int_stat(h, h1, "ep_persist_vbstate_total");
+
+    /* vb 0 is already set to active before the test begins. Start from vbid 1 */
+    for (vbid = 1; vbid < 4; ++vbid) {
         check(set_vbucket_state(h, h1, vbid, vbucket_state_active),
               "Failed to set vbucket state.");
     }
 
+    /* Ensure that all the vbucket states are persisted */
+    wait_for_stat_to_be(h, h1, "ep_persist_vbstate_total", num_vbstate_persist + 3);
+
     const int num_keys = 40;
     bool keys[num_keys];
     for (int ii = 0; ii < num_keys; ++ii) {