]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | #!/bin/bash -e |
2 | ||
3 | source $(dirname $0)/../detect-build-env-vars.sh | |
c07f9fc5 | 4 | source $CEPH_ROOT/qa/standalone/ceph-helpers.sh |
7c673cae FG |
5 | |
6 | dir=$1 | |
7 | ||
8 | set -e | |
9 | ||
10 | tmp1=`mktemp /tmp/typ-XXXXXXXXX` | |
11 | tmp2=`mktemp /tmp/typ-XXXXXXXXX` | |
12 | tmp3=`mktemp /tmp/typ-XXXXXXXXX` | |
13 | tmp4=`mktemp /tmp/typ-XXXXXXXXX` | |
14 | ||
15 | failed=0 | |
16 | numtests=0 | |
17 | echo "checking ceph-dencoder generated test instances..." | |
18 | echo "numgen type" | |
94b18763 | 19 | ceph-dencoder list_types | while read type; do |
7c673cae FG |
20 | num=`ceph-dencoder type $type count_tests` |
21 | echo "$num $type" | |
22 | for n in `seq 1 1 $num 2>/dev/null`; do | |
7c673cae FG |
23 | |
24 | pids="" | |
94b18763 FG |
25 | run_in_background pids save_stdout "$tmp1" ceph-dencoder type "$type" select_test "$n" dump_json |
26 | run_in_background pids save_stdout "$tmp2" ceph-dencoder type "$type" select_test "$n" encode decode dump_json | |
27 | run_in_background pids save_stdout "$tmp3" ceph-dencoder type "$type" select_test "$n" copy dump_json | |
28 | run_in_background pids save_stdout "$tmp4" ceph-dencoder type "$type" select_test "$n" copy_ctor dump_json | |
7c673cae FG |
29 | wait_background pids |
30 | ||
31 | if [ $? -ne 0 ]; then | |
32 | echo "**** $type test $n encode+decode check failed ****" | |
33 | echo " ceph-dencoder type $type select_test $n encode decode" | |
34 | failed=$(($failed + 3)) | |
35 | continue | |
36 | fi | |
37 | ||
38 | # nondeterministic classes may dump nondeterministically. compare | |
39 | # the sorted json output. this is a weaker test, but is better | |
40 | # than nothing. | |
41 | deterministic=0 | |
94b18763 | 42 | if ceph-dencoder type "$type" is_deterministic; then |
7c673cae FG |
43 | deterministic=1 |
44 | fi | |
45 | ||
46 | if [ $deterministic -eq 0 ]; then | |
47 | echo " sorting json output for nondeterministic object" | |
48 | for f in $tmp1 $tmp2 $tmp3 $tmp4; do | |
49 | sort $f | sed 's/,$//' > $f.new | |
50 | mv $f.new $f | |
51 | done | |
52 | fi | |
53 | ||
54 | if ! cmp $tmp1 $tmp2; then | |
55 | echo "**** $type test $n dump_json check failed ****" | |
56 | echo " ceph-dencoder type $type select_test $n dump_json > $tmp1" | |
57 | echo " ceph-dencoder type $type select_test $n encode decode dump_json > $tmp2" | |
58 | echo " diff $tmp1 $tmp2" | |
59 | failed=$(($failed + 1)) | |
60 | fi | |
61 | ||
62 | if ! cmp $tmp1 $tmp3; then | |
63 | echo "**** $type test $n copy dump_json check failed ****" | |
64 | echo " ceph-dencoder type $type select_test $n dump_json > $tmp1" | |
65 | echo " ceph-dencoder type $type select_test $n copy dump_json > $tmp2" | |
66 | echo " diff $tmp1 $tmp2" | |
67 | failed=$(($failed + 1)) | |
68 | fi | |
69 | ||
70 | if ! cmp $tmp1 $tmp4; then | |
71 | echo "**** $type test $n copy_ctor dump_json check failed ****" | |
72 | echo " ceph-dencoder type $type select_test $n dump_json > $tmp1" | |
73 | echo " ceph-dencoder type $type select_test $n copy_ctor dump_json > $tmp2" | |
74 | echo " diff $tmp1 $tmp2" | |
75 | failed=$(($failed + 1)) | |
76 | fi | |
77 | ||
78 | if [ $deterministic -ne 0 ]; then | |
94b18763 FG |
79 | run_in_background pids ceph-dencoder type "$type" select_test $n encode export "$tmp1" |
80 | run_in_background pids ceph-dencoder type "$type" select_test $n encode decode encode export "$tmp2" | |
7c673cae FG |
81 | wait_background pids |
82 | ||
83 | if ! cmp $tmp1 $tmp2; then | |
84 | echo "**** $type test $n binary reencode check failed ****" | |
85 | echo " ceph-dencoder type $type select_test $n encode export $tmp1" | |
86 | echo " ceph-dencoder type $type select_test $n encode decode encode export $tmp2" | |
87 | echo " cmp $tmp1 $tmp2" | |
88 | failed=$(($failed + 1)) | |
89 | fi | |
90 | fi | |
91 | ||
92 | numtests=$(($numtests + 3)) | |
93 | done | |
94 | done | |
95 | ||
96 | rm -f $tmp1 $tmp2 $tmp3 $tmp4 | |
97 | ||
98 | if [ $failed -gt 0 ]; then | |
99 | echo "FAILED $failed / $numtests tests." | |
100 | exit 1 | |
101 | fi | |
102 | echo "passed $numtests tests." |