2018-11-11 08:19:04 -08:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
set -e
|
2018-05-27 18:19:07 -07:00
|
|
|
cd "$(dirname "$0")/.."
|
2018-05-21 23:02:54 -07:00
|
|
|
|
2020-10-12 20:19:41 -07:00
|
|
|
cargo="$(readlink -f "./cargo")"
|
|
|
|
|
2018-12-18 14:25:10 -08:00
|
|
|
source ci/_
|
2019-02-21 22:38:36 -08:00
|
|
|
|
|
|
|
annotate() {
|
|
|
|
${BUILDKITE:-false} && {
|
|
|
|
buildkite-agent annotate "$@"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-11-14 13:36:08 -08:00
|
|
|
# Run the appropriate test based on entrypoint
|
|
|
|
testName=$(basename "$0" .sh)
|
|
|
|
|
2019-03-14 19:41:05 -07:00
|
|
|
source ci/rust-version.sh stable
|
|
|
|
|
2018-06-24 21:24:08 -07:00
|
|
|
export RUST_BACKTRACE=1
|
2018-09-20 18:51:11 -07:00
|
|
|
export RUSTFLAGS="-D warnings"
|
2019-02-02 10:42:08 -08:00
|
|
|
source scripts/ulimit-n.sh
|
2019-02-21 22:38:36 -08:00
|
|
|
|
2022-01-28 14:46:46 -08:00
|
|
|
# limit jobs to 4gb/thread
|
|
|
|
JOBS=$(grep MemTotal /proc/meminfo | awk '{printf "%.0f", ($2 / (4 * 1024 * 1024))}')
|
2020-04-14 16:40:13 -07:00
|
|
|
NPROC=$(nproc)
|
2022-01-28 14:46:46 -08:00
|
|
|
JOBS=$((JOBS>NPROC ? NPROC : JOBS))
|
|
|
|
|
2020-04-14 16:40:13 -07:00
|
|
|
|
2019-11-08 19:40:03 -08:00
|
|
|
echo "Executing $testName"
|
2019-02-21 22:38:36 -08:00
|
|
|
case $testName in
|
|
|
|
test-stable)
|
2022-04-15 18:40:27 -07:00
|
|
|
_ "$cargo" stable test --jobs "$JOBS" --all --tests --exclude solana-local-cluster ${V:+--verbose} -- --nocapture
|
2019-02-21 22:38:36 -08:00
|
|
|
;;
|
2021-07-08 20:49:00 -07:00
|
|
|
test-stable-bpf)
|
|
|
|
# Clear the C dependency files, if dependency moves these files are not regenerated
|
|
|
|
test -d target/debug/bpf && find target/debug/bpf -name '*.d' -delete
|
|
|
|
test -d target/release/bpf && find target/release/bpf -name '*.d' -delete
|
|
|
|
|
2021-07-08 21:58:09 -07:00
|
|
|
# rustfilt required for dumping BPF assembly listings
|
|
|
|
"$cargo" install rustfilt
|
|
|
|
|
2021-02-04 13:56:12 -08:00
|
|
|
# solana-keygen required when building C programs
|
|
|
|
_ "$cargo" build --manifest-path=keygen/Cargo.toml
|
2021-07-30 15:15:06 -07:00
|
|
|
|
2021-02-04 13:56:12 -08:00
|
|
|
export PATH="$PWD/target/debug":$PATH
|
2021-07-08 21:58:09 -07:00
|
|
|
cargo_build_bpf="$(realpath ./cargo-build-bpf)"
|
2021-07-30 15:15:06 -07:00
|
|
|
cargo_test_bpf="$(realpath ./cargo-test-bpf)"
|
2021-02-04 13:56:12 -08:00
|
|
|
|
2020-10-19 13:19:24 -07:00
|
|
|
# BPF solana-sdk legacy compile test
|
2021-07-08 21:58:09 -07:00
|
|
|
"$cargo_build_bpf" --manifest-path sdk/Cargo.toml
|
2020-10-19 13:19:24 -07:00
|
|
|
|
2021-07-30 15:15:06 -07:00
|
|
|
# BPF C program system tests
|
2019-04-17 14:05:49 -07:00
|
|
|
_ make -C programs/bpf/c tests
|
2020-10-12 20:19:41 -07:00
|
|
|
_ "$cargo" stable test \
|
2019-04-17 14:05:49 -07:00
|
|
|
--manifest-path programs/bpf/Cargo.toml \
|
2019-10-08 22:34:26 -07:00
|
|
|
--no-default-features --features=bpf_c,bpf_rust -- --nocapture
|
2021-07-08 21:58:09 -07:00
|
|
|
|
2021-07-30 15:15:06 -07:00
|
|
|
# BPF Rust program unit tests
|
2021-07-08 21:58:09 -07:00
|
|
|
for bpf_test in programs/bpf/rust/*; do
|
|
|
|
if pushd "$bpf_test"; then
|
2021-07-30 15:15:06 -07:00
|
|
|
"$cargo" test
|
|
|
|
"$cargo_build_bpf" --bpf-sdk ../../../../sdk/bpf --dump
|
|
|
|
"$cargo_test_bpf" --bpf-sdk ../../../../sdk/bpf
|
2021-07-08 21:58:09 -07:00
|
|
|
popd
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
2021-12-22 15:10:25 -08:00
|
|
|
# bpf-tools version
|
|
|
|
"$cargo_build_bpf" -V
|
|
|
|
|
2021-07-08 21:58:09 -07:00
|
|
|
# BPF program instruction count assertion
|
|
|
|
bpf_target_path=programs/bpf/target
|
|
|
|
_ "$cargo" stable test \
|
|
|
|
--manifest-path programs/bpf/Cargo.toml \
|
|
|
|
--no-default-features --features=bpf_c,bpf_rust assert_instruction_count \
|
|
|
|
-- --nocapture &> "${bpf_target_path}"/deploy/instuction_counts.txt
|
|
|
|
|
|
|
|
bpf_dump_archive="bpf-dumps.tar.bz2"
|
|
|
|
rm -f "$bpf_dump_archive"
|
|
|
|
tar cjvf "$bpf_dump_archive" "${bpf_target_path}"/{deploy/*.txt,bpfel-unknown-unknown/release/*.so}
|
2021-08-02 11:00:36 -07:00
|
|
|
exit 0
|
2021-07-08 20:49:00 -07:00
|
|
|
;;
|
|
|
|
test-stable-perf)
|
2019-06-18 08:24:41 -07:00
|
|
|
if [[ $(uname) = Linux ]]; then
|
2019-02-27 08:18:29 -08:00
|
|
|
# Enable persistence mode to keep the CUDA kernel driver loaded, avoiding a
|
|
|
|
# lengthy and unexpected delay the first time CUDA is involved when the driver
|
|
|
|
# is not yet loaded.
|
2021-06-21 20:17:04 -07:00
|
|
|
sudo --non-interactive ./net/scripts/enable-nvidia-persistence-mode.sh || true
|
2019-02-27 08:18:29 -08:00
|
|
|
|
2019-05-25 14:41:09 -07:00
|
|
|
rm -rf target/perf-libs
|
2019-02-27 08:18:29 -08:00
|
|
|
./fetch-perf-libs.sh
|
2019-09-26 13:36:51 -07:00
|
|
|
|
|
|
|
# Force CUDA for solana-core unit tests
|
|
|
|
export TEST_PERF_LIBS_CUDA=1
|
|
|
|
|
|
|
|
# Force CUDA in ci/localnet-sanity.sh
|
2019-09-19 08:52:00 -07:00
|
|
|
export SOLANA_CUDA=1
|
2019-02-27 08:18:29 -08:00
|
|
|
fi
|
|
|
|
|
2020-10-12 20:19:41 -07:00
|
|
|
_ "$cargo" stable build --bins ${V:+--verbose}
|
|
|
|
_ "$cargo" stable test --package solana-perf --package solana-ledger --package solana-core --lib ${V:+--verbose} -- --nocapture
|
|
|
|
_ "$cargo" stable run --manifest-path poh-bench/Cargo.toml ${V:+--verbose} -- --hashes-per-tick 10
|
2019-02-21 22:38:36 -08:00
|
|
|
;;
|
2019-09-18 13:10:50 -07:00
|
|
|
test-local-cluster)
|
2020-10-12 20:19:41 -07:00
|
|
|
_ "$cargo" stable build --release --bins ${V:+--verbose}
|
2022-01-05 06:44:15 -08:00
|
|
|
_ "$cargo" stable test --release --package solana-local-cluster --test local_cluster ${V:+--verbose} -- --nocapture --test-threads=1
|
|
|
|
exit 0
|
|
|
|
;;
|
|
|
|
test-local-cluster-flakey)
|
|
|
|
_ "$cargo" stable build --release --bins ${V:+--verbose}
|
|
|
|
_ "$cargo" stable test --release --package solana-local-cluster --test local_cluster_flakey ${V:+--verbose} -- --nocapture --test-threads=1
|
|
|
|
exit 0
|
|
|
|
;;
|
2022-05-04 04:03:38 -07:00
|
|
|
test-local-cluster-slow-1)
|
2022-01-05 06:44:15 -08:00
|
|
|
_ "$cargo" stable build --release --bins ${V:+--verbose}
|
2022-05-04 04:03:38 -07:00
|
|
|
_ "$cargo" stable test --release --package solana-local-cluster --test local_cluster_slow_1 ${V:+--verbose} -- --nocapture --test-threads=1
|
|
|
|
exit 0
|
|
|
|
;;
|
|
|
|
test-local-cluster-slow-2)
|
|
|
|
_ "$cargo" stable build --release --bins ${V:+--verbose}
|
|
|
|
_ "$cargo" stable test --release --package solana-local-cluster --test local_cluster_slow_2 ${V:+--verbose} -- --nocapture --test-threads=1
|
2019-09-18 13:10:50 -07:00
|
|
|
exit 0
|
|
|
|
;;
|
2021-10-13 16:52:52 -07:00
|
|
|
test-wasm)
|
|
|
|
_ node --version
|
|
|
|
_ npm --version
|
|
|
|
for dir in sdk/{program,}; do
|
|
|
|
if [[ -r "$dir"/package.json ]]; then
|
|
|
|
pushd "$dir"
|
|
|
|
_ npm install
|
|
|
|
_ npm test
|
|
|
|
popd
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
exit 0
|
|
|
|
;;
|
2022-04-15 18:40:27 -07:00
|
|
|
test-docs)
|
|
|
|
_ "$cargo" stable test --jobs "$JOBS" --all --doc --exclude solana-local-cluster ${V:+--verbose} -- --nocapture
|
|
|
|
exit 0
|
|
|
|
;;
|
2019-02-21 22:38:36 -08:00
|
|
|
*)
|
|
|
|
echo "Error: Unknown test: $testName"
|
|
|
|
;;
|
|
|
|
esac
|
2018-10-30 22:53:36 -07:00
|
|
|
|
2018-07-30 12:51:35 -07:00
|
|
|
(
|
2019-11-15 22:56:29 -08:00
|
|
|
export CARGO_TOOLCHAIN=+"$rust_stable"
|
|
|
|
echo --- ci/localnet-sanity.sh
|
2019-09-19 08:52:00 -07:00
|
|
|
ci/localnet-sanity.sh -x
|
2019-11-15 22:56:29 -08:00
|
|
|
|
|
|
|
echo --- ci/run-sanity.sh
|
|
|
|
ci/run-sanity.sh -x
|
2018-07-30 12:51:35 -07:00
|
|
|
)
|