]> git.proxmox.com Git - ceph.git/blob - ceph/qa/workunits/rados/test_dedup_tool.sh
update ceph source to reef 18.1.2
[ceph.git] / ceph / qa / workunits / rados / test_dedup_tool.sh
1 #!/usr/bin/env bash
2
3 set -x
4
5 die() {
6 echo "$@"
7 exit 1
8 }
9
10 do_run() {
11 if [ "$1" == "--tee" ]; then
12 shift
13 tee_out="$1"
14 shift
15 "$@" | tee $tee_out
16 else
17 "$@"
18 fi
19 }
20
21 run_expect_succ() {
22 echo "RUN_EXPECT_SUCC: " "$@"
23 do_run "$@"
24 [ $? -ne 0 ] && die "expected success, but got failure! cmd: $@"
25 }
26
27 run() {
28 echo "RUN: " $@
29 do_run "$@"
30 }
31
32 if [ -n "$CEPH_BIN" ] ; then
33 # CMake env
34 RADOS_TOOL="$CEPH_BIN/rados"
35 CEPH_TOOL="$CEPH_BIN/ceph"
36 DEDUP_TOOL="$CEPH_BIN/ceph-dedup-tool"
37 else
38 # executables should be installed by the QA env
39 RADOS_TOOL=$(which rados)
40 CEPH_TOOL=$(which ceph)
41 DEDUP_TOOL=$(which ceph-dedup-tool)
42 fi
43
44 POOL=dedup_pool
45 OBJ=test_rados_obj
46
47 [ -x "$RADOS_TOOL" ] || die "couldn't find $RADOS_TOOL binary to test"
48 [ -x "$CEPH_TOOL" ] || die "couldn't find $CEPH_TOOL binary to test"
49
50 run_expect_succ "$CEPH_TOOL" osd pool create "$POOL" 8
51 sleep 5
52
53 function test_dedup_ratio_fixed()
54 {
55 # case 1
56 dd if=/dev/urandom of=dedup_object_1k bs=1K count=1
57 for num in `seq 1 50`
58 do
59 dd if=dedup_object_1k of=dedup_object_100k bs=1K oflag=append conv=notrunc
60 done
61 for num in `seq 1 50`
62 do
63 dd if=/dev/zero of=dedup_object_100k bs=1K count=1 oflag=append conv=notrunc
64 done
65
66 $RADOS_TOOL -p $POOL put $OBJ ./dedup_object_100k
67 RESULT=$($DEDUP_TOOL --op estimate --pool $POOL --chunk-size 1024 --chunk-algorithm fixed --fingerprint-algorithm sha1 | grep chunk_size_average | awk '{print$2}' | sed "s/\,//g")
68 # total size / the number of deduped object = 100K / 1
69 if [ 51200 -ne $RESULT ];
70 then
71 die "Estimate failed expecting 51200 result $RESULT"
72 fi
73
74 # case 2
75 dd if=/dev/zero of=dedup_object_10m bs=10M count=1
76
77 $RADOS_TOOL -p $POOL put $OBJ ./dedup_object_10m
78 RESULT=$($DEDUP_TOOL --op estimate --pool $POOL --chunk-size 4096 --chunk-algorithm fixed --fingerprint-algorithm sha1 | grep examined_bytes | awk '{print$2}')
79 # 10485760
80 if [ 10485760 -ne $RESULT ];
81 then
82 die "Estimate failed expecting 10485760 result $RESULT"
83 fi
84
85 # case 3 max_thread
86 for num in `seq 0 20`
87 do
88 dd if=/dev/zero of=dedup_object_$num bs=4M count=1
89 $RADOS_TOOL -p $POOL put dedup_object_$num ./dedup_object_$num
90 done
91
92 RESULT=$($DEDUP_TOOL --op estimate --pool $POOL --chunk-size 4096 --chunk-algorithm fixed --fingerprint-algorithm sha1 --max-thread 4 | grep chunk_size_average | awk '{print$2}' | sed "s/\,//g")
93
94 if [ 98566144 -ne $RESULT ];
95 then
96 die "Estimate failed expecting 98566144 result $RESULT"
97 fi
98
99 rm -rf ./dedup_object_1k ./dedup_object_100k ./dedup_object_10m
100 for num in `seq 0 20`
101 do
102 rm -rf ./dedup_object_$num
103 done
104 $RADOS_TOOL -p $POOL rm $OBJ
105 for num in `seq 0 20`
106 do
107 $RADOS_TOOL -p $POOL rm dedup_object_$num
108 done
109 }
110
111 function test_dedup_chunk_scrub()
112 {
113
114 CHUNK_POOL=dedup_chunk_pool
115 run_expect_succ "$CEPH_TOOL" osd pool create "$CHUNK_POOL" 8
116
117 echo "hi there" > foo
118
119 echo "hi there" > bar
120
121 echo "there" > foo-chunk
122
123 echo "CHUNK" > bar-chunk
124
125 $CEPH_TOOL osd pool set $POOL fingerprint_algorithm sha1 --yes-i-really-mean-it
126 $CEPH_TOOL osd pool set $POOL dedup_chunk_algorithm fastcdc --yes-i-really-mean-it
127 $CEPH_TOOL osd pool set $POOL dedup_cdc_chunk_size 4096 --yes-i-really-mean-it
128 $CEPH_TOOL osd pool set $POOL dedup_tier $CHUNK_POOL --yes-i-really-mean-it
129
130 $RADOS_TOOL -p $POOL put foo ./foo
131 $RADOS_TOOL -p $POOL put bar ./bar
132
133 $RADOS_TOOL -p $CHUNK_POOL put bar-chunk ./bar-chunk
134 $RADOS_TOOL -p $CHUNK_POOL put foo-chunk ./foo-chunk
135
136 $RADOS_TOOL -p $POOL set-chunk bar 0 8 --target-pool $CHUNK_POOL bar-chunk 0 --with-reference
137
138 echo -n "There hi" > test_obj
139 # dirty
140 $RADOS_TOOL -p $POOL put foo ./test_obj
141 $RADOS_TOOL -p $POOL set-chunk foo 0 8 --target-pool $CHUNK_POOL foo-chunk 0 --with-reference
142 # flush
143 $RADOS_TOOL -p $POOL tier-flush foo
144 sleep 2
145
146 $RADOS_TOOL ls -p $CHUNK_POOL
147 CHUNK_OID=$(echo -n "There hi" | sha1sum | awk '{print $1}')
148
149 POOL_ID=$($CEPH_TOOL osd pool ls detail | grep $POOL | awk '{print$2}')
150 $DEDUP_TOOL --op chunk-get-ref --chunk-pool $CHUNK_POOL --object $CHUNK_OID --target-ref bar --target-ref-pool-id $POOL_ID
151 RESULT=$($DEDUP_TOOL --op dump-chunk-refs --chunk-pool $CHUNK_POOL --object $CHUNK_OID)
152
153 RESULT=$($DEDUP_TOOL --op chunk-scrub --chunk-pool $CHUNK_POOL | grep "Damaged object" | awk '{print$4}')
154 if [ $RESULT -ne "1" ] ; then
155 $CEPH_TOOL osd pool delete $POOL $POOL --yes-i-really-really-mean-it
156 $CEPH_TOOL osd pool delete $CHUNK_POOL $CHUNK_POOL --yes-i-really-really-mean-it
157 die "Chunk-scrub failed expecting damaged objects is not 1"
158 fi
159
160 $DEDUP_TOOL --op chunk-put-ref --chunk-pool $CHUNK_POOL --object $CHUNK_OID --target-ref bar --target-ref-pool-id $POOL_ID
161 RESULT=$($DEDUP_TOOL --op dump-chunk-refs --chunk-pool $CHUNK_POOL --object $CHUNK_OID | grep bar)
162 if [ -n "$RESULT" ] ; then
163 $CEPH_TOOL osd pool delete $POOL $POOL --yes-i-really-really-mean-it
164 $CEPH_TOOL osd pool delete $CHUNK_POOL $CHUNK_POOL --yes-i-really-really-mean-it
165 die "Scrub failed expecting bar is removed"
166 fi
167
168 $CEPH_TOOL osd pool delete $CHUNK_POOL $CHUNK_POOL --yes-i-really-really-mean-it
169
170 rm -rf ./foo ./bar ./foo-chunk ./bar-chunk ./test_obj
171 $RADOS_TOOL -p $POOL rm foo
172 $RADOS_TOOL -p $POOL rm bar
173 }
174
175 function test_dedup_chunk_repair()
176 {
177
178 CHUNK_POOL=dedup_chunk_pool
179 run_expect_succ "$CEPH_TOOL" osd pool create "$CHUNK_POOL" 8
180
181 echo -n "hi there" > foo
182
183 echo -n "hi there" > bar
184
185 echo -n "there" > foo-chunk
186
187 echo -n "CHUNK" > bar-chunk
188
189 $CEPH_TOOL osd pool set $POOL fingerprint_algorithm sha1 --yes-i-really-mean-it
190 $CEPH_TOOL osd pool set $POOL dedup_chunk_algorithm fastcdc --yes-i-really-mean-it
191 $CEPH_TOOL osd pool set $POOL dedup_cdc_chunk_size 4096 --yes-i-really-mean-it
192 $CEPH_TOOL osd pool set $POOL dedup_tier $CHUNK_POOL --yes-i-really-mean-it
193
194 $RADOS_TOOL -p $POOL put foo ./foo
195 $RADOS_TOOL -p $POOL put bar ./bar
196
197 $RADOS_TOOL -p $CHUNK_POOL put bar-chunk ./bar-chunk
198 $RADOS_TOOL -p $CHUNK_POOL put foo-chunk ./foo-chunk
199
200 $RADOS_TOOL ls -p $CHUNK_POOL
201 CHUNK_OID=$(echo -n "hi there" | sha1sum | awk '{print $1}')
202
203 POOL_ID=$($CEPH_TOOL osd pool ls detail | grep $POOL | awk '{print$2}')
204 $RADOS_TOOL -p $CHUNK_POOL put $CHUNK_OID ./foo
205
206 # increase ref count by two, resuling in mismatch
207 $DEDUP_TOOL --op chunk-get-ref --chunk-pool $CHUNK_POOL --object $CHUNK_OID --target-ref foo --target-ref-pool-id $POOL_ID
208 $DEDUP_TOOL --op chunk-get-ref --chunk-pool $CHUNK_POOL --object $CHUNK_OID --target-ref foo --target-ref-pool-id $POOL_ID
209 $DEDUP_TOOL --op chunk-get-ref --chunk-pool $CHUNK_POOL --object $CHUNK_OID --target-ref foo --target-ref-pool-id $POOL_ID
210 $DEDUP_TOOL --op chunk-get-ref --chunk-pool $CHUNK_POOL --object $CHUNK_OID --target-ref foo --target-ref-pool-id $POOL_ID
211 $DEDUP_TOOL --op chunk-get-ref --chunk-pool $CHUNK_POOL --object bar-chunk --target-ref bar --target-ref-pool-id $POOL_ID
212 $DEDUP_TOOL --op chunk-get-ref --chunk-pool $CHUNK_POOL --object bar-chunk --target-ref bar --target-ref-pool-id $POOL_ID
213
214 RESULT=$($DEDUP_TOOL --op dump-chunk-refs --chunk-pool $CHUNK_POOL --object $CHUNK_OID)
215 RESULT=$($DEDUP_TOOL --op chunk-scrub --chunk-pool $CHUNK_POOL | grep "Damaged object" | awk '{print$4}')
216 if [ $RESULT -ne "2" ] ; then
217 $CEPH_TOOL osd pool delete $POOL $POOL --yes-i-really-really-mean-it
218 $CEPH_TOOL osd pool delete $CHUNK_POOL $CHUNK_POOL --yes-i-really-really-mean-it
219 die "Chunk-scrub failed expecting damaged objects is not 1"
220 fi
221
222 $DEDUP_TOOL --op chunk-repair --chunk-pool $CHUNK_POOL --object $CHUNK_OID --target-ref foo --target-ref-pool-id $POOL_ID
223 $DEDUP_TOOL --op chunk-repair --chunk-pool $CHUNK_POOL --object bar-chunk --target-ref bar --target-ref-pool-id $POOL_ID
224
225 RESULT=$($DEDUP_TOOL --op dump-chunk-refs --chunk-pool $CHUNK_POOL --object $CHUNK_OID | grep foo | wc -l)
226 if [ 0 -ne "$RESULT" ] ; then
227 $CEPH_TOOL osd pool delete $POOL $POOL --yes-i-really-really-mean-it
228 $CEPH_TOOL osd pool delete $CHUNK_POOL $CHUNK_POOL --yes-i-really-really-mean-it
229 die "Scrub failed expecting bar is removed"
230 fi
231 RESULT=$($DEDUP_TOOL --op dump-chunk-refs --chunk-pool $CHUNK_POOL --object bar-chunk | grep bar | wc -l)
232 if [ 0 -ne "$RESULT" ] ; then
233 $CEPH_TOOL osd pool delete $POOL $POOL --yes-i-really-really-mean-it
234 $CEPH_TOOL osd pool delete $CHUNK_POOL $CHUNK_POOL --yes-i-really-really-mean-it
235 die "Scrub failed expecting bar is removed"
236 fi
237
238 $CEPH_TOOL osd pool delete $CHUNK_POOL $CHUNK_POOL --yes-i-really-really-mean-it
239
240 rm -rf ./foo ./bar ./foo-chunk ./bar-chunk ./test_obj
241 $RADOS_TOOL -p $POOL rm foo
242 $RADOS_TOOL -p $POOL rm bar
243 }
244
245 function test_dedup_object()
246 {
247
248 CHUNK_POOL=dedup_chunk_pool
249 run_expect_succ "$CEPH_TOOL" osd pool create "$CHUNK_POOL" 8
250
251 echo "There hiHI" > foo
252
253 $CEPH_TOOL osd pool set $POOL dedup_tier $CHUNK_POOL --yes-i-really-mean-it
254 $RADOS_TOOL -p $POOL put foo ./foo
255
256 sleep 2
257
258 rados ls -p $CHUNK_POOL
259
260 RESULT=$($DEDUP_TOOL --pool $POOL --op chunk-dedup --object foo --chunk-pool $CHUNK_POOL --source-off 0 --source-length 10 --fingerprint-algorithm sha1 )
261
262 POOL_ID=$($CEPH_TOOL osd pool ls detail | grep $POOL | awk '{print$2}')
263 CHUNK_OID=$(echo -n "There hiHI" | sha1sum | awk '{print $1}')
264
265 RESULT=$($DEDUP_TOOL --op dump-chunk-refs --chunk-pool $CHUNK_POOL --object $CHUNK_OID | grep foo)
266
267 if [ -z "$RESULT" ] ; then
268 $CEPH_TOOL osd pool delete $POOL $POOL --yes-i-really-really-mean-it
269 $CEPH_TOOL osd pool delete $CHUNK_POOL $CHUNK_POOL --yes-i-really-really-mean-it
270 die "Scrub failed expecting bar is removed"
271 fi
272
273 $RADOS_TOOL -p $CHUNK_POOL get $CHUNK_OID ./chunk
274 VERIFY=$(cat ./chunk | sha1sum | awk '{print $1}')
275 if [ "$CHUNK_OID" != "$VERIFY" ] ; then
276 $CEPH_TOOL osd pool delete $POOL $POOL --yes-i-really-really-mean-it
277 $CEPH_TOOL osd pool delete $CHUNK_POOL $CHUNK_POOL --yes-i-really-really-mean-it
278 die "Comparing failed expecting chunk mismatch"
279 fi
280
281 echo -n "There hihiHI" > bar
282
283 $RADOS_TOOL -p $POOL put bar ./bar
284 RESULT=$($DEDUP_TOOL --pool $POOL --op object-dedup --object bar --chunk-pool $CHUNK_POOL --fingerprint-algorithm sha1 --dedup-cdc-chunk-size 4096)
285
286 CHUNK_OID=$(echo -n "There hihiHI" | sha1sum | awk '{print $1}')
287
288 RESULT=$($DEDUP_TOOL --op dump-chunk-refs --chunk-pool $CHUNK_POOL --object $CHUNK_OID | grep bar)
289 if [ -z "$RESULT" ] ; then
290 $CEPH_TOOL osd pool delete $POOL $POOL --yes-i-really-really-mean-it
291 $CEPH_TOOL osd pool delete $CHUNK_POOL $CHUNK_POOL --yes-i-really-really-mean-it
292 die "Scrub failed expecting bar is removed"
293 fi
294
295 $RADOS_TOOL -p $CHUNK_POOL get $CHUNK_OID ./chunk
296 VERIFY=$(cat ./chunk | sha1sum | awk '{print $1}')
297 if [ "$CHUNK_OID" != "$VERIFY" ] ; then
298 $CEPH_TOOL osd pool delete $POOL $POOL --yes-i-really-really-mean-it
299 $CEPH_TOOL osd pool delete $CHUNK_POOL $CHUNK_POOL --yes-i-really-really-mean-it
300 die "Comparing failed expecting chunk mismatch"
301 fi
302
303 echo -n "THERE HIHIHI" > bar
304 $RADOS_TOOL -p $POOL put bar ./bar
305 $RADOS_TOOL -p $POOL mksnap mysnap
306
307 echo -n "There HIHIHI" > bar
308 $RADOS_TOOL -p $POOL put bar ./bar
309
310 RESULT=$($DEDUP_TOOL --pool $POOL --op object-dedup --object bar --chunk-pool $CHUNK_POOL --fingerprint-algorithm sha1 --dedup-cdc-chunk-size 4096 --snap)
311
312 CHUNK_OID=$(echo -n "THERE HIHIHI" | sha1sum | awk '{print $1}')
313 RESULT=$($DEDUP_TOOL --op dump-chunk-refs --chunk-pool $CHUNK_POOL --object $CHUNK_OID | grep bar)
314 if [ -z "$RESULT" ] ; then
315 $CEPH_TOOL osd pool delete $POOL $POOL --yes-i-really-really-mean-it
316 $CEPH_TOOL osd pool delete $CHUNK_POOL $CHUNK_POOL --yes-i-really-really-mean-it
317 die "Scrub failed expecting bar is removed"
318 fi
319
320 CHUNK_OID=$(echo -n "There HIHIHI" | sha1sum | awk '{print $1}')
321 RESULT=$($DEDUP_TOOL --op dump-chunk-refs --chunk-pool $CHUNK_POOL --object $CHUNK_OID | grep bar)
322 if [ -z "$RESULT" ] ; then
323 $CEPH_TOOL osd pool delete $POOL $POOL --yes-i-really-really-mean-it
324 $CEPH_TOOL osd pool delete $CHUNK_POOL $CHUNK_POOL --yes-i-really-really-mean-it
325 die "Scrub failed expecting bar is removed"
326 fi
327 # rerun tier-flush
328
329 RESULT=$($DEDUP_TOOL --pool $POOL --op object-dedup --object bar --chunk-pool $CHUNK_POOL --fingerprint-algorithm sha1 --dedup-cdc-chunk-size 4096)
330
331 CHUNK_OID=$(echo -n "There HIHIHI" | sha1sum | awk '{print $1}')
332 RESULT=$($DEDUP_TOOL --op dump-chunk-refs --chunk-pool $CHUNK_POOL --object $CHUNK_OID | grep bar)
333 if [ -z "$RESULT" ] ; then
334 $CEPH_TOOL osd pool delete $POOL $POOL --yes-i-really-really-mean-it
335 $CEPH_TOOL osd pool delete $CHUNK_POOL $CHUNK_POOL --yes-i-really-really-mean-it
336 die "Scrub failed expecting bar is removed"
337 fi
338
339 $CEPH_TOOL osd pool delete $CHUNK_POOL $CHUNK_POOL --yes-i-really-really-mean-it
340
341 rm -rf ./foo ./bar ./chunk
342 $RADOS_TOOL -p $POOL rm foo
343 $RADOS_TOOL -p $POOL rm bar
344 }
345
346 function test_sample_dedup()
347 {
348 CHUNK_POOL=dedup_chunk_pool
349 $CEPH_TOOL osd pool delete $POOL $POOL --yes-i-really-really-mean-it
350 $CEPH_TOOL osd pool delete $CHUNK_POOL $CHUNK_POOL --yes-i-really-really-mean-it
351
352 sleep 2
353
354 run_expect_succ "$CEPH_TOOL" osd pool create "$POOL" 8
355 run_expect_succ "$CEPH_TOOL" osd pool create "$CHUNK_POOL" 8
356 run_expect_succ "$CEPH_TOOL" osd pool set "$POOL" dedup_tier "$CHUNK_POOL"
357 run_expect_succ "$CEPH_TOOL" osd pool set "$POOL" dedup_chunk_algorithm fastcdc
358 run_expect_succ "$CEPH_TOOL" osd pool set "$POOL" dedup_cdc_chunk_size 8192
359 run_expect_succ "$CEPH_TOOL" osd pool set "$POOL" fingerprint_algorithm sha1
360
361 # 8 Dedupable objects
362 CONTENT_1="There hiHI"
363 echo $CONTENT_1 > foo
364 for num in `seq 1 8`
365 do
366 $RADOS_TOOL -p $POOL put foo_$num ./foo
367 done
368
369 # 1 Unique object
370 CONTENT_3="There hiHI3"
371 echo $CONTENT_3 > foo3
372 $RADOS_TOOL -p $POOL put foo3_1 ./foo3
373
374 sleep 2
375
376 # Execute dedup crawler
377 RESULT=$($DEDUP_TOOL --pool $POOL --chunk-pool $CHUNK_POOL --op sample-dedup --chunk-algorithm fastcdc --fingerprint-algorithm sha1 --chunk-dedup-threshold 3 --sampling-ratio 50)
378
379 CHUNK_OID_1=$(echo $CONTENT_1 | sha1sum | awk '{print $1}')
380 CHUNK_OID_3=$(echo $CONTENT_3 | sha1sum | awk '{print $1}')
381
382 # Find chunk object has references of 8 dedupable meta objects
383 RESULT=$($DEDUP_TOOL --op dump-chunk-refs --chunk-pool $CHUNK_POOL --object $CHUNK_OID_1)
384 DEDUP_COUNT=0
385 for num in `seq 1 8`
386 do
387 GREP_RESULT=$(echo $RESULT | grep foo_$num)
388 if [ -n "$GREP_RESULT" ]; then
389 DEDUP_COUNT=$(($DEDUP_COUNT + 1))
390 fi
391 done
392 if [ $DEDUP_COUNT -lt 2 ]; then
393 $CEPH_TOOL osd pool delete $POOL $POOL --yes-i-really-really-mean-it
394 $CEPH_TOOL osd pool delete $CHUNK_POOL $CHUNK_POOL --yes-i-really-really-mean-it
395 die "Chunk object has no reference of first meta object"
396 fi
397
398 # 7 Duplicated objects but less than chunk dedup threshold
399 CONTENT_2="There hiHI2"
400 echo $CONTENT_2 > foo2
401 for num in `seq 1 7`
402 do
403 $RADOS_TOOL -p $POOL put foo2_$num ./foo2
404 done
405 CHUNK_OID_2=$(echo $CONTENT_2 | sha1sum | awk '{print $1}')
406
407 RESULT=$($DEDUP_TOOL --pool $POOL --chunk-pool $CHUNK_POOL --op sample-dedup --chunk-algorithm fastcdc --fingerprint-algorithm sha1 --sampling-ratio 100 --chunk-dedup-threshold 2)
408
409 # Objects duplicates less than chunk dedup threshold should be deduplicated because of they satisfies object-dedup-threshold
410 # The only object, which is crawled at the very first, should not be deduplicated because it was not duplicated at initial time
411 RESULT=$($DEDUP_TOOL --op dump-chunk-refs --chunk-pool $CHUNK_POOL --object $CHUNK_OID_2)
412 DEDUP_COUNT=0
413 for num in `seq 1 7`
414 do
415 GREP_RESULT=$(echo $RESULT | grep foo2_$num)
416 if [ -n "$GREP_RESULT" ]; then
417 DEDUP_COUNT=$(($DEDUP_COUNT + 1))
418 fi
419 done
420 if [ $DEDUP_COUNT -ne 6 ]; then
421 $CEPH_TOOL osd pool delete $POOL $POOL --yes-i-really-really-mean-it
422 $CEPH_TOOL osd pool delete $CHUNK_POOL $CHUNK_POOL --yes-i-really-really-mean-it
423 die "Chunk object has no reference of first meta object"
424 fi
425
426 # Unique object should not be deduplicated
427 RESULT=$($DEDUP_TOOL --op dump-chunk-refs --chunk-pool $CHUNK_POOL --object $CHUNK_OID_3)
428 GREP_RESULT=$($RESULT | grep $CHUNK_OID_3)
429 if [ -n "$GREP_RESULT" ]; then
430 $CEPH_TOOL osd pool delete $POOL $POOL --yes-i-really-really-mean-it
431 $CEPH_TOOL osd pool delete $CHUNK_POOL $CHUNK_POOL --yes-i-really-really-mean-it
432 die "Chunk object has no reference of second meta object"
433 fi
434
435 rm -rf ./foo ./foo2 ./foo3
436 for num in `seq 1 8`
437 do
438 $RADOS_TOOL -p $POOL rm foo_$num
439 done
440 for num in `seq 1 2`
441 do
442 $RADOS_TOOL -p $POOL rm foo2_$num
443 done
444 $RADOS_TOOL -p $POOL rm foo3_1
445
446 $CEPH_TOOL osd pool delete $CHUNK_POOL $CHUNK_POOL --yes-i-really-really-mean-it
447 }
448
449 test_dedup_ratio_fixed
450 test_dedup_chunk_scrub
451 test_dedup_chunk_repair
452 test_dedup_object
453 test_sample_dedup
454
455 $CEPH_TOOL osd pool delete $POOL $POOL --yes-i-really-really-mean-it
456
457 echo "SUCCESS!"
458 exit 0