3 source $
(dirname $0)/..
/detect-build-env-vars.sh
4 source $CEPH_ROOT/qa
/workunits
/ceph-helpers.sh
10 tmp1
=`mktemp /tmp/typ-XXXXXXXXX`
11 tmp2
=`mktemp /tmp/typ-XXXXXXXXX`
12 tmp3
=`mktemp /tmp/typ-XXXXXXXXX`
13 tmp4
=`mktemp /tmp/typ-XXXXXXXXX`
17 echo "checking ceph-dencoder generated test instances..."
19 for type in `ceph-dencoder list_types`; do
20 num
=`ceph-dencoder type $type count_tests`
22 for n
in `seq 1 1 $num 2>/dev/null`; do
24 # BitVector<2> needs some escaping to avoid bash issues with <>
25 if [ "$type" = "BitVector<2>" ]; then
26 safe_type
="BitVector\<2\>"
30 run_in_background pids bash
-c "ceph-dencoder type $safe_type select_test $n dump_json > $tmp1"
31 run_in_background pids bash
-c "ceph-dencoder type $safe_type select_test $n encode decode dump_json > $tmp2"
32 run_in_background pids bash
-c "ceph-dencoder type $safe_type select_test $n copy dump_json > $tmp3"
33 run_in_background pids bash
-c "ceph-dencoder type $safe_type select_test $n copy_ctor dump_json > $tmp4"
37 echo "**** $type test $n encode+decode check failed ****"
38 echo " ceph-dencoder type $type select_test $n encode decode"
39 failed
=$
(($failed + 3))
43 # nondeterministic classes may dump nondeterministically. compare
44 # the sorted json output. this is a weaker test, but is better
47 if ceph-dencoder
type $type is_deterministic
; then
51 if [ $deterministic -eq 0 ]; then
52 echo " sorting json output for nondeterministic object"
53 for f
in $tmp1 $tmp2 $tmp3 $tmp4; do
54 sort $f |
sed 's/,$//' > $f.new
59 if ! cmp $tmp1 $tmp2; then
60 echo "**** $type test $n dump_json check failed ****"
61 echo " ceph-dencoder type $type select_test $n dump_json > $tmp1"
62 echo " ceph-dencoder type $type select_test $n encode decode dump_json > $tmp2"
63 echo " diff $tmp1 $tmp2"
64 failed
=$
(($failed + 1))
67 if ! cmp $tmp1 $tmp3; then
68 echo "**** $type test $n copy dump_json check failed ****"
69 echo " ceph-dencoder type $type select_test $n dump_json > $tmp1"
70 echo " ceph-dencoder type $type select_test $n copy dump_json > $tmp2"
71 echo " diff $tmp1 $tmp2"
72 failed
=$
(($failed + 1))
75 if ! cmp $tmp1 $tmp4; then
76 echo "**** $type test $n copy_ctor dump_json check failed ****"
77 echo " ceph-dencoder type $type select_test $n dump_json > $tmp1"
78 echo " ceph-dencoder type $type select_test $n copy_ctor dump_json > $tmp2"
79 echo " diff $tmp1 $tmp2"
80 failed
=$
(($failed + 1))
83 if [ $deterministic -ne 0 ]; then
84 run_in_background pids bash
-c "ceph-dencoder type $safe_type select_test $n encode export $tmp1"
85 run_in_background pids bash
-c "ceph-dencoder type $safe_type select_test $n encode decode encode export $tmp2"
88 if ! cmp $tmp1 $tmp2; then
89 echo "**** $type test $n binary reencode check failed ****"
90 echo " ceph-dencoder type $type select_test $n encode export $tmp1"
91 echo " ceph-dencoder type $type select_test $n encode decode encode export $tmp2"
92 echo " cmp $tmp1 $tmp2"
93 failed
=$
(($failed + 1))
97 numtests
=$
(($numtests + 3))
101 rm -f $tmp1 $tmp2 $tmp3 $tmp4
103 if [ $failed -gt 0 ]; then
104 echo "FAILED $failed / $numtests tests."
107 echo "passed $numtests tests."