8 if "$@"; then return 1; else return 0; fi
11 # create pools, set up tier relationship
12 ceph osd pool create base_pool
2
13 ceph osd pool create partial_wrong
2
14 ceph osd pool create wrong_cache
2
15 ceph osd tier add base_pool partial_wrong
16 ceph osd tier add base_pool wrong_cache
18 # populate base_pool with some data
22 rados
-p base_pool put fooobj foo.txt
23 rados
-p base_pool put barobj bar.txt
24 # fill in wrong_cache backwards so we can tell we read from it
25 rados
-p wrong_cache put fooobj bar.txt
26 rados
-p wrong_cache put barobj foo.txt
27 # partial_wrong gets barobj backwards so we can check promote and non-promote
28 rados
-p partial_wrong put barobj foo.txt
30 # get the objects back before setting a caching pool
31 rados
-p base_pool get fooobj tmp.txt
32 diff -q tmp.txt foo.txt
33 rados
-p base_pool get barobj tmp.txt
34 diff -q tmp.txt bar.txt
36 # set up redirect and make sure we get backwards results
37 ceph osd tier set-overlay base_pool wrong_cache
38 ceph osd tier cache-mode wrong_cache writeback
39 rados
-p base_pool get fooobj tmp.txt
40 diff -q tmp.txt bar.txt
41 rados
-p base_pool get barobj tmp.txt
42 diff -q tmp.txt foo.txt
44 # switch cache pools and make sure we're doing promote
45 ceph osd tier remove-overlay base_pool
46 ceph osd tier set-overlay base_pool partial_wrong
47 ceph osd tier cache-mode partial_wrong writeback
48 rados
-p base_pool get fooobj tmp.txt
49 diff -q tmp.txt foo.txt
# hurray, it promoted!
50 rados
-p base_pool get barobj tmp.txt
51 diff -q tmp.txt foo.txt
# yep, we read partial_wrong's local object!
53 # try a nonexistent object and make sure we get an error
54 expect_false rados
-p base_pool get bazobj tmp.txt
56 # drop the cache entirely and make sure contents are still the same
57 ceph osd tier remove-overlay base_pool
58 rados
-p base_pool get fooobj tmp.txt
59 diff -q tmp.txt foo.txt
60 rados
-p base_pool get barobj tmp.txt
61 diff -q tmp.txt bar.txt
63 # create an empty cache pool and make sure it has objects after reading
64 ceph osd pool create empty_cache
2
67 rados
-p empty_cache
ls > tmp.txt
68 diff -q tmp.txt empty.txt
70 ceph osd tier add base_pool empty_cache
71 ceph osd tier set-overlay base_pool empty_cache
72 ceph osd tier cache-mode empty_cache writeback
73 rados
-p base_pool get fooobj tmp.txt
74 rados
-p base_pool get barobj tmp.txt
75 expect_false rados
-p base_pool get bazobj tmp.txt
77 rados
-p empty_cache
ls > tmp.txt
78 expect_false
diff -q tmp.txt empty.txt
81 ceph osd tier remove-overlay base_pool
82 ceph osd tier remove base_pool wrong_cache
83 ceph osd tier remove base_pool partial_wrong
84 ceph osd tier remove base_pool empty_cache
85 ceph osd pool delete base_pool base_pool
--yes-i-really-really-mean-it
86 ceph osd pool delete empty_cache empty_cache
--yes-i-really-really-mean-it
87 ceph osd pool delete wrong_cache wrong_cache
--yes-i-really-really-mean-it
88 ceph osd pool delete partial_wrong partial_wrong
--yes-i-really-really-mean-it
91 ceph osd pool create base
8
92 ceph osd pool create cache
8
94 ceph osd tier add base cache
95 ceph osd tier cache-mode cache writeback
96 ceph osd tier set-overlay base cache
98 # cache-flush, cache-evict
99 rados
-p base put foo
/etc
/passwd
100 expect_false rados
-p base cache-evict foo
101 expect_false rados
-p base cache-flush foo
102 expect_false rados
-p cache cache-evict foo
103 rados
-p cache cache-flush foo
104 rados
-p cache cache-evict foo
105 rados
-p cache
ls - |
wc -l |
grep 0
107 # cache-try-flush, cache-evict
108 rados
-p base put foo
/etc
/passwd
109 expect_false rados
-p base cache-evict foo
110 expect_false rados
-p base cache-flush foo
111 expect_false rados
-p cache cache-evict foo
112 rados
-p cache cache-try-flush foo
113 rados
-p cache cache-evict foo
114 rados
-p cache
ls - |
wc -l |
grep 0
116 # cache-flush-evict-all
117 rados
-p base put bar
/etc
/passwd
118 rados
-p cache
ls - |
wc -l |
grep 1
119 expect_false rados
-p base cache-flush-evict-all
120 rados
-p cache cache-flush-evict-all
121 rados
-p cache
ls - |
wc -l |
grep 0
123 # cache-try-flush-evict-all
124 rados
-p base put bar
/etc
/passwd
125 rados
-p cache
ls - |
wc -l |
grep 1
126 expect_false rados
-p base cache-flush-evict-all
127 rados
-p cache cache-try-flush-evict-all
128 rados
-p cache
ls - |
wc -l |
grep 0
130 # cache flush/evit when clone objects exist
131 rados
-p base put testclone
/etc
/passwd
132 rados
-p cache
ls - |
wc -l |
grep 1
133 ceph osd pool mksnap base snap
134 rados
-p base put testclone
/etc
/hosts
135 rados
-p cache cache-flush-evict-all
136 rados
-p cache
ls - |
wc -l |
grep 0
138 ceph osd tier cache-mode cache forward
--yes-i-really-mean-it
139 rados
-p base
-s snap get testclone testclone.txt
140 diff -q testclone.txt
/etc
/passwd
141 rados
-p base get testclone testclone.txt
142 diff -q testclone.txt
/etc
/hosts
144 # test --with-clones option
145 ceph osd tier cache-mode cache writeback
146 rados
-p base put testclone2
/etc
/passwd
147 rados
-p cache
ls - |
wc -l |
grep 1
148 ceph osd pool mksnap base snap1
149 rados
-p base put testclone2
/etc
/hosts
150 expect_false rados
-p cache cache-flush testclone2
151 rados
-p cache cache-flush testclone2
--with-clones
152 expect_false rados
-p cache cache-evict testclone2
153 rados
-p cache cache-evict testclone2
--with-clones
154 rados
-p cache
ls - |
wc -l |
grep 0
156 rados
-p base
-s snap1 get testclone2 testclone2.txt
157 diff -q testclone2.txt
/etc
/passwd
158 rados
-p base get testclone2 testclone2.txt
159 diff -q testclone2.txt
/etc
/hosts
162 ceph osd tier remove-overlay base
163 ceph osd tier remove base cache
165 ceph osd pool delete cache cache
--yes-i-really-really-mean-it
166 ceph osd pool delete base base
--yes-i-really-really-mean-it