rados list-inconsistent-snapset $pgid > $dir/json || return 1
test $(jq '.inconsistents | length' $dir/json) = "20" || return 1
- jq -c '.inconsistents | sort' > $dir/checkcsjson << EOF
-{"epoch":18,"inconsistents":[{"name":"obj1","nspace":"","locator":"","snap":1,
-"errors":["headless"]},{"name":"obj10","nspace":"","locator":"","snap":1,
-"errors":["size_mismatch"]},{"name":"obj11","nspace":"","locator":"","snap":1,
-"errors":["headless"]},{"name":"obj14","nspace":"","locator":"","snap":1,
-"errors":["size_mismatch"]},{"name":"obj6","nspace":"","locator":"","snap":1,
-"errors":["headless"]},{"name":"obj7","nspace":"","locator":"","snap":1,
-"errors":["headless"]},{"name":"obj9","nspace":"","locator":"","snap":1,
-"errors":["size_mismatch"]},{"name":"obj2","nspace":"","locator":"","snap":4,
-"errors":["headless"]},{"name":"obj5","nspace":"","locator":"","snap":4,
-"errors":["size_mismatch"]},{"name":"obj2","nspace":"","locator":"","snap":7,
-"errors":["headless"]},{"name":"obj5","nspace":"","locator":"","snap":7,
-"errors":["oi_attr_missing","headless"]},{"name":"obj11","nspace":"",
-"locator":"","snap":"head","errors":["extra_clones"],"extra clones":[1]},
-{"name":"obj12","nspace":"","locator":"","snap":"head",
-"errors":["head_mismatch"]},{"name":"obj3","nspace":"","locator":"",
-"snap":"head","errors":["size_mismatch"]},{"name":"obj5","nspace":"",
-"locator":"","snap":"head","errors":["extra_clones","clone_missing"],
-"extra clones":[7],"missing":[2,1]},{"name":"obj6","nspace":"","locator":"",
-"snap":"head","errors":["extra_clones"],"extra clones":[1]},{"name":"obj7",
-"nspace":"","locator":"","snap":"head","errors":["head_mismatch",
-"extra_clones"],"extra clones":[1]},{"name":"obj8","nspace":"","locator":"",
-"snap":"head","errors":["snapset_mismatch"]},{"name":"obj2","nspace":"",
-"locator":"","snap":"snapdir","errors":["ss_attr_missing","extra_clones"],
-"extra clones":[7,4]},{"name":"obj4","nspace":"","locator":"","snap":"snapdir",
-"errors":["clone_missing"],"missing":[7]}]}
+ local jqfilter='.inconsistents'
+ local sortkeys='import json; import sys ; JSON=sys.stdin.read() ; ud = json.loads(JSON) ; print json.dumps(ud, sort_keys=True, indent=2)'
+
+ jq "$jqfilter" << EOF | python -c "$sortkeys" > $dir/checkcsjson
+{
+ "inconsistents": [
+ {
+ "errors": [
+ "headless"
+ ],
+ "snap": 1,
+ "locator": "",
+ "nspace": "",
+ "name": "obj1"
+ },
+ {
+ "errors": [
+ "size_mismatch"
+ ],
+ "snap": 1,
+ "locator": "",
+ "nspace": "",
+ "name": "obj10"
+ },
+ {
+ "errors": [
+ "headless"
+ ],
+ "snap": 1,
+ "locator": "",
+ "nspace": "",
+ "name": "obj11"
+ },
+ {
+ "errors": [
+ "size_mismatch"
+ ],
+ "snap": 1,
+ "locator": "",
+ "nspace": "",
+ "name": "obj14"
+ },
+ {
+ "errors": [
+ "headless"
+ ],
+ "snap": 1,
+ "locator": "",
+ "nspace": "",
+ "name": "obj6"
+ },
+ {
+ "errors": [
+ "headless"
+ ],
+ "snap": 1,
+ "locator": "",
+ "nspace": "",
+ "name": "obj7"
+ },
+ {
+ "errors": [
+ "size_mismatch"
+ ],
+ "snap": 1,
+ "locator": "",
+ "nspace": "",
+ "name": "obj9"
+ },
+ {
+ "errors": [
+ "headless"
+ ],
+ "snap": 4,
+ "locator": "",
+ "nspace": "",
+ "name": "obj2"
+ },
+ {
+ "errors": [
+ "size_mismatch"
+ ],
+ "snap": 4,
+ "locator": "",
+ "nspace": "",
+ "name": "obj5"
+ },
+ {
+ "errors": [
+ "headless"
+ ],
+ "snap": 7,
+ "locator": "",
+ "nspace": "",
+ "name": "obj2"
+ },
+ {
+ "errors": [
+ "oi_attr_missing",
+ "headless"
+ ],
+ "snap": 7,
+ "locator": "",
+ "nspace": "",
+ "name": "obj5"
+ },
+ {
+ "extra clones": [
+ 1
+ ],
+ "errors": [
+ "extra_clones"
+ ],
+ "snap": "head",
+ "locator": "",
+ "nspace": "",
+ "name": "obj11"
+ },
+ {
+ "errors": [
+ "head_mismatch"
+ ],
+ "snap": "head",
+ "locator": "",
+ "nspace": "",
+ "name": "obj12"
+ },
+ {
+ "errors": [
+ "size_mismatch"
+ ],
+ "snap": "head",
+ "locator": "",
+ "nspace": "",
+ "name": "obj3"
+ },
+ {
+ "missing": [
+ 2,
+ 1
+ ],
+ "extra clones": [
+ 7
+ ],
+ "errors": [
+ "extra_clones",
+ "clone_missing"
+ ],
+ "snap": "head",
+ "locator": "",
+ "nspace": "",
+ "name": "obj5"
+ },
+ {
+ "extra clones": [
+ 1
+ ],
+ "errors": [
+ "extra_clones"
+ ],
+ "snap": "head",
+ "locator": "",
+ "nspace": "",
+ "name": "obj6"
+ },
+ {
+ "extra clones": [
+ 1
+ ],
+ "errors": [
+ "head_mismatch",
+ "extra_clones"
+ ],
+ "snap": "head",
+ "locator": "",
+ "nspace": "",
+ "name": "obj7"
+ },
+ {
+ "errors": [
+ "snapset_mismatch"
+ ],
+ "snap": "head",
+ "locator": "",
+ "nspace": "",
+ "name": "obj8"
+ },
+ {
+ "extra clones": [
+ 7,
+ 4
+ ],
+ "errors": [
+ "ss_attr_missing",
+ "extra_clones"
+ ],
+ "snap": "snapdir",
+ "locator": "",
+ "nspace": "",
+ "name": "obj2"
+ },
+ {
+ "missing": [
+ 7
+ ],
+ "errors": [
+ "clone_missing"
+ ],
+ "snap": "snapdir",
+ "locator": "",
+ "nspace": "",
+ "name": "obj4"
+ }
+ ],
+ "epoch": 20
+}
EOF
- jq -c '.inconsistents | sort' $dir/json > $dir/csjson
- diff $dir/csjson $dir/checkcsjson || return 1
+ jq "$jqfilter" $dir/json | python -c "$sortkeys" > $dir/csjson
+ diff -y $dir/checkcsjson $dir/csjson || return 1
for i in `seq 1 7`
do