aboutsummaryrefslogtreecommitdiff
path: root/regression
diff options
context:
space:
mode:
authorDave.Wen <dave.wen@sifive.com>2019-06-08 16:36:44 -0700
committerDave.Wen <dave.wen@sifive.com>2019-06-08 16:36:44 -0700
commit3f5f68ad07c3eb4f05221293c1e3675bd66efbc7 (patch)
treee98d6bda71ea2e3c72f494efb366af88e8d09094 /regression
parent63d70dbb9883fb54ae45f6959da886cc786df636 (diff)
downloadspike-3f5f68ad07c3eb4f05221293c1e3675bd66efbc7.zip
spike-3f5f68ad07c3eb4f05221293c1e3675bd66efbc7.tar.gz
spike-3f5f68ad07c3eb4f05221293c1e3675bd66efbc7.tar.bz2
rvv: for regression testing
Diffstat (limited to 'regression')
-rwxr-xr-xregression68
1 files changed, 68 insertions, 0 deletions
diff --git a/regression b/regression
new file mode 100755
index 0000000..99a4117
--- /dev/null
+++ b/regression
@@ -0,0 +1,68 @@
+#!/bin/bash
+where=$(dirname $(readlink -f "$0"))
+log_path=${where}/logs
+
+slack_uri="https://hooks.slack.com/services/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"
+
+runs=$1
+if [ -z $1 ];then
+ runs=1
+fi
+
+pipeline_st=10
+for i in $(seq 0 ${pipeline_st}); do
+ if [ ! -d ${where}/build_${i} ]
+ then
+ mkdir ${where}/build_${i}
+ fi
+done
+
+proc=()
+pids=()
+
+for i in $(seq 1 ${runs}); do
+ while true; do
+ SEED=$RANDOM
+ result=$(sqlite3 ~/regression.db "SELECT 1 FROM regression WHERE seed = \"${SEED}\" AND status = 'init'")
+ if [[ -z $result ]];then
+ result=$(sqlite3 ~/regression.db "INSERT INTO regression(seed, exp_time, status) SELECT \"${SEED}\", datetime('now'), 'init' WHERE NOT EXISTS(SELECT 1 FROM regression WHERE seed = \"${SEED}\")")
+ break
+ fi
+ done
+ target="build_$(( i % ${pipeline_st} ))"
+ rm -rf ${where}/${target}/*
+ pushd ${target}
+ cmake_out=$(cmake ../ \
+ -DCMAKE_ASM_COMPILER="$where/../../toolchain-prefix/bin/riscv64-unknown-elf-gcc" \
+ -DSPIKE="$where/../../spike-prefix/build-spike/spike" \
+ -DSEED=$SEED \
+ -DBASE=64 --VLEN=512 --ELEN=64 --SLEN=128 \
+ "$where")
+ make -j20 > /dev/null
+ ctest --timeout 10 -Q -O ${log_path}/${SEED}.log &
+ proc[${i}]=$!
+ pids[$!]=${SEED}
+ popd
+
+ if [ $(( i % ${pipeline_st})) == 0 ]
+ then
+ for pid in ${proc[*]}; do
+ wait $pid
+ SEED=${pids[$pid]}
+ if grep -Fxq Failed ${log_path}/${SEED}.log
+ then
+ sqlite3 ~/regression.db "update regression set status=\"failed\" where seed = \"${SEED}\""
+ #curl -X POST --data-urlencode "payload={\"channel\": \"#spike-vector\", \"username\": \"webhookbot\", \"text\": \"!!THIS IS REAL!! Spike Vector regression fail on SEED ${SEED}.\", \"icon_emoji\": \":scream:\"}" ${slack_uri}
+ else
+ echo "Success"
+ sqlite3 ~/regression.db "update regression set status=\"successed\" where seed = \"${SEED}\""
+ fi
+ echo "Run ${i} finished"
+ if [[ $((${i} % 10000)) == 0 ]]; then
+ echo "PASS"
+ #curl -X POST --data-urlencode "payload={\"channel\": \"#spike-vector\", \"username\": \"webhookbot\", \"text\": \"Spike suvived after ${i} cases.\", \"icon_emoji\": \":100:\"}" ${slack_uri}
+ fi
+ done
+
+ fi
+done