]> git.proxmox.com Git - ceph.git/blame - ceph/src/test/encoding/check-generated.sh
update sources to v12.2.5
[ceph.git] / ceph / src / test / encoding / check-generated.sh
CommitLineData
7c673cae
FG
1#!/bin/bash -e
2
3source $(dirname $0)/../detect-build-env-vars.sh
c07f9fc5 4source $CEPH_ROOT/qa/standalone/ceph-helpers.sh
7c673cae
FG
5
6dir=$1
7
8set -e
9
10tmp1=`mktemp /tmp/typ-XXXXXXXXX`
11tmp2=`mktemp /tmp/typ-XXXXXXXXX`
12tmp3=`mktemp /tmp/typ-XXXXXXXXX`
13tmp4=`mktemp /tmp/typ-XXXXXXXXX`
14
15failed=0
16numtests=0
17echo "checking ceph-dencoder generated test instances..."
18echo "numgen type"
94b18763 19ceph-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
94done
95
96rm -f $tmp1 $tmp2 $tmp3 $tmp4
97
98if [ $failed -gt 0 ]; then
99 echo "FAILED $failed / $numtests tests."
100 exit 1
101fi
102echo "passed $numtests tests."