Add tests for wordbased index.
[SXSI/xpathcomp.git] / tests / non_regression_tests / test.sh
1 #!/bin/bash
2 I=1
3
4 function cecho() {
5   case "$1" in
6       green)
7           START="\033[0;32m"
8           END="\033[0m"
9           ;;
10       yellow)
11           START="\033[1;33m"
12           END="\033[0m"
13           ;;
14       red)
15           START="\033[0;31m"
16           END="\033[0m"
17           ;;
18       *)
19           START=""
20           END=""
21           ;;
22   esac
23   echo -n -e "${START}${2}${END}"
24 }
25
26 function lessthan() {
27     echo '5k 1 st 0 sf' "$2" "$1" '<t ' "$2" "$1" '!<f p' | dc
28 }
29
30
31 if [ "$1" = "fast" ]
32 then
33     repeat_monet=1
34     repeat_sxsi=1
35     repeat_qizx=2
36 else
37     repeat_monet=1
38     repeat_sxsi=10
39     repeat_qizx=4
40 fi
41
42
43 for TESTDOC in medline_full.xml #"xmark_10.xml"  #"medline.xml" "xmark_01.04.xml"
44 do
45 echo
46 echo "$TESTDOC"
47 echo
48
49 MLOG="$TESTDOC"_monet.log
50 SLOG="$TESTDOC"_sxsi.log
51 QLOG="$TESTDOC"_qizx.log
52 rm -f "$MLOG" "$SLOG" "$QLOG"
53 cat "$TESTDOC".queries | grep -v '^#' | while read line
54 do
55
56     qname=`echo "$line" | cut -f 1 -d "%"`
57     query=`echo "$line" | cut -f 2 -d "%"`
58     query_qizx=`echo "$line" | cut -f 3 -d "%"`
59     if [ -z "$query_qizx" ]
60     then
61         query_qizx="$query"
62     fi
63     echo Test $I "... "
64     echo "$query" | sed -e 's|/descendant::|//|g' | sed -e 's|child::||g'
65     echo -n Running SXSI
66     {
67         read sxsi_count_time
68         read sxsi_mat_time
69         read sxsi_print_time
70         read sxsi_count
71     } < <(`pwd`/sxsi.sh "$query" "$TESTDOC" "$repeat_sxsi" "$2")
72
73     echo " ok"
74     echo -n Running MonetBD/XQuery
75
76     if [ "$query" = '/descendant::people[ descendant::person[not(child::address)] and descendant::person[not(child::watches)]]/child::person[child::watches]' ]
77     then
78         #Quick work around since MonetBD fails on q11
79         monet_count_time=1000000
80         monet_mat_time=1000000
81         monet_print_time=1000000
82         monet_count="$sxsi_count"
83     else
84     {
85         read monet_count_time
86         read monet_mat_time
87         read monet_print_time
88         read monet_count
89     } < <(`pwd`/monet.sh "$query" "$TESTDOC" "$repeat_monet" "$2")
90
91     fi
92     echo " ok"
93
94     echo -n Running Qizx/XQuery
95     {
96         read qizx_count_time
97         read qizx_mat_time
98         read qizx_print_time
99         read qizx_count
100     } < <(`pwd`/qizx.sh "$query_qizx" "$TESTDOC" "$repeat_qizx" "$2")
101
102     echo " ok"
103
104     if [ "$monet_count" = "" ]
105     then
106         monet_count="$sxsi_count"
107     fi
108     if [ "$sxsi_count" = "" ]
109     then
110         sxsi_count="$monet_count"
111     fi
112     for v in sxsi_count_time sxsi_mat_time sxsi_print_time \
113         monet_count_time monet_mat_time monet_print_time \
114         qizx_count_time qizx_mat_time qizx_print_time
115     do
116         if [ "${!v}" = "" ]
117         then
118             { read "$v"; } < <( echo 7200000 )
119         fi
120     done
121
122
123
124     echo "$I,$sxsi_count,$sxsi_count_time,$sxsi_mat_time,$sxsi_print_time" >> "$SLOG"
125     echo "$I,$monet_count,$monet_count_time,$monet_mat_time,$monet_print_time" >>"$MLOG"
126     echo "$I,$qizx_count,$qizx_count_time,$qizx_mat_time,$qizx_print_time" >>"$QLOG"
127     echo -n "Correctness: "
128     if [ "$monet_count" = "$sxsi_count" ]
129     then
130         cecho green "count ok ($monet_count) "
131     else
132         cecho red "count error (monetdb: $monet_count, sxsi: $sxsi_count) "
133     fi
134     echo
135     echo -n "Timing: "
136     CTIME="SXSI: $sxsi_count_time
137 MONET: $monet_count_time
138 QIZX: $qizx_count_time"
139     SORTED_CTIME=`echo "$CTIME" | sort --key=2 -g`
140     STR_CTIME=`echo "$SORTED_CTIME" | xargs echo -n`
141     first=`echo "$STR_CTIME" | cut -f1 -d':'`
142     if [ "$first" = "SXSI" ]
143     then
144         cecho green "$STR_CTIME"
145     else
146         cecho yellow "$STR_CTIME"
147     fi
148     I=$(( $I + 1))
149     echo
150 done
151 done