File: gsl19test

package info (click to toggle)
valgrind 1%3A3.24.0-3
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 176,332 kB
  • sloc: ansic: 795,029; exp: 26,134; xml: 23,472; asm: 14,393; cpp: 9,397; makefile: 7,464; sh: 6,122; perl: 5,446; python: 1,498; javascript: 981; awk: 166; csh: 1
file content (130 lines) | stat: -rwxr-xr-x 4,213 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#!/bin/sh

# Do an automated test which involves building and regtesting version
# 1.9 of the GNU Scientific Library (gsl).  This has proven to be a 
# very thorough test of Vex's CPU simulations and has exposed bugs 
# which had not been previously discovered.  Gsl 1.9 contains more
# than 6 million tests as part of its regression suite, and so this
# script's purpose is to runs those tests using valgrind and compare 
# against the same tests run natively.  Note that it produces a
# huge amount of output (about 2 x 620 MByte), so be careful.
# The older gsl16test script produces only about 2 x 7 MByte per run.
# 
# You can download gsl and get more info about it at 
# http://www.gnu.org/software/gsl



# Args:
#     absolute name of gsl-1.9.tar.gz file
#     name of C compiler
#     args for C compiler
#     name of Valgrind
#     args for Valgrind

# Results:  3.7.0   --tool=none
#     x86   1 failure  Ubuntu 10.10
#           FAIL: qawo(f456) elist (7.25063790881233303e-15 observed vs 7.25922435194575979e-15 expected)
#           same failure was also present in 3.6.1
#     s390x 0 failures  on z196 running SLES11

if [ $# != 5 ]
then 
   echo "usage: gsl19test /absolute/name/of/gsl-1.9.tar.gz"
   echo "                 C-compiler-command"      
   echo "                 flags-for-C-compiler"     
   echo "                 Valgrind-command"
   echo "                 flags-for-Valgrind"
   exit 1
fi

# nproc is part of coreutils so it's available on GNU/Linux. Not so on Mac OS X.
command -v nproc > /dev/null
if [ $? -eq 0 ]; then
  num_cpu=`nproc`
else
  num_cpu=1
fi

runcmd () {
   echo -n "   $1  ... "
   shift

   (eval "$*") >> log.verbose 2>&1

   if [ $? = 0 ]
   then
      echo "done"
      return 0
   else
      echo "failed"
      return 1
   fi
}

GSL_FILE=$1
GSL_CC=$2
GSL_CFLAGS=$3
GSL_VV=$4
GSL_VFLAGS=$5

TESTS1="block/test bspline/test cblas/test cdf/test cheb/test"
TESTS2="combination/test complex/test const/test deriv/test dht/test"
TESTS3="diff/test eigen/test err/test fft/test fit/test histogram/test"
TESTS4="ieee-utils/test integration/test interpolation/test linalg/test"
TESTS5="matrix/test min/test monte/test multifit/test multimin/test"
TESTS6="multiroots/test ntuple/test ode-initval/test permutation/test"
TESTS7="poly/test qrng/test randist/test rng/test roots/test siman/test"
TESTS8="sort/test specfunc/test statistics/test sum/test sys/test"
TESTS9="vector/test wavelet/test"

ALL_TESTS="$TESTS1 $TESTS2 $TESTS3 $TESTS4 $TESTS5 $TESTS6 $TESTS7 $TESTS8 $TESTS9"


echo "gsl19test: src:      " $GSL_FILE
echo "gsl19test: cc:       " $GSL_CC
echo "gsl19test: cflags:   " $GSL_CFLAGS
echo "gsl19test: valgrind: " $GSL_VV
echo "gsl19test: vflags:   " $GSL_VFLAGS

rm -rf log.verbose gsl-1.9 summary.txt

echo > log.verbose

echo > summary.txt
echo $0  $1  \"$2\"  \"$3\"  \"$4\"  \"$5\" >> summary.txt
echo >> summary.txt

runcmd "Untarring                     " \
       "rm -rf gsl-1.9 && tar xzf $GSL_FILE" && \
\
runcmd "Configuring                   " \
       "(cd gsl-1.9 && CC=$GSL_CC CFLAGS=\"$GSL_CFLAGS\" ./configure)" && \
\
runcmd "Building                      " \
       "(cd gsl-1.9 && make -j $num_cpu && make -j $num_cpu -k check)"

echo -n "   Collecting reference results  "
rm -f out-REF
(cd gsl-1.9 && for f in $ALL_TESTS ; \
               do GSL_TEST_VERBOSE=1 ./$f ; done) > out-REF 2>&1
echo "  ... done"

echo -n "   Collecting valgrinded results "
rm -f out-V
(cd gsl-1.9 && for f in $ALL_TESTS ; \
               do eval GSL_TEST_VERBOSE=1 $GSL_VV -q --trace-children=yes "$GSL_VFLAGS" ./$f ; done) > out-V 2>&1
echo "  ... done"

echo -n "   Native fails:    " && (grep FAIL: out-REF | wc -l)
echo -n "   Native passes:   " && (grep PASS: out-REF | wc -l)
echo -n "   Valgrind fails:  " && (grep FAIL: out-V | wc -l)
echo -n "   Valgrind passes: " && (grep PASS: out-V | wc -l)

(echo -n "   Native fails:    " && (grep FAIL: out-REF | wc -l)) >> summary.txt
(echo -n "   Native passes:   " && (grep PASS: out-REF | wc -l)) >> summary.txt
(echo -n "   Valgrind fails:  " && (grep FAIL: out-V | wc -l)) >> summary.txt
(echo -n "   Valgrind passes: " && (grep PASS: out-V | wc -l)) >> summary.txt
echo >> summary.txt

echo