]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
test: Cleanup test-erasure-eio.sh code 18145/head
authorDavid Zafman <dzafman@redhat.com>
Thu, 12 Oct 2017 03:16:44 +0000 (20:16 -0700)
committerDavid Zafman <dzafman@redhat.com>
Wed, 18 Oct 2017 18:12:14 +0000 (11:12 -0700)
Signed-off-by: David Zafman <dzafman@redhat.com>
qa/standalone/erasure-code/test-erasure-eio.sh

index 8404f7e000be6d27dd774ba4d181c1b592371f58..13b64f1238b7f25dfb35c2be60bc433af9fbddb6 100755 (executable)
@@ -123,39 +123,6 @@ function rados_get() {
     rm $dir/COPY
 }
 
-function rados_put_get() {
-    local dir=$1
-    local poolname=$2
-    local objname=${3:-SOMETHING}
-    local recovery=$4
-
-    #
-    # get and put an object, compare they are equal
-    #
-    rados_put $dir $poolname $objname || return 1
-    # We can read even though caller injected read error on one of the shards
-    rados_get $dir $poolname $objname || return 1
-
-    if [ -n "$recovery" ];
-    then
-        #
-        # take out the last OSD used to store the object,
-        # bring it back, and check for clean PGs which means
-        # recovery didn't crash the primary.
-        #
-        local -a initial_osds=($(get_osds $poolname $objname))
-        local last_osd=${initial_osds[-1]}
-        # Kill OSD
-        kill_daemons $dir TERM osd.${last_osd} >&2 < /dev/null || return 1
-        ceph osd out ${last_osd} || return 1
-        ! get_osds $poolname $objname | grep '\<'${last_osd}'\>' || return 1
-        ceph osd in ${last_osd} || return 1
-        run_osd $dir ${last_osd} || return 1
-        wait_for_clean || return 1
-    fi
-
-    rm $dir/ORIGINAL
-}
 
 function inject_remove() {
     local pooltype=$1
@@ -176,33 +143,15 @@ function inject_remove() {
     objectstore_tool $dir $osd_id $objname remove || return 1
 }
 
-function rados_get_data_recovery() {
-    local inject=$1
-    shift
-    local dir=$1
-    shift
-    local shard_id=$1
-
-    # inject eio to speificied shard
-    #
-    local poolname=pool-jerasure
-    local objname=obj-$inject-$$-$shard_id
-    inject_$inject ec data $poolname $objname $dir $shard_id || return 1
-    rados_put_get $dir $poolname $objname recovery || return 1
-
-    shard_id=$(expr $shard_id + 1)
-    inject_$inject ec data $poolname $objname $dir $shard_id || return 1
-    # Now 2 out of 3 shards get EIO, so should fail
-    rados_get $dir $poolname $objname fail || return 1
-}
-
 # Test with an inject error
-function rados_get_data() {
+function rados_put_get_data() {
     local inject=$1
     shift
     local dir=$1
     shift
     local shard_id=$1
+    shift
+    local arg=$1
 
     # inject eio to speificied shard
     #
@@ -212,10 +161,29 @@ function rados_get_data() {
     inject_$inject ec data $poolname $objname $dir $shard_id || return 1
     rados_get $dir $poolname $objname || return 1
 
+    if [ "$arg" = "recovery" ];
+    then
+        #
+        # take out the last OSD used to store the object,
+        # bring it back, and check for clean PGs which means
+        # recovery didn't crash the primary.
+        #
+        local -a initial_osds=($(get_osds $poolname $objname))
+        local last_osd=${initial_osds[-1]}
+        # Kill OSD
+        kill_daemons $dir TERM osd.${last_osd} >&2 < /dev/null || return 1
+        ceph osd out ${last_osd} || return 1
+        ! get_osds $poolname $objname | grep '\<'${last_osd}'\>' || return 1
+        ceph osd in ${last_osd} || return 1
+        run_osd $dir ${last_osd} || return 1
+        wait_for_clean || return 1
+    fi
+
     shard_id=$(expr $shard_id + 1)
     inject_$inject ec data $poolname $objname $dir $shard_id || return 1
     # Now 2 out of 3 shards get an error, so should fail
     rados_get $dir $poolname $objname fail || return 1
+    rm $dir/ORIGINAL
 }
 
 # Change the size of speificied shard
@@ -273,6 +241,7 @@ function rados_get_data_bad_size() {
     shard_id=$(expr $shard_id + 1)
     set_size $objname $dir $shard_id $bytes $mode || return 1
     rados_get $dir $poolname $objname fail || return 1
+    rm $dir/ORIGINAL
 }
 
 #
@@ -290,7 +259,7 @@ function TEST_rados_get_subread_eio_shard_0() {
     create_erasure_coded_pool $poolname 2 1 || return 1
     # inject eio on primary OSD (0) and replica OSD (1)
     local shard_id=0
-    rados_get_data eio $dir $shard_id || return 1
+    rados_put_get_data eio $dir $shard_id || return 1
     delete_pool $poolname
 }
 
@@ -302,7 +271,7 @@ function TEST_rados_get_subread_eio_shard_1() {
     create_erasure_coded_pool $poolname 2 1 || return 1
     # inject eio into replicas OSD (1) and OSD (2)
     local shard_id=1
-    rados_get_data eio $dir $shard_id || return 1
+    rados_put_get_data eio $dir $shard_id || return 1
     delete_pool $poolname
 }
 
@@ -317,7 +286,7 @@ function TEST_rados_get_subread_missing() {
     create_erasure_coded_pool $poolname 2 1 || return 1
     # inject remove into replicas OSD (1) and OSD (2)
     local shard_id=1
-    rados_get_data remove $dir $shard_id || return 1
+    rados_put_get_data remove $dir $shard_id || return 1
     delete_pool $poolname
 }
 
@@ -366,23 +335,21 @@ function TEST_rados_get_with_subreadall_eio_shard_0() {
     local poolname=pool-jerasure
     create_erasure_coded_pool $poolname 2 1 || return 1
     # inject eio on primary OSD (0)
-    local shard_id=0
-    rados_get_data_recovery eio $dir $shard_id || return 1
+    rados_put_get_data eio $dir $shard_id recovery || return 1
 
     delete_pool $poolname
 }
 
 function TEST_rados_get_with_subreadall_eio_shard_1() {
     local dir=$1
-    local shard_id=0
+    local shard_id=1
 
     setup_osds 4 || return 1
 
     local poolname=pool-jerasure
     create_erasure_coded_pool $poolname 2 1 || return 1
     # inject eio on replica OSD (1)
-    local shard_id=1
-    rados_get_data_recovery eio $dir $shard_id || return 1
+    rados_put_get_data eio $dir $shard_id recovery || return 1
 
     delete_pool $poolname
 }
@@ -410,8 +377,6 @@ function TEST_ec_recovery_errors() {
     # Cluster should recover this object
     wait_for_clean || return 1
 
-    #rados_get_data_recovery eio $dir $shard_id || return 1
-
     delete_pool $poolname
 }