]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
tests: tiering agent and proxy read 5813/head
authorLoic Dachary <ldachary@redhat.com>
Thu, 13 Aug 2015 17:41:47 +0000 (19:41 +0200)
committerNathan Cutler <ncutler@suse.com>
Fri, 4 Sep 2015 15:17:10 +0000 (17:17 +0200)
Verify that an object promoted to a cache tier because of a proxy read
is evicted as expected.

http://tracker.ceph.com/issues/12673 Refs: #12673

Signed-off-by: Loic Dachary <ldachary@redhat.com>
(cherry picked from commit 7924231930732bd297d3bd034c8295e96cb81088)

Conflicts:
qa/workunits/cephtool/test.sh
            resolved by manually adding the new test to TESTS

qa/workunits/cephtool/test.sh

index 5fd6a188c8b4503f0c02eecaf00b4415ddaf09e1..bca767dea2e454dd1d1dbd95db9917bbace993d8 100755 (executable)
@@ -116,6 +116,49 @@ function test_mon_injectargs_SI()
   $SUDO ceph daemon mon.a config set mon_pg_warn_min_objects $initial_value
 }
 
+function test_tiering_agent()
+{
+  local slow=slow_eviction
+  local fast=fast_eviction
+  ceph osd pool create $slow  1 1
+  ceph osd pool create $fast  1 1
+  ceph osd tier add $slow $fast
+  ceph osd tier cache-mode $fast writeback
+  ceph osd tier set-overlay $slow $fast
+  ceph osd pool set $fast hit_set_type bloom
+  rados -p $slow put obj1 /etc/group
+  ceph osd pool set $fast target_max_objects  1
+  ceph osd pool set $fast hit_set_count 1
+  ceph osd pool set $fast hit_set_period 5
+  # wait for the object to be evicted from the cache
+  local evicted
+  evicted=false
+  for i in 1 2 4 8 16 32 64 128 256 ; do
+      if ! rados -p $fast ls | grep obj1 ; then
+          evicted=true
+          break
+      fi
+      sleep $i
+  done
+  $evicted # assert
+  # the object is proxy read and promoted to the cache
+  rados -p $slow get obj1 /tmp/obj1
+  # wait for the promoted object to be evicted again
+  evicted=false
+  for i in 1 2 4 8 16 32 64 128 256 ; do
+      if ! rados -p $fast ls | grep obj1 ; then
+          evicted=true
+          break
+      fi
+      sleep $i
+  done
+  $evicted # assert
+  ceph osd tier remove-overlay $slow
+  ceph osd tier remove $slow $fast
+  ceph osd pool delete $fast $fast --yes-i-really-really-mean-it
+  ceph osd pool delete $slow $slow --yes-i-really-really-mean-it
+}
+
 function test_tiering()
 {
   # tiering
@@ -900,6 +943,7 @@ set +x
 TESTS=(
   mon_injectargs_SI
   tiering
+  tiering_agent
   auth
   mon_misc
   mon_mds