Run featurized tests on sub-packages (#2867)

This commit is contained in:
Jack May 2019-02-21 22:38:36 -08:00 committed by GitHub
parent 4602d3bf46
commit 3610768888
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 81 additions and 94 deletions

View File

@ -14,8 +14,6 @@ edition = "2018"
codecov = { repository = "solana-labs/solana", branch = "master", service = "github" }
[features]
bpf_c = []
bpf_rust = []
chacha = []
cuda = []
erasure = []

View File

@ -1,25 +0,0 @@
#!/usr/bin/env bash
#
# Runs all integration tests in the tree serially
#
set -e
maybeFeatures=
if [[ -n $1 ]]; then
maybeFeatures="--features=$1"
fi
cd "$(dirname "$0")/.."
source ci/_
export RUST_BACKTRACE=1
source scripts/ulimit-n.sh
for test in {,*/}tests/*.rs; do
test=${test##*/} # basename x
test=${test%.rs} # basename x .rs
(
export RUST_LOG="$test"=trace,$RUST_LOG
# shellcheck disable=SC2086 # Don't want to double quote $maybeFeatures
_ cargo test --all ${V:+--verbose} $maybeFeatures --test="$test" \
-- --test-threads=1 --nocapture
)
done

View File

@ -1,45 +0,0 @@
#!/usr/bin/env bash
set -e
cd "$(dirname "$0")/.."
annotate() {
${BUILDKITE:-false} && {
buildkite-agent annotate "$@"
}
}
ci/affects-files.sh \
.rs$ \
Cargo.lock$ \
Cargo.toml$ \
ci/test-stable-perf.sh \
ci/test-stable.sh \
|| {
annotate --style info --context test-stable-perf \
"Stable Perf skipped as no .rs files were modified"
exit 0
}
# Run all BPF C tests
make -C programs/bpf/c tests
# Must be built out of band
make -C programs/bpf/rust/noop/ all
FEATURES=bpf_c,bpf_rust,erasure,chacha
if [[ $(uname) = Darwin ]]; then
./build-perf-libs.sh
else
# 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.
sudo --non-interactive ./net/scripts/enable-nvidia-persistence-mode.sh
./fetch-perf-libs.sh
# shellcheck source=/dev/null
source ./target/perf-libs/env.sh
FEATURES=$FEATURES,cuda
fi
exec ci/test-stable.sh "$FEATURES"

1
ci/test-stable-perf.sh Symbolic link
View File

@ -0,0 +1 @@
test-stable.sh

View File

@ -1,42 +1,100 @@
#!/usr/bin/env bash
set -e
FEATURES="$1"
cd "$(dirname "$0")/.."
source ci/_
annotate() {
${BUILDKITE:-false} && {
buildkite-agent annotate "$@"
}
}
ci/version-check-with-upgrade.sh stable
export RUST_BACKTRACE=1
export RUSTFLAGS="-D warnings"
source scripts/ulimit-n.sh
# Clear cached json keypair files
rm -rf "$HOME/.config/solana"
source ci/_
ci/version-check-with-upgrade.sh stable
export RUST_BACKTRACE=1
export RUSTFLAGS="-D warnings"
# Run tbe appropriate test based on entrypoint
testName=$(basename "$0" .sh)
case $testName in
test-stable)
echo "Executing $testName"
source scripts/ulimit-n.sh
maybeFeatures=
if [[ -n $FEATURES ]]; then
maybeFeatures="--features=$FEATURES"
_ cargo build --all ${V:+--verbose}
_ cargo test --all ${V:+--verbose} -- --nocapture --test-threads=1
;;
test-stable-perf)
echo "Executing $testName"
ci/affects-files.sh \
.rs$ \
Cargo.lock$ \
Cargo.toml$ \
ci/test-stable-perf.sh \
ci/test-stable.sh \
|| {
annotate --style info \
"Skipped tests as no relavant files were modified"
exit 0
}
# Run program package with these features
PROGRAM_FEATURES=bpf_c,bpf_rust
# Run all BPF C tests
_ make -C programs/bpf/c tests
# Must be built out of band
_ make -C programs/bpf/rust/noop/ all
_ cargo test --manifest-path programs/Cargo.toml --no-default-features --features="$PROGRAM_FEATURES"
_ cargo test --manifest-path programs/native/bpf_loader/Cargo.toml --no-default-features --features="$PROGRAM_FEATURES"
# Run root package tests witht these features
ROOT_FEATURES=erasure,chacha
if [[ $(uname) = Darwin ]]; then
./build-perf-libs.sh
else
# 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.
sudo --non-interactive ./net/scripts/enable-nvidia-persistence-mode.sh
./fetch-perf-libs.sh
# shellcheck source=/dev/null
source ./target/perf-libs/env.sh
ROOT_FEATURES=$ROOT_FEATURES,cuda
fi
# shellcheck disable=SC2086 # Don't want to double quote $maybeFeatures
_ cargo build --all ${V:+--verbose} $maybeFeatures
# shellcheck disable=SC2086 # Don't want to double quote $maybeFeatures
_ cargo test --all ${V:+--verbose} $maybeFeatures --lib -- --nocapture --test-threads=1
# Run native program tests (without $FEATURES)
for program in programs/native/*; do
echo --- "$program" test
# Run root package library tests
_ cargo build ${V:+--verbose} --features="$ROOT_FEATURES"
_ cargo test --lib ${V:+--verbose} --features="$ROOT_FEATURES" -- --nocapture --test-threads=1
# Run root package integration tests
for test in tests/*.rs; do
test=${test##*/} # basename x
test=${test%.rs} # basename x .rs
(
set -x
cd "$program"
cargo test ${V:+--verbose} -- --nocapture
export RUST_LOG="$test"=trace,$RUST_LOG
_ cargo test ${V:+--verbose} --features="$ROOT_FEATURES" --test="$test" \
-- --test-threads=1 --nocapture
)
done
;;
*)
echo "Error: Unknown test: $testName"
;;
esac
_ ci/integration-tests.sh "$FEATURES"
# Assumes target/debug is populated. Ensure last build command
# leaves target/debug in the state intended for localnet-sanity
echo --- ci/localnet-sanity.sh
(
set -x
# Assume |cargo build| has populated target/debug/ successfully.
export PATH=$PWD/target/debug:$PATH
USE_INSTALL=1 ci/localnet-sanity.sh -x
)