diff --git a/tests/run_3osds.sh b/tests/run_3osds.sh index f6d380fc..11f84e3e 100644 --- a/tests/run_3osds.sh +++ b/tests/run_3osds.sh @@ -61,15 +61,31 @@ fi POOLCFG='"name":"testpool","failure_domain":"osd",'$POOLCFG $ETCDCTL put /vitastor/config/pools '{"1":{'$POOLCFG',"pg_size":'$PG_SIZE',"pg_minsize":'$PG_MINSIZE',"pg_count":'$PG_COUNT'}}' -sleep 2 +wait_up() +{ + local sec=$1 + local i=0 + local configured=0 + while [[ $i -lt $sec ]]; do + if $ETCDCTL get /vitastor/config/pgs --print-value-only | jq -s -e '(. | length) != 0 and ([ .[0].items["1"][] | + select(((.osd_set | select(. != 0) | sort | unique) | length) == '$PG_SIZE') ] | length) == '$PG_COUNT; then + configured=1 + if $ETCDCTL get /vitastor/pg/state/1/ --prefix --print-value-only | jq -s -e '[ .[] | select(.state == ["active"]) ] | length == '$PG_COUNT; then + break + fi + fi + sleep 1 + i=$((i+1)) + if [ $i -eq $sec ]; then + if [[ $configured -ne 0 ]]; then + format_error "FAILED: $PG_COUNT PG(s) NOT CONFIGURED" + fi + format_error "FAILED: $PG_COUNT PG(s) NOT UP" + fi + done +} -if ! ($ETCDCTL get /vitastor/config/pgs --print-value-only | jq -s -e '(.[0].items["1"] | map((.osd_set | select(. > 0)) | length == '$PG_SIZE') | length) == '$PG_COUNT); then - format_error "FAILED: $PG_COUNT PGS NOT CONFIGURED" -fi - -if ! ($ETCDCTL get --prefix /vitastor/pg/state/ --print-value-only | jq -s -e '([ .[] | select(.state == ["active"]) ] | length) == '$PG_COUNT); then - format_error "FAILED: $PG_COUNT PGS NOT UP" -fi +wait_up 60 try_reweight() { diff --git a/tests/test_add_osd.sh b/tests/test_add_osd.sh index e03ce4f6..ec900d3f 100755 --- a/tests/test_add_osd.sh +++ b/tests/test_add_osd.sh @@ -1,6 +1,6 @@ #!/bin/bash -ex -PG_COUNT=16 +PG_COUNT=2048 . `dirname $0`/run_3osds.sh @@ -42,7 +42,7 @@ sleep 2 for i in {1..10}; do ($ETCDCTL get /vitastor/config/pgs --print-value-only |\ jq -s -e '([ .[0].items["1"] | map(.osd_set)[][] ] | sort | unique == ["1","2","3"])') && \ - ($ETCDCTL get --prefix /vitastor/pg/state/ --print-value-only | jq -s -e '([ .[] | select(.state == ["active"]) ] | length) == '$PG_COUNT'') && \ + ($ETCDCTL get --prefix /vitastor/pg/state/ --print-value-only | jq -s -e '([ .[] | select(.state == ["active"] or .state == ["active", "left_on_dead"]) ] | length) == '$PG_COUNT'') && \ break sleep 1 done @@ -52,7 +52,7 @@ if ! ($ETCDCTL get /vitastor/config/pgs --print-value-only |\ format_error "FAILED: OSD NOT REMOVED FROM DISTRIBUTION" fi -if ! ($ETCDCTL get --prefix /vitastor/pg/state/ --print-value-only | jq -s -e '([ .[] | select(.state == ["active"]) ] | length) == '$PG_COUNT''); then +if ! ($ETCDCTL get --prefix /vitastor/pg/state/ --print-value-only | jq -s -e '([ .[] | select(.state == ["active"] or .state == ["active", "left_on_dead"]) ] | length) == '$PG_COUNT''); then format_error "FAILED: $PG_COUNT PGS NOT ACTIVE" fi