]> matita.cs.unibo.it Git - helm.git/blob - matita/scripts/crontab.sh
a521c15b99377ad06644e9e0d298869132aa4a71
[helm.git] / matita / scripts / crontab.sh
1 #!/bin/bash
2
3 #configuration
4 TODAY=`date +%Y%m%d`
5 YESTERDAY=`date -d yesterday +%Y%m%d`
6 TMPDIRNAME=$HOME/__${TODAY}_crontab
7 TMPDIRNAMEOLD=$HOME/__${YESTERDAY}_crontab
8 SVNROOT="svn+ssh://mowgli.cs.unibo.it/local/svn/helm/trunk/"
9 SHELLTIME2CENTSPHP=scripts/shell_time2cents.php
10 SHELLADDERPHP=scripts/shell_adder.php
11 COMMONPHP=scripts/public_html/common.php
12 MYSQL="mysql -u helm -h mowgli.cs.unibo.it matita"
13 SQLQMARK="select distinct mark from bench where mark like '"
14 SQLQORD="' order by mark;"
15 SQLQTIME="select SUM(timeuser) from bench where mark = \""
16 SQLQGRMARK="\" group by mark;"
17 SQLQFAIL="select count(distinct test) from bench where mark = \""
18 SQLQFAIL1="select distinct test from bench where mark = \""
19 SQLQFAIL2="\" and result = 'fail';"
20 URL="http://mowgli.cs.unibo.it/~tassi/bench.php"
21
22 #initialization
23 OLD=$PWD
24 mkdir -p $TMPDIRNAME
25 rm -rf $TMPDIRNAMEOLD
26 cd $TMPDIRNAME
27 rm -rf helm
28 svn co ${SVNROOT}helm/software/matita/scripts/ > LOG.svn 2>&1
29
30 #run tests
31 scripts/profile_svn.sh 2> LOG
32
33 MARK=`echo $SQLQMARK$TODAY%$SQLQORD | $MYSQL | tail -n 1`
34 LASTMARK=`echo $SQLQMARK$YESTERDAY%$SQLQORD | $MYSQL | tail -n 1`
35
36 if [ -z "$MARK" ]; then
37   echo "No benchmark records for $TODAY"
38   exit 1
39 fi
40
41 if [ -z "$LASTMARK" ]; then
42   echo "No benchmark records for $YESTERDAY"
43   exit 1
44 fi
45
46 #check for slowdown
47 CUR_TIME=`echo $SQLQTIME$MARK$SQLQGRMARK | $MYSQL`
48 OLD_TIME=`echo $SQLQTIME$LASTMARK$SQLQGRMARK | $MYSQL`
49
50 if [ -z "$CUR_TIME" -o -z "$OLD_TIME" ]; then
51     cat <<EOT
52
53     Unable to calculate total time amounts:
54     
55       $SQLQTIME$MARK$SQLQGRMARK 
56       
57     or
58
59       $SQLQTIME$LASTMARK$SQLQGRMARK
60       
61     gave an empty result
62     
63 EOT
64 fi
65
66 ((DELTA= $CUR_TIME - $OLD_TIME))
67 if [ "$DELTA" -lt 0 ]; then
68   PERC=0
69 else
70   PREC=`scripts/functions.lua proportion $DELTA x $OLD_CENTS 100`
71 fi
72 if [ "$PERC" -ge 5 ]; then
73   cat <<EOT
74   
75   PERFORMANCE LOSS DETECTED (MARK $MARK vs MARK $LASTMARK)
76   
77   Is `scripts/functions.lua t2s $CUR_TIME` 
78   
79   Was `scripts/functions.lua t2s $OLD_TIME`
80   
81   For details: $URL
82 EOT
83 fi
84
85 #check for more broken tests
86 CUR_FAIL=`echo $SQLQFAIL$MARK$SQLQFAIL2 | $MYSQL`
87 OLD_FAIL=`echo $SQLQFAIL$LASTMARK$SQLQFAIL2 | $MYSQL`
88
89 if [ "$CUR_FAIL" -gt "$OLD_FAIL" ]; then
90   cat <<EOT
91
92   MORE BROKEN TESTS DETECTED (MARK $MARK vs MARK $LASTMARK)
93   
94   Now broken:
95 `echo $SQLQFAIL1$MARK$SQLQFAIL2 | $MYSQL`
96
97   Were broken:
98 `echo $SQLQFAIL1$LASTMARK$SQLQFAIL2 | $MYSQL`
99   
100   For details: $URL
101 EOT
102
103 fi
104
105 cd $OLD
106 #rm -rf $TMPDIRNAME
107