Skip to content

Commit 778d26b

Browse files
e2e automatically installs avalanchego
automatically installs avalanchego e2e test installs avalanchego via installer e2e test installs avalanchego via installer changed e2e tests e2e fixes
1 parent 8425657 commit 778d26b

File tree

3 files changed

+28
-45
lines changed

3 files changed

+28
-45
lines changed

scripts/tests.e2e.sh

Lines changed: 2 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -7,50 +7,11 @@ if ! [[ "$0" =~ scripts/tests.e2e.sh ]]; then
77
exit 255
88
fi
99

10-
AVALANCHEGO_VERSION=$1
11-
if [[ -z "${AVALANCHEGO_VERSION}" ]]; then
12-
echo "Missing avalanchego version argument!"
13-
echo "Usage: ${0} [AVALANCHEGO_VERSION]" >> /dev/stderr
14-
exit 255
15-
fi
16-
17-
echo "Running with:"
18-
echo AVALANCHEGO_VERSION: ${AVALANCHEGO_VERSION}
19-
20-
############################
21-
# download avalanchego
22-
# https://github.com/ava-labs/avalanchego/releases
23-
GOARCH=$(go env GOARCH)
24-
GOOS=$(go env GOOS)
25-
DOWNLOAD_URL=https://github.com/ava-labs/avalanchego/releases/download/v${AVALANCHEGO_VERSION}/avalanchego-linux-${GOARCH}-v${AVALANCHEGO_VERSION}.tar.gz
26-
DOWNLOAD_PATH=/tmp/avalanchego.tar.gz
27-
if [[ ${GOOS} == "darwin" ]]; then
28-
DOWNLOAD_URL=https://github.com/ava-labs/avalanchego/releases/download/v${AVALANCHEGO_VERSION}/avalanchego-macos-v${AVALANCHEGO_VERSION}.zip
29-
DOWNLOAD_PATH=/tmp/avalanchego.zip
30-
fi
31-
32-
rm -rf /tmp/avalanchego-v${AVALANCHEGO_VERSION}
33-
rm -f ${DOWNLOAD_PATH}
34-
35-
echo "downloading avalanchego ${AVALANCHEGO_VERSION} at ${DOWNLOAD_URL}"
36-
curl -L ${DOWNLOAD_URL} -o ${DOWNLOAD_PATH}
37-
38-
echo "extracting downloaded avalanchego"
39-
if [[ ${GOOS} == "linux" ]]; then
40-
tar xzvf ${DOWNLOAD_PATH} -C /tmp
41-
elif [[ ${GOOS} == "darwin" ]]; then
42-
unzip ${DOWNLOAD_PATH} -d /tmp/avalanchego-build
43-
mv /tmp/avalanchego-build/build /tmp/avalanchego-v${AVALANCHEGO_VERSION}
44-
fi
45-
find /tmp/avalanchego-v${AVALANCHEGO_VERSION}
46-
47-
AVALANCHEGO_PATH=/tmp/avalanchego-v${AVALANCHEGO_VERSION}/avalanchego
48-
AVALANCHEGO_PLUGIN_DIR=/tmp/avalanchego-v${AVALANCHEGO_VERSION}/plugins
49-
5010
#################################
5111
# download avalanche-network-runner
5212
# https://github.com/ava-labs/avalanche-network-runner
5313
# TODO: use "go install -v github.com/ava-labs/avalanche-network-runner/cmd/avalanche-network-runner@v${NETWORK_RUNNER_VERSION}"
14+
GOOS=$(go env GOOS) # ensures that the compatible network runner version is downloaded for this machine
5415
NETWORK_RUNNER_VERSION=1.1.0
5516
DOWNLOAD_PATH=/tmp/avalanche-network-runner.tar.gz
5617
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
@@ -77,12 +38,12 @@ server \
7738
--port=":12342" \
7839
--grpc-gateway-port=":12343" &
7940
NETWORK_RUNNER_PID=${!}
41+
sleep 5 # sleep to ensure that network runner initializes before e2e tests begin
8042

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

tests/e2e/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ homepage = "https://avax.network"
1111
[dependencies]
1212

1313
[dev-dependencies]
14+
avalanche-installer = "0.0.3"
1415
avalanche-network-runner-sdk = { version = "0.0.1" }
1516
env_logger = "0.9.0"
1617
log = "0.4.17"

tests/e2e/src/tests/mod.rs

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use std::{
22
thread,
33
time::{Duration, Instant},
4+
process::Command
45
};
56

67
use log::{info, warn};
@@ -23,8 +24,19 @@ async fn e2e() {
2324
let resp = cli.ping().await.expect("failed ping");
2425
info!("network-runner is running (ping response {:?})", resp);
2526

26-
let (exec_path, is_set) = get_network_runner_avalanchego_path();
27-
assert!(is_set);
27+
// Attempt to find network_runner_path. If not set, try to get the avalanchego_path.
28+
// If no avalanchego_path, automatically install new version
29+
let (mut exec_path, is_set) = get_avalanchego_path();
30+
if !is_set {
31+
info!("avalanchego_path not set, installing to temp");
32+
33+
let (path, _) = avalanche_installer::avalanchego::download(None, None)
34+
.await
35+
.expect("failed to download avalanchego");
36+
exec_path = path;
37+
}
38+
39+
info!("running avalanchego version {}", get_avalanchego_version(&exec_path));
2840

2941
let global_config = GlobalConfig {
3042
log_level: String::from("info"),
@@ -108,15 +120,24 @@ async fn e2e() {
108120
info!("successfully stopped network");
109121
}
110122

123+
fn get_avalanchego_version(exec_path: &String) -> String {
124+
let output = Command::new(exec_path)
125+
.arg("--version")
126+
.output()
127+
.expect("failed to get avalanchego version");
128+
format!("{}", String::from_utf8(output.stdout).unwrap())
129+
130+
}
131+
111132
fn get_network_runner_grpc_endpoint() -> (String, bool) {
112133
match std::env::var("NETWORK_RUNNER_GRPC_ENDPOINT") {
113134
Ok(s) => (s, true),
114135
_ => (String::new(), false),
115136
}
116137
}
117138

118-
fn get_network_runner_avalanchego_path() -> (String, bool) {
119-
match std::env::var("NETWORK_RUNNER_AVALANCHEGO_PATH") {
139+
fn get_avalanchego_path() -> (String, bool) {
140+
match std::env::var("AVALANCHEGO_PATH") {
120141
Ok(s) => (s, true),
121142
_ => (String::new(), false),
122143
}

0 commit comments

Comments
 (0)