]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
qa: Add common generalized inject_eio() to ceph-helpers.sh
authorDavid Zafman <dzafman@redhat.com>
Wed, 2 Aug 2017 04:35:34 +0000 (21:35 -0700)
committerDavid Zafman <dzafman@redhat.com>
Thu, 10 Aug 2017 15:30:47 +0000 (08:30 -0700)
Retry for a while to allow pool to appear

Signed-off-by: David Zafman <dzafman@redhat.com>
qa/standalone/ceph-helpers.sh
qa/standalone/erasure-code/test-erasure-eio.sh
qa/standalone/scrub/osd-scrub-repair.sh

index 669b9fa16e4f50a0f29e27b1bd83b3bd81c8ccc5..42d1998898d94a0ade9b23befb972b14015eb35c 100755 (executable)
@@ -1925,6 +1925,37 @@ function jq_success() {
   return 1
 }
 
+function inject_eio() {
+    local pooltype=$1
+    shift
+    local which=$1
+    shift
+    local poolname=$1
+    shift
+    local objname=$1
+    shift
+    local dir=$1
+    shift
+    local shard_id=$1
+    shift
+
+    local -a initial_osds=($(get_osds $poolname $objname))
+    local osd_id=${initial_osds[$shard_id]}
+    if [ "$pooltype" != "ec" ]; then
+        shard_id=""
+    fi
+    set_config osd $osd_id filestore_debug_inject_read_err true || return 1
+    local loop=0
+    while ( CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.$osd_id) \
+             inject${which}err $poolname $objname $shard_id | grep -q Invalid ); do
+        loop=$(expr $loop + 1)
+        if [ $loop = "10" ]; then
+            return 1
+        fi
+        sleep 1
+    done
+}
+
 # Local Variables:
 # compile-command: "cd ../../src ; make -j4 && ../qa/standalone/ceph-helpers.sh TESTS # test_get_config"
 # End:
index b26702d5423052f8394f9c0232f4b62d5db280c9..b7880169ede072bc935212fd5fa970f09bd2ae85 100755 (executable)
@@ -142,22 +142,6 @@ function rados_put_get() {
     rm $dir/ORIGINAL
 }
 
-function inject_eio() {
-    local objname=$1
-    shift
-    local dir=$1
-    shift
-    local shard_id=$1
-    shift
-
-    local poolname=pool-jerasure
-    local -a initial_osds=($(get_osds $poolname $objname))
-    local osd_id=${initial_osds[$shard_id]}
-    set_config osd $osd_id filestore_debug_inject_read_err true || return 1
-    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.$osd_id) \
-             injectdataerr $poolname $objname $shard_id || return 1
-}
-
 function rados_get_data_eio() {
     local dir=$1
     shift
@@ -170,11 +154,11 @@ function rados_get_data_eio() {
     #
     local poolname=pool-jerasure
     local objname=obj-eio-$$-$shard_id
-    inject_eio $objname $dir $shard_id || return 1
+    inject_eio 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_eio $objname $dir $shard_id || return 1
+    inject_eio 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
 }
index 64f50b3da0274f8e55496e02875405427a01e083..2af4ea79963482d8b9250114e80b47cc84703933 100755 (executable)
@@ -603,16 +603,10 @@ function TEST_corrupt_scrub_replicated() {
 
     local pg=$(get_pg $poolname ROBJ0)
 
-    set_config osd 0 filestore_debug_inject_read_err true || return 1
-    set_config osd 1 filestore_debug_inject_read_err true || return 1
-    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.1) \
-             injectdataerr $poolname ROBJ11 || return 1
-    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.0) \
-             injectmdataerr $poolname ROBJ12 || return 1
-    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.0) \
-             injectmdataerr $poolname ROBJ13 || return 1
-    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.1) \
-             injectdataerr $poolname ROBJ13 || return 1
+    inject_eio rep data $poolname ROBJ11 $dir 0 || return 1 # shard 0 of [1, 0], osd.1
+    inject_eio rep mdata $poolname ROBJ12 $dir 1 || return 1 # shard 1 of [1, 0], osd.0
+    inject_eio rep mdata $poolname ROBJ13 $dir 1 || return 1 # shard 1 of [1, 0], osd.0
+    inject_eio rep data $poolname ROBJ13 $dir 0 || return 1 # shard 0 of [1, 0], osd.1
 
     pg_scrub $pg
 
@@ -975,16 +969,10 @@ EOF
     objectstore_tool $dir 1 $objname set-attr _ $dir/oi
     rm $dir/oi
 
-    set_config osd 0 filestore_debug_inject_read_err true || return 1
-    set_config osd 1 filestore_debug_inject_read_err true || return 1
-    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.1) \
-             injectdataerr $poolname ROBJ11 || return 1
-    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.0) \
-             injectmdataerr $poolname ROBJ12 || return 1
-    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.0) \
-             injectmdataerr $poolname ROBJ13 || return 1
-    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.1) \
-             injectdataerr $poolname ROBJ13 || return 1
+    inject_eio rep data $poolname ROBJ11 $dir 0 || return 1 # shard 0 of [1, 0], osd.1
+    inject_eio rep mdata $poolname ROBJ12 $dir 1 || return 1 # shard 1 of [1, 0], osd.0
+    inject_eio rep mdata $poolname ROBJ13 $dir 1 || return 1 # shard 1 of [1, 0], osd.0
+    inject_eio rep data $poolname ROBJ13 $dir 0 || return 1 # shard 0 of [1, 0], osd.1
     pg_deep_scrub $pg
 
     rados list-inconsistent-pg $poolname > $dir/json || return 1