summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorTiejun Zhou <[email protected]>2023-04-03 07:24:52 +0000
committerTiejun Zhou <[email protected]>2023-04-04 09:40:54 +0000
commitebeb02b95828ca100c3f24de5f9603a41049f8ff (patch)
tree1e6977ea79c5394a0d299cd95427d494beaf3b7a /scripts
parentac3b6b326cd7dac0373282c6f557d0d51764e34a (diff)
Release ThreadX regression system
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/build_smp.sh2
-rwxr-xr-xscripts/build_tx.sh2
-rwxr-xr-xscripts/cmake_bootstrap.sh120
-rwxr-xr-xscripts/test_smp.sh3
-rwxr-xr-xscripts/test_tx.sh3
5 files changed, 130 insertions, 0 deletions
diff --git a/scripts/build_smp.sh b/scripts/build_smp.sh
new file mode 100755
index 00000000..615a9be8
--- /dev/null
+++ b/scripts/build_smp.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+$(dirname `realpath $0`)/../test/smp/cmake/run.sh build all
diff --git a/scripts/build_tx.sh b/scripts/build_tx.sh
new file mode 100755
index 00000000..a1773a1e
--- /dev/null
+++ b/scripts/build_tx.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+$(dirname `realpath $0`)/../test/tx/cmake/run.sh build all
diff --git a/scripts/cmake_bootstrap.sh b/scripts/cmake_bootstrap.sh
new file mode 100755
index 00000000..5cbfc9aa
--- /dev/null
+++ b/scripts/cmake_bootstrap.sh
@@ -0,0 +1,120 @@
+#!/bin/bash
+
+set -e
+
+function help() {
+ echo "Usage: $0 [build|test] [all|<build_configuration> <build_configuration>...]"
+ echo "Available build_configuration:"
+ for build in ${build_configurations[*]}; do
+ echo " $build"
+ done
+ exit 1
+}
+
+function validate() {
+ for build in ${build_configurations[*]}; do
+ if [ "$1" == "$build" ]; then
+ return
+ fi
+ done
+ help
+}
+
+function generate() {
+ build=$1
+ cmake -Bbuild/$build -GNinja -DBUILD_SHARED_LIBS=ON -DCMAKE_TOOLCHAIN_FILE=$(dirname $(realpath $0))/../cmake/linux.cmake -DCMAKE_BUILD_TYPE=$build .
+}
+
+function build() {
+ cmake --build build/$1
+}
+
+function build_libs() {
+ cmake -Bbuild/libs -GNinja -DBUILD_SHARED_LIBS=ON -DCMAKE_TOOLCHAIN_FILE=$(dirname $(realpath $0))/../cmake/linux.cmake libs
+ cmake --build build/libs
+}
+
+function test() {
+ pushd build/$1
+ [ -z "${CTEST_PARALLEL_LEVEL}" ] && parallel="-j$2"
+ if [ -z "${CTEST_REPEAT_FAIL}" ];
+ then
+ repeat_fail=2
+ else
+ repeat_fail=${CTEST_REPEAT_FAIL}
+ fi
+ ctest $parallel --timeout 1000 -O $1.txt -T test --no-compress-output --test-output-size-passed 4194304 --test-output-size-failed 4194304 --output-on-failure --repeat until-pass:${repeat_fail}
+ popd
+ grep -E "^(\s*[0-9]+|Total)" build/$1/$1.txt >build/$1.txt
+ sed -i "s/\x1B\[[0-9;]*[JKmsu]//g" build/$1.txt
+ if [[ $1 = *"_coverage" ]]; then
+ ./coverage.sh $1
+ fi
+}
+
+cd $(dirname $0)
+
+result=$(sed -n "/(BUILD_CONFIGURATIONS/,/)/p" CMakeLists.txt|sed ':label;N;s/\n/ /;b label'|grep -Pzo "[a-zA-Z0-9_]*build[a-zA-Z0-9_]*\s*"| tr -d '\0')
+IFS=' '
+read -ra build_configurations <<< "$result"
+
+if [ $# -lt 1 ]; then
+ help
+fi
+
+command=$1
+shift
+
+if [ "$#" == "0" ]; then
+ builds=${build_configurations[0]}
+elif [ "$*" == "all" ]; then
+ builds=${build_configurations[@]}
+else
+ for item in $*; do
+ validate $item
+ done
+ builds=$*
+fi
+
+if [ "$command" == "build" ]; then
+ for item in $builds; do
+ generate $item
+ echo ""
+ done
+
+ for item in $builds; do
+ echo "Building $item"
+ build $item
+ echo ""
+ done
+elif [ "$command" == "test" ]; then
+ cores=$(nproc)
+ if [ -z "${CTEST_PARALLEL_LEVEL}" ];
+ then
+ # Run builds in parallel
+ build_counts=$(echo $builds | wc -w)
+ parallel_jobs=$(($cores / $build_counts))
+ parallel_jobs=$(($parallel_jobs + 2))
+ pids=""
+ for item in $builds; do
+ echo "Testing $item"
+ test $item $parallel_jobs &
+ pids+=" $!"
+ done
+ exit_code=0
+ for p in $pids; do
+ wait $p || exit_code=$?
+ done
+ exit $exit_code
+ else
+ # Run builds in serial
+ for item in $builds; do
+ echo "Testing $item"
+ test $item $parallel_jobs
+ done
+ fi
+elif [ "$command" == "build_libs" ]; then
+ build_libs
+else
+ help
+fi
diff --git a/scripts/test_smp.sh b/scripts/test_smp.sh
new file mode 100755
index 00000000..135f0847
--- /dev/null
+++ b/scripts/test_smp.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+CTEST_PARALLEL_LEVEL=4 $(dirname `realpath $0`)/../test/smp/cmake/run.sh test all
diff --git a/scripts/test_tx.sh b/scripts/test_tx.sh
new file mode 100755
index 00000000..613b086c
--- /dev/null
+++ b/scripts/test_tx.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+CTEST_PARALLEL_LEVEL=4 $(dirname `realpath $0`)/../test/tx/cmake/run.sh test all