]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
workunits: break down cache pool tests to be more precise; expand some
authorGreg Farnum <greg@inktank.com>
Tue, 15 Oct 2013 22:43:49 +0000 (15:43 -0700)
committerSage Weil <sage@inktank.com>
Sat, 14 Dec 2013 00:35:52 +0000 (16:35 -0800)
Signed-off-by: Greg Farnum <greg@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
qa/workunits/rados/caching_redirects.sh

index 6b2b201af16a68d3a4de4cf7b7b6589c2c1144e8..b6007bf0cabe074188c1102e3411fc07e8761b2c 100755 (executable)
@@ -11,22 +11,22 @@ expect_false()
 
 #create pools, set up tier relationship
 ceph osd pool create base_pool 2
-ceph osd pool create partial_cache 2
-ceph osd pool create data_cache 2
-ceph osd tier add base_pool partial_cache
-ceph osd tier add base_pool data_cache
+ceph osd pool create partial_wrong 2
+ceph osd pool create wrong_cache 2
+ceph osd tier add base_pool partial_wrong
+ceph osd tier add base_pool wrong_cache
 
-# populate base_pool and data_cache with some data
+# populate base_pool with some data
 echo "foo" > foo.txt
 echo "bar" > bar.txt
 echo "baz" > baz.txt
 rados -p base_pool put fooobj foo.txt
 rados -p base_pool put barobj bar.txt
-# data_cache is backwards so we can tell we read from it
-rados -p data_cache put fooobj bar.txt
-rados -p data_cache put barobj foo.txt
-# partial_cache gets barobj backwards
-rados -p partial_cache put barobj foo.txt
+# fill in wrong_cache backwards so we can tell we read from it
+rados -p wrong_cache put fooobj bar.txt
+rados -p wrong_cache put barobj foo.txt
+# partial_wrong gets barobj backwards so we can check promote and non-promote
+rados -p partial_wrong put barobj foo.txt
 
 # get the objects back before setting a caching pool
 rados -p base_pool get fooobj tmp.txt
@@ -34,25 +34,25 @@ diff -q tmp.txt foo.txt
 rados -p base_pool get barobj tmp.txt
 diff -q tmp.txt bar.txt
 
-# set up redirect and make sure we get redirect-based results
-ceph osd tier set-overlay base_pool partial_cache
-ceph osd tier cache-mode partial_cache writeback
+# set up redirect and make sure we get backwards results
+ceph osd tier set-overlay base_pool wrong_cache
+ceph osd tier cache-mode wrong_cache writeback
 rados -p base_pool get fooobj tmp.txt
-diff -q tmp.txt foo.txt
+diff -q tmp.txt bar.txt
 rados -p base_pool get barobj tmp.txt
 diff -q tmp.txt foo.txt
 
-# try a nonexistent object and make sure we get an error
-expect_false rados -p base_pool get bazobj tmp.txt
-
-# switch cache pools and make sure contents differ
+# switch cache pools and make sure we're doing promote
 ceph osd tier remove-overlay base_pool
-ceph osd tier set-overlay base_pool data_cache
-ceph osd tier cache-mode data_cache writeback
+ceph osd tier set-overlay base_pool partial_wrong
+ceph osd tier cache-mode partial_wrong writeback
 rados -p base_pool get fooobj tmp.txt
-diff -q tmp.txt bar.txt
+diff -q tmp.txt foo.txt # hurray, it promoted!
 rados -p base_pool get barobj tmp.txt
-diff -q tmp.txt foo.txt
+diff -q tmp.txt foo.txt # yep, we read partial_wrong's local object!
+
+# try a nonexistent object and make sure we get an error
+expect_false rados -p base_pool get bazobj tmp.txt
 
 # drop the cache entirely and make sure contents are still the same
 ceph osd tier remove-overlay base_pool
@@ -60,3 +60,22 @@ rados -p base_pool get fooobj tmp.txt
 diff -q tmp.txt foo.txt
 rados -p base_pool get barobj tmp.txt
 diff -q tmp.txt bar.txt
+
+# create an empty cache pool and make sure it has objects after reading
+ceph osd pool create empty_cache 2
+
+touch empty.txt
+rados -p empty_cache ls > tmp.txt
+diff -q tmp.txt empty.txt
+
+ceph osd tier add base_pool empty_cache
+ceph osd tier set-overlay base_pool empty_cache
+ceph osd tier cache-mode empty_cache writeback
+rados -p base_pool get fooobj tmp.txt
+rados -p base_pool get barobj tmp.txt
+expect_false rados -p base_pool get bazobj tmp.txt
+
+rados -p empty_cache ls > tmp.txt
+expect_false diff -q tmp.txt empty.txt
+rados -p base_pool ls > tmp2.txt
+diff -q tmp.txt tmp2.txt
\ No newline at end of file