| 
									
										
										
										
											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 21:19:41 -06: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 14:36:08 -07: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 23:46:46 +01: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 23:46:46 +01:00
										 |  |  | JOBS=$((JOBS>NPROC ? NPROC : JOBS)) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-14 16:40:13 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-08 20:40:03 -07:00
										 |  |  | echo "Executing $testName" | 
					
						
							| 
									
										
										
										
											2019-02-21 22:38:36 -08:00
										 |  |  | case $testName in | 
					
						
							|  |  |  | test-stable) | 
					
						
							| 
									
										
										
										
											2022-01-28 23:46:46 +01:00
										 |  |  |   _ "$cargo" stable test --jobs "$JOBS" --all --exclude solana-local-cluster ${V:+--verbose} -- --nocapture | 
					
						
							| 
									
										
										
										
											2019-02-21 22:38:36 -08:00
										 |  |  |   ;; | 
					
						
							| 
									
										
										
										
											2021-07-08 21:49:00 -06: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 22:58:09 -06: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 22:58:09 -06: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 22:58:09 -06: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 15:05:49 -06:00
										 |  |  |   _ make -C programs/bpf/c tests | 
					
						
							| 
									
										
										
										
											2020-10-12 21:19:41 -06:00
										 |  |  |   _ "$cargo" stable test \
 | 
					
						
							| 
									
										
										
										
											2019-04-17 15:05:49 -06: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 22:58:09 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-30 15:15:06 -07:00
										 |  |  |   # BPF Rust program unit tests | 
					
						
							| 
									
										
										
										
											2021-07-08 22:58:09 -06: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 22:58:09 -06:00
										 |  |  |       popd | 
					
						
							|  |  |  |     fi | 
					
						
							|  |  |  |   done | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-22 15:10:25 -08:00
										 |  |  |   # bpf-tools version | 
					
						
							|  |  |  |   "$cargo_build_bpf" -V | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-08 22:58:09 -06: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 12:00:36 -06:00
										 |  |  |   exit 0 | 
					
						
							| 
									
										
										
										
											2021-07-08 21:49:00 -06: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 21:17:04 -06: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 21:19:41 -06: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 21:19:41 -06:00
										 |  |  |   _ "$cargo" stable build --release --bins ${V:+--verbose} | 
					
						
							| 
									
										
										
										
											2022-01-05 22: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 | 
					
						
							|  |  |  |   ;; | 
					
						
							|  |  |  | test-local-cluster-slow) | 
					
						
							|  |  |  |   _ "$cargo" stable build --release --bins ${V:+--verbose} | 
					
						
							|  |  |  |   _ "$cargo" stable test --release --package solana-local-cluster --test local_cluster_slow ${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 | 
					
						
							|  |  |  |   ;; | 
					
						
							| 
									
										
										
										
											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-16 15:56:29 +09: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-16 15:56:29 +09:00
										 |  |  | 
 | 
					
						
							|  |  |  |   echo --- ci/run-sanity.sh | 
					
						
							|  |  |  |   ci/run-sanity.sh -x | 
					
						
							| 
									
										
										
										
											2018-07-30 12:51:35 -07:00
										 |  |  | ) |