Whamcloud - gitweb
LU-8788 tests: modify create_pool to use as wrapper
[fs/lustre-release.git] / lustre / tests / ost-pools.sh
index 104268c..b3c205d 100755 (executable)
@@ -26,7 +26,7 @@ init_logging
 
 check_and_setup_lustre
 
-#                                  9  12.5  (min)"
+#                                  9  12.5 (min)"
 [ "$SLOW" = "no" ] && EXCEPT_SLOW="18 23b"
 
 DIR=${DIR:-$MOUNT}
@@ -88,9 +88,9 @@ create_file() {
 osts_in_pool() {
        local pool=$1
        local res
-       for i in $(do_facet mgs lctl pool_list $FSNAME.$pool |
-               grep -v "^Pool:" | sed -e 's/_UUID$//;s/^.*-OST//'); do
-        res="$res $(printf "%d" 0x$i)"
+       for i in $(list_pool $FSNAME.$pool |
+               sed -e 's/_UUID$//;s/^.*-OST//'); do
+               res="$res $(printf "%d" 0x$i)"
        done
        echo $res
 }
@@ -178,29 +178,37 @@ add_pool() {
        local RC=$?
        [[ $RC -ne 0 ]] && return $RC
 
+       # wait for OSTs to be added to the pool
+       for mds_id in $(seq $MDSCOUNT); do
+               local mdt_id=$((mds_id-1))
+               local lodname=$FSNAME-MDT$(printf "%04x" $mdt_id)-mdtlov
+               wait_update_facet mds$mds_id \
+                       "lctl get_param -n lod.$lodname.pools.$pool |
+                               sort -u | tr '\n' ' ' " "$tgt" >/dev/null ||
+                       error "mds$mds_id:pool add failed $1; $2"
+       done
        wait_update $HOSTNAME "lctl get_param -n lov.$FSNAME-*.pools.$pool |
-               sort -u | tr '\n' ' ' " "$tgt" >/dev/null || RC=1
-       [[ $RC -ne 0 ]] && error "pool_add failed: $1; $2"
+               sort -u | tr '\n' ' ' " "$tgt" >/dev/null ||
+               error "pool_add failed: $1; $2"
        return $RC
 }
 
 create_pool_nofail() {
-    create_pool $FSNAME.$1
-    if [[ $? != 0 ]]; then
-        error "Pool creation of $1 failed"
-    fi
+       create_pool $FSNAME.$1
+       [[ $? -ne 0 ]] && error "Pool creation of $1 failed"
+       return 0
 }
 
 create_pool_fail() {
-    create_pool $FSNAME.$1
-    if [[ $? == 0 ]]; then
-        error "Pool creation of $1 succeeded; should have failed"
-    fi
+       create_pool $FSNAME.$1
+       [[ $? -ne 0 ]] ||
+               error "Pool creation of $1 succeeded; should have failed"
+       return 0
 }
 
 cleanup_tests() {
        # Destroy pools from previous test runs
-       for p in $(do_facet mgs lctl pool_list $FSNAME | grep $POOL); do
+       for p in $(list_pool $FSNAME | grep $POOL); do
                destroy_pool_int $p;
        done
        rm -rf $DIR/d0.${TESTSUITE}
@@ -258,7 +266,7 @@ run_test 1e "Create a pool with a 1000 char pool name; should fail"
 
 test_1f() {
        set_cleanup_trap
-       do_facet mgs lctl pool_new .$POOL 2>/dev/null
+       create_pool .$POOL
        [[ $? -ne 0 ]] ||
                error "pool_new did not fail even though fs-name was missing"
 }
@@ -266,7 +274,7 @@ run_test 1f "pool_new should fail if fs-name is missing"
 
 test_1g() {
        set_cleanup_trap
-       do_facet mgs lctl pool_new $POOL 2>/dev/null
+       create_pool $POOL
        [[ $? -ne 0 ]] ||
                error "pool_new did not fail even though fs-name was missing"
 }
@@ -274,7 +282,7 @@ run_test 1g "pool_new should fail if fs-name is missing"
 
 test_1h() {
        set_cleanup_trap
-       do_facet mgs lctl pool_new ${FSNAME}. 2>/dev/null
+       create_pool ${FSNAME}.
        [[ $? -ne 0 ]] ||
                error "pool_new did not fail even though pool name was missing"
 }
@@ -282,32 +290,32 @@ run_test 1h "pool_new should fail if poolname is missing"
 
 test_1i() {
        set_cleanup_trap
-       do_facet mgs lctl pool_new . 2>/dev/null
+       create_pool .
        [[ $? -ne 0 ]] ||
-               error "pool_new did not fail even if pool and fs-name were missing"
+               error "pool_new did not fail even if pool/fs-name was missing"
 }
 run_test 1i "pool_new should fail if poolname and fs-name are missing"
 
 test_1j() {
        set_cleanup_trap
-       do_facet mgs lctl pool_new ${FSNAME},$POOL 2>/dev/null
+       create_pool ${FSNAME},$POOL
        [[ $? -ne 0 ]] ||
-               error "pool_new did not fail even though pool name format was wrong"
+               error "pool_new did not fail even if poolname format was wrong"
 }
 run_test 1j "pool_new should fail if poolname format is wrong"
 
 test_1k() {
        set_cleanup_trap
-       do_facet mgs lctl pool_new ${FSNAME}/$POOL 2>/dev/null
+       create_pool ${FSNAME}/$POOL
        [[ $? -ne 0 ]] ||
-               error "pool_new did not fail even though pool name format was wrong"
+               error "pool_new did not fail even if poolname format was wrong"
 }
 run_test 1k "pool_new should fail if poolname format is wrong"
 
 test_1m() {
        set_cleanup_trap
        create_pool_nofail $POOL2
-       do_facet mgs lctl pool_new ${FSNAME}.$POOL2 2>/dev/null
+       create_pool ${FSNAME}.$POOL2
        [[ $? -ne 0 ]] ||
                error "pool_new did not fail even though $POOL2 existed"
        destroy_pool $POOL2
@@ -695,19 +703,19 @@ run_test 7a "create various pool name"
 test_7b()
 {
        # No fsname
-       do_facet mgs lctl pool_new qwerty
+       create_pool qwerty
        [ $? -ne 22 ] && error "can create a pool with no fsname"
 
        # No pool name
-       do_facet mgs lctl pool_new $FSNAME.
+       create_pool $FSNAME.
        [ $? -ne 22 ] && error "can create a pool with no name"
 
        # Invalid character
-       do_facet mgs lctl pool_new $FSNAME.0123456789^bdef
+       create_pool $FSNAME.0123456789^bdef
        [ $? -ne 22 ] && error "can create a pool with an invalid name"
 
        # Too long
-       do_facet mgs lctl pool_new $FSNAME.0123456789abdefg
+       create_pool $FSNAME.0123456789abdefg
        [ $? -ne 36 ] && error "can create a pool with a name too long"
 
        return 0
@@ -1414,9 +1422,13 @@ test_23b() {
 run_test 23b "OST pools and OOS"
 
 test_24() {
-    set_cleanup_trap
-    local POOL_ROOT=${POOL_ROOT:-$DIR/$tdir}
-    [[ $OSTCOUNT -le 1 ]] && skip_env "Need at least 2 OSTs" && return
+       set_cleanup_trap
+       local POOL_ROOT=${POOL_ROOT:-$DIR/$tdir}
+       [[ $OSTCOUNT -le 1 ]] && skip_env "Need at least 2 OSTs" && return
+
+       local server_version=$(lustre_version_code $SINGLEMDS)
+               [[ $server_version -ge $(version_code 2.8.56) ]] ||
+               { skip "Need server version newer than 2.8.55"; return 0; }
 
     local numfiles=10
     local i=0