From 3610768888e3e4823627518dcc1bdadcf5cf1854 Mon Sep 17 00:00:00 2001 From: Jack May Date: Thu, 21 Feb 2019 22:38:36 -0800 Subject: [PATCH] Run featurized tests on sub-packages (#2867) --- Cargo.toml | 2 - ci/integration-tests.sh | 25 ---------- ci/test-stable-perf.sh | 46 +----------------- ci/test-stable.sh | 102 +++++++++++++++++++++++++++++++--------- 4 files changed, 81 insertions(+), 94 deletions(-) delete mode 100755 ci/integration-tests.sh mode change 100755 => 120000 ci/test-stable-perf.sh diff --git a/Cargo.toml b/Cargo.toml index fe403c8c61..b5ebd5ffa5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,8 +14,6 @@ edition = "2018" codecov = { repository = "solana-labs/solana", branch = "master", service = "github" } [features] -bpf_c = [] -bpf_rust = [] chacha = [] cuda = [] erasure = [] diff --git a/ci/integration-tests.sh b/ci/integration-tests.sh deleted file mode 100755 index 5e3b6ee70e..0000000000 --- a/ci/integration-tests.sh +++ /dev/null @@ -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 diff --git a/ci/test-stable-perf.sh b/ci/test-stable-perf.sh deleted file mode 100755 index b3ce8d248c..0000000000 --- a/ci/test-stable-perf.sh +++ /dev/null @@ -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" - diff --git a/ci/test-stable-perf.sh b/ci/test-stable-perf.sh new file mode 120000 index 0000000000..0c92a5c7bd --- /dev/null +++ b/ci/test-stable-perf.sh @@ -0,0 +1 @@ +test-stable.sh \ No newline at end of file diff --git a/ci/test-stable.sh b/ci/test-stable.sh index d974206058..a5bc09fee2 100755 --- a/ci/test-stable.sh +++ b/ci/test-stable.sh @@ -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 )