2025-05-13 19:44:53 +08:00

113 lines
4.1 KiB
Bash

#!/usr/bin/env bash
# Run Helper script for running test buckets across different CI systems.
#
# The CI tests for rocket-chip are split up into a number of different buckets
# in order to parallelize the test suite. The buckets are each assigned a
# number, starting with 1. To edit the buckets, simply edit the main `case`
# statement below.
set -euo pipefail
print_usage() {
echo "Usage: ${0} bucket-number"
}
if [[ $# -ne 1 ]]; then
echo "Missing required argument: test bucket number" >&2
print_usage
exit 1
fi
regression_dir=$(cd "$(dirname "$0")" ; pwd -P)
rocketchip_dir=$(dirname "${regression_dir}")
if [[ ${TRAVIS:-false} == true ]]; then
# If running on Travis CI, make sure that travis_wait is defined.
. "${regression_dir}/travis_whereami.bash"
. "${regression_dir}/travis_setup_env.bash"
. "${regression_dir}/travis_jigger.bash"
. "${regression_dir}/travis_wait.bash"
set +u
travis_setup_env
set -u
else
# If not running on Travis CI, Stub out the travis_wait to be a no-op, since
# it's unnecessary and it has some undesirable side effects such as hiding
# console output until the command finishes.
travis_wait() {
# Throw out first argument, which is the wait time in minutes.
shift
# Run the remaining arguments as a normal command.
"$@"
}
fi
# Always run from the root rocket-chip directory.
cd "${rocketchip_dir}"
# Test bucket definitions
bucket_number=$1
set -x
case "${bucket_number}" in
1)
# Temporarily disable this bucket, which is hitting OOM on Actions
#travis_wait 100 make emulator-ndebug -C regression SUITE=UnittestSuite JVM_MEMORY=3G VERILATOR_THREADS=1
#travis_wait 100 make emulator-regression-tests -C regression SUITE=UnittestSuite JVM_MEMORY=3G VERILATOR_THREADS=1
;;
2)
travis_wait 80 make emulator-ndebug -C regression SUITE=JtagDtmSuite JVM_MEMORY=3G
travis_wait 80 make emulator-jtag-dtm-tests-32 -C regression SUITE=JtagDtmSuite JVM_MEMORY=3G
travis_wait 80 make emulator-jtag-dtm-tests-64 -C regression SUITE=JtagDtmSuite JVM_MEMORY=3G
travis_wait 80 make emulator-jtag-dtm-tests-32 -C regression SUITE=JtagDtmSuite JTAG_DTM_TEST=DebugTest JVM_MEMORY=3G
travis_wait 80 make emulator-jtag-dtm-tests-64 -C regression SUITE=JtagDtmSuite JTAG_DTM_TEST=DebugTest JVM_MEMORY=3G
;;
3)
travis_wait 80 make emulator-ndebug -C regression SUITE=JtagDtmSuite JTAG_DTM_ENABLE_SBA=on JVM_MEMORY=3G
travis_wait 80 make emulator-jtag-dtm-tests-32 -C regression SUITE=JtagDtmSuite JTAG_DTM_TEST=MemTest64 JTAG_DTM_ENABLE_SBA=on JVM_MEMORY=3G
travis_wait 80 make emulator-jtag-dtm-tests-64 -C regression SUITE=JtagDtmSuite JTAG_DTM_TEST=MemTest64 JTAG_DTM_ENABLE_SBA=on JVM_MEMORY=3G
travis_wait 80 make emulator-jtag-dtm-tests-32 -C regression SUITE=JtagDtmSuite JTAG_DTM_TEST=MemTest32 JTAG_DTM_ENABLE_SBA=on JVM_MEMORY=3G
travis_wait 80 make emulator-jtag-dtm-tests-64 -C regression SUITE=JtagDtmSuite JTAG_DTM_TEST=MemTest32 JTAG_DTM_ENABLE_SBA=on JVM_MEMORY=3G
travis_wait 80 make emulator-jtag-dtm-tests-32 -C regression SUITE=JtagDtmSuite JTAG_DTM_TEST=MemTest8 JTAG_DTM_ENABLE_SBA=on JVM_MEMORY=3G
;;
4)
travis_wait 80 make emulator-ndebug -C regression SUITE=RocketSuiteB JVM_MEMORY=3G
travis_wait 80 make emulator-regression-tests -C regression SUITE=RocketSuiteB JVM_MEMORY=3G
;;
5)
travis_wait 80 make emulator-ndebug -C regression SUITE=RocketSuiteA JVM_MEMORY=3G
travis_wait 80 make emulator-regression-tests -C regression SUITE=RocketSuiteA JVM_MEMORY=3G
;;
6)
travis_wait 80 make emulator-ndebug -C regression SUITE=RocketSuiteC JVM_MEMORY=3G
make emulator-regression-tests -C regression SUITE=RocketSuiteC JVM_MEMORY=3G
;;
7)
travis_wait 100 make emulator-ndebug -C regression SUITE=Miscellaneous JVM_MEMORY=3G
;;
8)
make scalatest -C regression SUITE=foo JVM_MEMORY=8G
;;
9)
make scalafix-check -C regression SUITE=foo JVM_MEMORY=8G
;;
10)
./scripts/swap-sbt-build
make scalatest -C regression SUITE=foo JVM_MEMORY=8G
;;
-h|--help)
print_usage
;;
*)
echo "Error: Invalid bucket number: ${bucket_number}"
exit 2;
esac