./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() {
./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: