From: Sage Weil Date: Thu, 27 Mar 2014 20:28:10 +0000 (-0700) Subject: ceph_test_rados_api_tier: scrub while cache tier is missing clones X-Git-Tag: v0.79~72^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=7f026ba608691d9b15d0f25bdd2c4f2e79ca037f;p=ceph.git ceph_test_rados_api_tier: scrub while cache tier is missing clones Trigger a scrub to verify that we can handle a cache tier that is missing some clones. We rely on the test harness to notice the error, and we do not confirm that the scrub happened. In practice this is plenty of time, however. Signed-off-by: Sage Weil --- diff --git a/src/test/librados/tier.cc b/src/test/librados/tier.cc index 5628465790a3..4bab8958a1fc 100644 --- a/src/test/librados/tier.cc +++ b/src/test/librados/tier.cc @@ -357,6 +357,24 @@ TEST_F(LibRadosTwoPoolsPP, PromoteSnap) { ioctx.snap_set_read(my_snaps[0]); + // stop and scrub this pg (to make sure scrub can handle missing + // clones in the cache tier) + { + IoCtx cache_ioctx; + ASSERT_EQ(0, cluster.ioctx_create(cache_pool_name.c_str(), cache_ioctx)); + ostringstream ss; + ss << "{\"prefix\": \"pg scrub\", \"pgid\": \"" + << cache_ioctx.get_id() << "." + << ioctx.get_object_pg_hash_position("foo") + << "\"}"; + ASSERT_EQ(0, cluster.mon_command(ss.str(), inbl, NULL, NULL)); + + // give it a few seconds to go. this is sloppy but is usually enough time + cout << "waiting for scrub..." << std::endl; + sleep(15); + cout << "done waiting" << std::endl; + } + // read foo snap { bufferlist bl;