Skip to content

Auto avalanchego #30

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Aug 4, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 2 additions & 41 deletions scripts/tests.e2e.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,50 +7,11 @@ if ! [[ "$0" =~ scripts/tests.e2e.sh ]]; then
exit 255
fi

AVALANCHEGO_VERSION=$1
if [[ -z "${AVALANCHEGO_VERSION}" ]]; then
echo "Missing avalanchego version argument!"
echo "Usage: ${0} [AVALANCHEGO_VERSION]" >> /dev/stderr
exit 255
fi

echo "Running with:"
echo AVALANCHEGO_VERSION: ${AVALANCHEGO_VERSION}

############################
# download avalanchego
# https://github.com/ava-labs/avalanchego/releases
GOARCH=$(go env GOARCH)
GOOS=$(go env GOOS)
DOWNLOAD_URL=https://github.com/ava-labs/avalanchego/releases/download/v${AVALANCHEGO_VERSION}/avalanchego-linux-${GOARCH}-v${AVALANCHEGO_VERSION}.tar.gz
DOWNLOAD_PATH=/tmp/avalanchego.tar.gz
if [[ ${GOOS} == "darwin" ]]; then
DOWNLOAD_URL=https://github.com/ava-labs/avalanchego/releases/download/v${AVALANCHEGO_VERSION}/avalanchego-macos-v${AVALANCHEGO_VERSION}.zip
DOWNLOAD_PATH=/tmp/avalanchego.zip
fi

rm -rf /tmp/avalanchego-v${AVALANCHEGO_VERSION}
rm -f ${DOWNLOAD_PATH}

echo "downloading avalanchego ${AVALANCHEGO_VERSION} at ${DOWNLOAD_URL}"
curl -L ${DOWNLOAD_URL} -o ${DOWNLOAD_PATH}

echo "extracting downloaded avalanchego"
if [[ ${GOOS} == "linux" ]]; then
tar xzvf ${DOWNLOAD_PATH} -C /tmp
elif [[ ${GOOS} == "darwin" ]]; then
unzip ${DOWNLOAD_PATH} -d /tmp/avalanchego-build
mv /tmp/avalanchego-build/build /tmp/avalanchego-v${AVALANCHEGO_VERSION}
fi
find /tmp/avalanchego-v${AVALANCHEGO_VERSION}

AVALANCHEGO_PATH=/tmp/avalanchego-v${AVALANCHEGO_VERSION}/avalanchego
AVALANCHEGO_PLUGIN_DIR=/tmp/avalanchego-v${AVALANCHEGO_VERSION}/plugins

#################################
# download avalanche-network-runner
# https://github.com/ava-labs/avalanche-network-runner
# TODO: use "go install -v github.com/ava-labs/avalanche-network-runner/cmd/avalanche-network-runner@v${NETWORK_RUNNER_VERSION}"
GOOS=$(go env GOOS) # ensures that the compatible network runner version is downloaded for this machine
NETWORK_RUNNER_VERSION=1.1.0
DOWNLOAD_PATH=/tmp/avalanche-network-runner.tar.gz
DOWNLOAD_URL=https://github.com/ava-labs/avalanche-network-runner/releases/download/v${NETWORK_RUNNER_VERSION}/avalanche-network-runner_${NETWORK_RUNNER_VERSION}_linux_amd64.tar.gz
Expand All @@ -77,12 +38,12 @@ server \
--port=":12342" \
--grpc-gateway-port=":12343" &
NETWORK_RUNNER_PID=${!}
sleep 5 # sleep to ensure that network runner initializes before e2e tests begin

#################################
# do not run in parallel, to run in sequence
echo "running e2e tests"
NETWORK_RUNNER_GRPC_ENDPOINT=http://127.0.0.1:12342 \
NETWORK_RUNNER_AVALANCHEGO_PATH=${AVALANCHEGO_PATH} \
RUST_LOG=debug \
cargo test --all-features --package e2e -- --show-output --nocapture

Expand Down
1 change: 1 addition & 0 deletions tests/e2e/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ homepage = "https://avax.network"
[dependencies]

[dev-dependencies]
avalanche-installer = "0.0.4"
avalanche-network-runner-sdk = { version = "0.0.1" }
env_logger = "0.9.0"
log = "0.4.17"
Expand Down
30 changes: 21 additions & 9 deletions tests/e2e/src/tests/mod.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
use std::{
process::Command,
thread,
time::{Duration, Instant},
};
Expand All @@ -7,6 +8,8 @@ use log::{info, warn};

use avalanche_network_runner_sdk::{Client, GlobalConfig, StartRequest};

const RELEASE: &str = "v1.7.16";

#[tokio::test]
async fn e2e() {
let _ = env_logger::builder()
Expand All @@ -23,8 +26,16 @@ async fn e2e() {
let resp = cli.ping().await.expect("failed ping");
info!("network-runner is running (ping response {:?})", resp);

let (exec_path, is_set) = get_network_runner_avalanchego_path();
assert!(is_set);
// Download avalanchego
let (exec_path, _) =
avalanche_installer::avalanchego::download(None, None, Some(String::from(RELEASE)))
.await
.expect("failed to download avalanchego");

info!(
"running avalanchego version {}",
get_avalanchego_version(&exec_path)
);

let global_config = GlobalConfig {
log_level: String::from("info"),
Expand Down Expand Up @@ -108,15 +119,16 @@ async fn e2e() {
info!("successfully stopped network");
}

fn get_network_runner_grpc_endpoint() -> (String, bool) {
match std::env::var("NETWORK_RUNNER_GRPC_ENDPOINT") {
Ok(s) => (s, true),
_ => (String::new(), false),
}
fn get_avalanchego_version(exec_path: &String) -> String {
let output = Command::new(exec_path)
.arg("--version")
.output()
.expect("failed to get avalanchego version");
format!("{}", String::from_utf8(output.stdout).unwrap())
}

fn get_network_runner_avalanchego_path() -> (String, bool) {
match std::env::var("NETWORK_RUNNER_AVALANCHEGO_PATH") {
fn get_network_runner_grpc_endpoint() -> (String, bool) {
match std::env::var("NETWORK_RUNNER_GRPC_ENDPOINT") {
Ok(s) => (s, true),
_ => (String::new(), false),
}
Expand Down