Merge pull request #95 from libtom/improve/travis
create a travis build matrix
This commit is contained in:
commit
4f6420bc02
31
.travis.yml
31
.travis.yml
@ -1,18 +1,35 @@
|
||||
language: c
|
||||
compiler:
|
||||
- gcc
|
||||
|
||||
script:
|
||||
- make travis_mtest
|
||||
- head -n 5 test.log
|
||||
- tail -n 2 test.log
|
||||
- ./testme.sh --with-cc=gcc --with-low-mp
|
||||
install:
|
||||
- sudo apt-get update -qq
|
||||
- sudo apt-get install gcc-multilib
|
||||
|
||||
matrix:
|
||||
fast_finish: true
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
- develop
|
||||
- /^release\/.*$/
|
||||
|
||||
compiler:
|
||||
- gcc
|
||||
- clang
|
||||
script:
|
||||
- ./testme.sh --with-cc=$CC ${BUILDOPTIONS}
|
||||
env:
|
||||
- |
|
||||
BUILDOPTIONS="--test-vs-mtest=333333"
|
||||
- |
|
||||
BUILDOPTIONS="--test-vs-mtest=333333 --mtest-real-rand"
|
||||
- |
|
||||
BUILDOPTIONS="--with-low-mp"
|
||||
- |
|
||||
BUILDOPTIONS="--with-m64 --with-m32 --with-mx32"
|
||||
|
||||
after_failure:
|
||||
- cat test_*.log
|
||||
- cat gcc_errors_*.log
|
||||
|
||||
notifications:
|
||||
irc: "chat.freenode.net#libtom-notifications"
|
||||
|
@ -15,6 +15,9 @@
|
||||
* Tom St Denis, tstdenis82@gmail.com, http://libtom.org
|
||||
*/
|
||||
|
||||
#if defined(MP_8BIT) || defined(MP_16BIT)
|
||||
#define MP_GEN_RANDOM_SHIFT DIGIT_BIT
|
||||
#else
|
||||
#if MP_GEN_RANDOM_MAX == 0xffffffffu
|
||||
#define MP_GEN_RANDOM_SHIFT 32
|
||||
#elif MP_GEN_RANDOM_MAX == 32767
|
||||
@ -26,6 +29,7 @@
|
||||
#elif !defined(MP_GEN_RANDOM_SHIFT)
|
||||
#error Thou shalt define their own valid MP_GEN_RANDOM_SHIFT
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* makes a pseudo-random int of a given size */
|
||||
static mp_digit s_gen_random(void)
|
||||
|
4
makefile
4
makefile
@ -102,10 +102,6 @@ test_standalone: $(LIBNAME) demo/demo.o
|
||||
mtest:
|
||||
cd mtest ; $(CC) $(CFLAGS) -O0 mtest.c $(LFLAGS) -o mtest
|
||||
|
||||
travis_mtest: test mtest
|
||||
@ for i in `seq 1 10` ; do sleep 500 && echo alive; done &
|
||||
./mtest/mtest 666666 | ./test > test.log
|
||||
|
||||
timing: $(LIBNAME)
|
||||
$(CC) $(CFLAGS) -DTIMER demo/timing.c $(LIBNAME) $(LFLAGS) -o ltmtest
|
||||
|
||||
|
@ -151,8 +151,9 @@ int main(int argc, char *argv[])
|
||||
if (rng == NULL) {
|
||||
rng = fopen("/dev/random", "rb");
|
||||
if (rng == NULL) {
|
||||
fprintf(stderr, "\nWarning: stdin used as random source\n\n");
|
||||
rng = stdin;
|
||||
fprintf(stderr, "\nWarning: no /dev/[u]random available\n\n");
|
||||
printf("exit\n");
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
#else
|
||||
|
58
testme.sh
58
testme.sh
@ -27,6 +27,9 @@ _help()
|
||||
echo " --with-cc=* The compiler(s) to use for the tests"
|
||||
echo " This is an option that will be iterated."
|
||||
echo
|
||||
echo " --test-vs-mtest=* Run test vs. mtest for '*' operations."
|
||||
echo " Only the first of each options will be taken into account."
|
||||
echo
|
||||
echo "To be able to specify options a compiler has to be given."
|
||||
echo "All options will be tested with all MP_xBIT configurations."
|
||||
echo
|
||||
@ -45,6 +48,8 @@ _help()
|
||||
echo
|
||||
echo " --with-low-mp Also build&run tests with -DMP_{8,16,32}BIT."
|
||||
echo
|
||||
echo " --mtest-real-rand Use real random data when running mtest."
|
||||
echo
|
||||
echo "Godmode:"
|
||||
echo
|
||||
echo " --all Choose all architectures and gcc and clang as compilers"
|
||||
@ -65,22 +70,28 @@ _die()
|
||||
fi
|
||||
}
|
||||
|
||||
_runtest()
|
||||
_make()
|
||||
{
|
||||
echo -ne " Compile $1 $2"
|
||||
make clean > /dev/null
|
||||
suffix=$(echo ${1}${2} | tr ' ' '_')
|
||||
CC="$1" CFLAGS="$2 $TEST_CFLAGS" make -j$MAKE_JOBS test_standalone $MAKE_OPTIONS > /dev/null 2>gcc_errors_${suffix}.txt
|
||||
errcnt=$(wc -l < gcc_errors_${suffix}.txt)
|
||||
CC="$1" CFLAGS="$2 $TEST_CFLAGS" make -j$MAKE_JOBS $3 $MAKE_OPTIONS > /dev/null 2>gcc_errors_${suffix}.log
|
||||
errcnt=$(wc -l < gcc_errors_${suffix}.log)
|
||||
if [[ ${errcnt} -gt 1 ]]; then
|
||||
echo " failed"
|
||||
cat gcc_errors_${suffix}.txt
|
||||
cat gcc_errors_${suffix}.log
|
||||
exit 128
|
||||
fi
|
||||
echo -e "\rRun test $1 $2"
|
||||
}
|
||||
|
||||
|
||||
_runtest()
|
||||
{
|
||||
make clean > /dev/null
|
||||
_make "$1" "$2" "test_standalone"
|
||||
local _timeout=""
|
||||
which timeout >/dev/null && _timeout="timeout --foreground 90"
|
||||
$_timeout ./test > test_${suffix}.txt || _die "running tests" $?
|
||||
echo -e "\rRun test $1 $2"
|
||||
$_timeout ./test > test_${suffix}.log || _die "running tests" $?
|
||||
}
|
||||
|
||||
_banner()
|
||||
@ -105,6 +116,8 @@ ARCHFLAGS=""
|
||||
COMPILERS=""
|
||||
CFLAGS=""
|
||||
WITH_LOW_MP=""
|
||||
TEST_VS_MTEST=""
|
||||
MTEST_RAND=""
|
||||
|
||||
while [ $# -gt 0 ];
|
||||
do
|
||||
@ -124,6 +137,17 @@ do
|
||||
--with-low-mp)
|
||||
WITH_LOW_MP="1"
|
||||
;;
|
||||
--test-vs-mtest=*)
|
||||
TEST_VS_MTEST="${1#*=}"
|
||||
if ! [ "$TEST_VS_MTEST" -eq "$TEST_VS_MTEST" ] 2> /dev/null
|
||||
then
|
||||
echo "--test-vs-mtest Parameter has to be int"
|
||||
exit -1
|
||||
fi
|
||||
;;
|
||||
--mtest-real-rand)
|
||||
MTEST_RAND="-DLTM_MTEST_REAL_RAND"
|
||||
;;
|
||||
--all)
|
||||
COMPILERS="gcc clang"
|
||||
ARCHFLAGS="-m64 -m32 -mx32"
|
||||
@ -161,6 +185,26 @@ fi
|
||||
|
||||
_banner
|
||||
|
||||
if [[ "$TEST_VS_MTEST" != "" ]]
|
||||
then
|
||||
make clean > /dev/null
|
||||
_make "${compilers[0]} ${archflags[0]}" "$CFLAGS" "test"
|
||||
echo
|
||||
_make "gcc" "$MTEST_RAND" "mtest"
|
||||
echo
|
||||
echo "Run test vs. mtest for $TEST_VS_MTEST iterations"
|
||||
for i in `seq 1 10` ; do sleep 500 && echo alive; done &
|
||||
alive_pid=$!
|
||||
_timeout=""
|
||||
which timeout >/dev/null && _timeout="timeout --foreground 900"
|
||||
$_TIMEOUT ./mtest/mtest $TEST_VS_MTEST | ./test > test.log
|
||||
disown $alive_pid
|
||||
kill $alive_pid 2>/dev/null
|
||||
head -n 5 test.log
|
||||
tail -n 2 test.log
|
||||
exit 0
|
||||
fi
|
||||
|
||||
for i in "${compilers[@]}"
|
||||
do
|
||||
if [ -z "$(which $i)" ]
|
||||
|
Loading…
Reference in New Issue
Block a user