]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: add osd crush create-erasure functional tests
authorLoic Dachary <loic@dachary.org>
Sun, 16 Mar 2014 15:54:40 +0000 (16:54 +0100)
committerLoic Dachary <loic@dachary.org>
Mon, 17 Mar 2014 23:23:42 +0000 (00:23 +0100)
Cleanup the TEST_crush_rule_all function from redundant leftovers.
Explicitly test crush rule rm instead of implicitly.

Signed-off-by: Loic Dachary <loic@dachary.org>
src/test/mon/osd-crush.sh

index 2e42fa6ce7da9914954ed05b195f649c5270795e..38e2b19f1afb30f2a865483e494265264087e420 100755 (executable)
@@ -66,19 +66,12 @@ function TEST_crush_rule_dump() {
     ./ceph osd crush rule rm $ruleset || return 1
 }
 
-function TEST_crush_rule_all() {
-    local dir=$1
-    local crush_ruleset=erasure2
-    ! ./ceph osd crush rule ls | grep $crush_ruleset || return 1
-    ./ceph osd crush rule create-erasure $crush_ruleset || return 1
-    ./ceph osd crush rule ls | grep $crush_ruleset || return 1
-
-    ./ceph osd crush rule create-erasure $crush_ruleset || return 1
-
-    ./ceph osd crush dump | grep $crush_ruleset || return 1
-
-    ./ceph osd crush rule rm $crush_ruleset || return 1
-    ! ./ceph osd crush rule ls | grep $crush_ruleset || return 1
+function TEST_crush_rule_rm() {
+    local ruleset=erasure2
+    ./ceph osd crush rule create-erasure $ruleset default || return 1
+    ./ceph osd crush rule ls | grep $ruleset || return 1
+    ./ceph osd crush rule rm $ruleset || return 1
+    ! ./ceph osd crush rule ls | grep $ruleset || return 1
 }
 
 function TEST_crush_rule_create_simple_exists() {
@@ -94,6 +87,36 @@ function TEST_crush_rule_create_simple_exists() {
     ./ceph osd crush rule rm $ruleset || return 1
 }
 
+function TEST_crush_rule_create_erasure() {
+    local dir=$1
+    ./ceph --format xml osd crush rule dump erasure-code | \
+        egrep '<op>take</op><item>[^<]+</item><item_name>default</item_name>' | \
+        grep '<op>chooseleaf_indep</op><num>0</num><type>host</type>' || return 1
+    local ruleset=ruleset3
+    ./ceph osd crush rule create-erasure $ruleset || return 1
+    ./ceph osd crush rule create-erasure $ruleset 2>&1 | \
+        grep "$ruleset already exists" || return 1
+    ./ceph --format xml osd crush rule dump $ruleset | \
+        egrep '<op>take</op><item>[^<]+</item><item_name>default</item_name>' | \
+        grep '<op>chooseleaf_indep</op><num>0</num><type>host</type>' || return 1
+    ./ceph osd crush rule rm $ruleset || return 1
+    ! ./ceph osd crush rule ls | grep $ruleset || return 1
+    ./ceph osd crush rule create-erasure $ruleset default || return 1
+    ./ceph osd crush rule ls | grep $ruleset || return 1
+    ./ceph osd crush rule rm $ruleset || return 1
+}
+
+function TEST_crush_rule_create_erasure_exists() {
+    local dir=$1
+    local ruleset=ruleset5
+    # add to the pending OSD map without triggering a paxos proposal
+    result=$(echo '{"prefix":"osdmonitor_prepare_command","prepare":"osd crush rule create-erasure","name":"'$ruleset'"}' | nc -U $dir/a/ceph-mon.a.asok | cut --bytes=5-)
+    test $result = true || return 1
+    ./ceph osd crush rule create-erasure $ruleset 2>&1 | \
+        grep "$ruleset already exists" || return 1
+    ./ceph osd crush rule rm $ruleset || return 1
+}
+
 main osd-crush
 
 # Local Variables: