From f004dd41c8777cfd58b21a3d0a4e31011bdfa95b Mon Sep 17 00:00:00 2001 From: Gyanendra Mishra Date: Thu, 11 May 2023 13:50:54 +0100 Subject: [PATCH 01/29] use Kurtosis to spin up nodes instead of script --- .github/workflows/ci.yml | 10 +++- go.mod | 13 +++++ go.sum | 30 ++++++++++++ scripts/run.sh | 55 --------------------- scripts/run_ginkgo.sh | 1 - tests/load/load_test.go | 20 ++++---- tests/precompile/precompile_test.go | 24 ++++----- tests/utils/node_launcher.go | 75 +++++++++++++++++++++++++++++ 8 files changed, 150 insertions(+), 78 deletions(-) delete mode 100755 scripts/run.sh create mode 100644 tests/utils/node_launcher.go diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4840e352a5..7b1b84574d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -64,7 +64,13 @@ jobs: - name: Set up Go uses: actions/setup-go@v3 with: - go-version: "1.19" + go-version: "1.20.4" + - name: Install & Restart Kurtosis + run: | + echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list + sudo apt update + sudo apt install kurtosis-cli + kurtosis engine restart - name: Use Node.js uses: actions/setup-node@v3 with: @@ -80,4 +86,4 @@ jobs: run: ./scripts/build.sh /tmp/e2e-test/avalanchego/plugins/srEXiWaHuhNyGwPUi444Tu47ZEDwxTWrbQiuD7FmgSAQ6X7Dy - name: Run E2E Tests shell: bash - run: AVALANCHEGO_BUILD_PATH=/tmp/e2e-test/avalanchego DATA_DIR=/tmp/e2e-test/data ./scripts/run_ginkgo.sh + run: AVALANCHEGO_BUILD_PATH=/tmp/e2e-test/avalanchego DATA_DIR=/tmp/e2e-test/data ./scripts/run_ginkgo.sh diff --git a/go.mod b/go.mod index b492061862..2e832eed48 100644 --- a/go.mod +++ b/go.mod @@ -21,6 +21,7 @@ require ( github.com/holiman/big v0.0.0-20221017200358-a027dc42d04e github.com/holiman/bloomfilter/v2 v2.0.3 github.com/holiman/uint256 v1.2.0 + github.com/kurtosis-tech/kurtosis/api/golang v0.76.4 github.com/mattn/go-colorable v0.1.12 github.com/mattn/go-isatty v0.0.14 github.com/olekukonko/tablewriter v0.0.5 @@ -48,6 +49,7 @@ require ( require ( github.com/DataDog/zstd v1.5.2 // indirect + github.com/Masterminds/semver/v3 v3.1.1 // indirect github.com/NYTimes/gziphandler v1.1.1 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect @@ -57,11 +59,13 @@ require ( github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect github.com/deepmap/oapi-codegen v1.8.2 // indirect + github.com/dsnet/compress v0.0.1 // indirect github.com/edsrzf/mmap-go v1.0.0 // indirect github.com/go-logr/logr v1.2.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.2.6 // indirect github.com/go-stack/stack v1.8.0 // indirect + github.com/go-yaml/yaml v2.1.0+incompatible // indirect github.com/golang-jwt/jwt/v4 v4.3.0 // indirect github.com/golang/mock v1.6.0 // indirect github.com/golang/protobuf v1.5.2 // indirect @@ -78,17 +82,23 @@ require ( github.com/influxdata/influxdb-client-go/v2 v2.4.0 // indirect github.com/influxdata/line-protocol v0.0.0-20210311194329-9aa0e372d097 // indirect github.com/jackpal/go-nat-pmp v1.0.2 // indirect + github.com/kurtosis-tech/kurtosis-portal/api/golang v0.0.0-20230328194643-b4dea3081e25 // indirect + github.com/kurtosis-tech/kurtosis/grpc-file-transfer/golang v0.0.0-20230427135111-ee2492059d06 // indirect + github.com/kurtosis-tech/stacktrace v0.0.0-20211028211901-1c67a77b5409 // indirect github.com/magiconair/properties v1.8.6 // indirect github.com/mattn/go-runewidth v0.0.9 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect + github.com/mholt/archiver v3.1.1+incompatible // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mitchellh/pointerstructure v1.2.0 // indirect github.com/mr-tron/base58 v1.2.0 // indirect github.com/nbutton23/zxcvbn-go v0.0.0-20180912185939-ae427f1e4c1d // indirect + github.com/nwaples/rardecode v1.1.3 // indirect github.com/opentracing/opentracing-go v1.1.0 // indirect github.com/pelletier/go-toml v1.9.5 // indirect github.com/pelletier/go-toml/v2 v2.0.1 // indirect github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7 // indirect + github.com/pierrec/lz4 v2.6.1+incompatible // indirect github.com/pires/go-proxyproto v0.6.2 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect @@ -97,6 +107,7 @@ require ( github.com/prometheus/tsdb v0.10.0 // indirect github.com/rs/cors v1.7.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect + github.com/sirupsen/logrus v1.8.1 // indirect github.com/spaolacci/murmur3 v1.1.0 // indirect github.com/spf13/afero v1.8.2 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect @@ -104,6 +115,8 @@ require ( github.com/supranational/blst v0.3.11-0.20220920110316-f72618070295 // indirect github.com/tklauser/go-sysconf v0.3.5 // indirect github.com/tklauser/numcpus v0.2.2 // indirect + github.com/ulikunitz/xz v0.5.10 // indirect + github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect github.com/yusufpapurcu/wmi v1.2.2 // indirect go.opentelemetry.io/otel v1.11.0 // indirect diff --git a/go.sum b/go.sum index c6d44c2cb0..966d08380d 100644 --- a/go.sum +++ b/go.sum @@ -46,6 +46,8 @@ github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= github.com/DataDog/zstd v1.5.2 h1:vUG4lAyuPCXO0TLbXvPv7EB7cNK1QV/luu55UHLrrn8= github.com/DataDog/zstd v1.5.2/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= +github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc= +github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I= github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= @@ -141,6 +143,9 @@ github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZm github.com/dgryski/go-bitstream v0.0.0-20180413035011-3522498ce2c8/go.mod h1:VMaSuZ+SZcx/wljOQKvp5srsbCiKDEb6K2wC4+PiBmQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/docker/docker v1.6.2 h1:HlFGsy+9/xrgMmhmN+NGhCc5SHGJ7I+kHosRR1xc/aI= +github.com/dsnet/compress v0.0.1 h1:PlZu0n3Tuv04TzpfPbrnI0HW/YwodEXDS+oPKahKF0Q= +github.com/dsnet/compress v0.0.1/go.mod h1:Aw8dCMJ7RioblQeTqt88akK31OvO8Dhf5JflhBbQEHo= +github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY= github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7joQ8SYLhZwfeOo6Ts= github.com/edsrzf/mmap-go v1.0.0 h1:CEBF7HpRnUCSJgGUb5h1Gm7e3VkmVDrR8lvWVLtrOFw= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= @@ -200,6 +205,8 @@ github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M= +github.com/go-yaml/yaml v2.1.0+incompatible h1:RYi2hDdss1u4YE7GwixGzWwVo47T8UQwnTLB6vQiq+o= +github.com/go-yaml/yaml v2.1.0+incompatible/go.mod h1:w2MrLa16VYP0jy6N7M5kHaCkaLENm+P+Tv+MfurjSw0= github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= @@ -357,7 +364,9 @@ github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQL github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg= github.com/klauspost/pgzip v1.0.2-0.20170402124221-0bf5dcad4ada/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -369,6 +378,14 @@ github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kurtosis-tech/kurtosis-portal/api/golang v0.0.0-20230328194643-b4dea3081e25 h1:ig5umBAI6smmP/4xPLSL5KSlH9N/bZURzDkJzD8qWb8= +github.com/kurtosis-tech/kurtosis-portal/api/golang v0.0.0-20230328194643-b4dea3081e25/go.mod h1:YjVghnKmmELgH8DmIKBFxwArWbtLUYqwnol9DAWnBM8= +github.com/kurtosis-tech/kurtosis/api/golang v0.76.4 h1:x0Crkqv+Y7qjj9SJh5SPDvA8r1E+G8KvVpMR6MUkC5w= +github.com/kurtosis-tech/kurtosis/api/golang v0.76.4/go.mod h1:rNZqlwD7O5ThA4Wx7yHtzF5b1nYNlOgDd8Od4d0kp1o= +github.com/kurtosis-tech/kurtosis/grpc-file-transfer/golang v0.0.0-20230427135111-ee2492059d06 h1:Y8JeWlV+R+ZOVCgIl+f3ltY3fvWHN22YvS43AV3c60g= +github.com/kurtosis-tech/kurtosis/grpc-file-transfer/golang v0.0.0-20230427135111-ee2492059d06/go.mod h1:Dw7pqbZWNdjGEYO6B+xzfaQrtXsLNDpYLhHfXirbzTs= +github.com/kurtosis-tech/stacktrace v0.0.0-20211028211901-1c67a77b5409 h1:YQTATifMUwZEtZYb0LVA7DK2pj8s71iY8rzweuUQ5+g= +github.com/kurtosis-tech/stacktrace v0.0.0-20211028211901-1c67a77b5409/go.mod h1:y5weVs5d9wXXHcDA1awRxkIhhHC1xxYJN8a7aXnE6S8= github.com/labstack/echo/v4 v4.2.1/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4FW1e6jwpg= github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= @@ -397,6 +414,8 @@ github.com/mattn/go-tty v0.0.0-20180907095812-13ff1204f104/go.mod h1:XPvLUNfbS4f github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/mholt/archiver v3.1.1+incompatible h1:1dCVxuqs0dJseYEhi5pl7MYPH9zDa1wBi7mF09cbNkU= +github.com/mholt/archiver v3.1.1+incompatible/go.mod h1:Dh2dOXnSdiLxRiPoVfIr/fI1TwETms9B8CTWfeh7ROU= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= @@ -414,6 +433,8 @@ github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRW github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/nbutton23/zxcvbn-go v0.0.0-20180912185939-ae427f1e4c1d h1:AREM5mwr4u1ORQBMvzfzBgpsctsbQikCVpvC+tX285E= github.com/nbutton23/zxcvbn-go v0.0.0-20180912185939-ae427f1e4c1d/go.mod h1:o96djdrsSGy3AWPyBgZMAGfxZNfgntdJG+11KU4QvbU= +github.com/nwaples/rardecode v1.1.3 h1:cWCaZwfM5H7nAD6PyEdcVnczzV8i/JtotnyW/dD9lEc= +github.com/nwaples/rardecode v1.1.3/go.mod h1:5DzqNKiOdpKKBH87u8VlvAnPZMXcGRhxWkRpHbbfGS0= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= @@ -452,6 +473,8 @@ github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7 h1:oYW+YCJ1pachXTQm github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0= github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pierrec/lz4 v2.6.1+incompatible h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9FV9ix19jjM= +github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pires/go-proxyproto v0.6.2 h1:KAZ7UteSOt6urjme6ZldyFm4wDe/z0ZUP0Yv0Dos0d8= github.com/pires/go-proxyproto v0.6.2/go.mod h1:Odh9VFOZJCf9G8cLW5o435Xf1J95Jw9Gw5rnCjcwzAY= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -510,6 +533,8 @@ github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMT github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= +github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= +github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= @@ -560,12 +585,17 @@ github.com/tklauser/numcpus v0.2.2 h1:oyhllyrScuYI6g+h/zUvNXNp1wy7x8qQy3t/piefld github.com/tklauser/numcpus v0.2.2/go.mod h1:x3qojaO3uyYt0i56EW/VUYs7uBvdl2fkfZFu0T9wgjM= github.com/tyler-smith/go-bip39 v1.0.2 h1:+t3w+KwLXO6154GNJY+qUtIxLTmFjfUmpguQT1OlOT8= github.com/tyler-smith/go-bip39 v1.0.2/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= +github.com/ulikunitz/xz v0.5.6/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= +github.com/ulikunitz/xz v0.5.10 h1:t92gobL9l3HE202wg3rlk19F6X+JOxl9BBrCCMYEYd8= +github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/urfave/cli/v2 v2.10.2 h1:x3p8awjp/2arX+Nl/G2040AZpOCHS/eMJJ1/a+mye4Y= github.com/urfave/cli/v2 v2.10.2/go.mod h1:f8iq5LtQ/bLxafbdBSLPPNsgaW0l/2fYYEHhAyPlwvo= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/willf/bitset v1.1.3/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= +github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofmx9yWTog9BfvIu0q41lo= +github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos= github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= diff --git a/scripts/run.sh b/scripts/run.sh deleted file mode 100755 index 699a7f4588..0000000000 --- a/scripts/run.sh +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env bash -set -e - -# This script starts N nodes (TODO N instead of 5) and waits for ctrl-c to shutdown the process group of AvalancheGo processes -# Uses data directory to store all AvalancheGo data neatly in one location with minimal config overhead -if ! [[ "$0" =~ scripts/run.sh ]]; then - echo "must be run from repository root, but got $0" - exit 255 -fi - -# Load the versions -SUBNET_EVM_PATH=$( - cd "$(dirname "${BASH_SOURCE[0]}")" - cd .. && pwd -) -source "$SUBNET_EVM_PATH"/scripts/versions.sh - -# Load the constants -source "$SUBNET_EVM_PATH"/scripts/constants.sh - -# Set up avalanche binary path and assume build directory is set -AVALANCHEGO_BUILD_PATH=${AVALANCHEGO_BUILD_PATH:-"$GOPATH/src/github.com/ava-labs/avalanchego/build"} -AVALANCHEGO_PATH=${AVALANCHEGO_PATH:-"$AVALANCHEGO_BUILD_PATH/avalanchego"} -AVALANCHEGO_PLUGIN_DIR=${AVALANCHEGO_PLUGIN_DIR:-"$AVALANCHEGO_BUILD_PATH/plugins"} -DATA_DIR=${DATA_DIR:-/tmp/subnet-evm-start-node/$(date "+%Y-%m-%d%:%H:%M:%S")} - -mkdir -p $DATA_DIR - -# Set the config file contents for the path passed in as the first argument -function _set_config(){ - cat <$1 - { - "network-id": "local", - "staking-enabled": false, - "health-check-frequency": "5s", - "plugin-dir": "$AVALANCHEGO_PLUGIN_DIR" - } -EOF -} - -function execute_cmd() { - echo "Executing command: $@" - $@ -} - -NODE_NAME="node1" -NODE_DATA_DIR="$DATA_DIR/$NODE_NAME" -echo "Creating data directory: $NODE_DATA_DIR" -mkdir -p $NODE_DATA_DIR -NODE_CONFIG_FILE_PATH="$NODE_DATA_DIR/config.json" -_set_config $NODE_CONFIG_FILE_PATH - -CMD="$AVALANCHEGO_PATH --data-dir=$NODE_DATA_DIR --config-file=$NODE_CONFIG_FILE_PATH" - -execute_cmd $CMD diff --git a/scripts/run_ginkgo.sh b/scripts/run_ginkgo.sh index db9bd61bf2..53d380fc8d 100755 --- a/scripts/run_ginkgo.sh +++ b/scripts/run_ginkgo.sh @@ -3,7 +3,6 @@ set -e # This script assumes that an AvalancheGo and Subnet-EVM binaries are available in the standard location # within the $GOPATH -# The AvalancheGo and PluginDir paths can be specified via the environment variables used in ./scripts/run.sh. # Load the versions SUBNET_EVM_PATH=$( diff --git a/tests/load/load_test.go b/tests/load/load_test.go index 68f7b5896b..5a852e7bb2 100644 --- a/tests/load/load_test.go +++ b/tests/load/load_test.go @@ -15,12 +15,11 @@ import ( "github.com/ava-labs/avalanchego/api/health" "github.com/ava-labs/subnet-evm/tests/utils" "github.com/ethereum/go-ethereum/log" - "github.com/go-cmd/cmd" ginkgo "github.com/onsi/ginkgo/v2" "github.com/onsi/gomega" ) -var startCmd *cmd.Cmd +var tearDown func() func TestE2E(t *testing.T) { gomega.RegisterFailHandler(ginkgo.Fail) @@ -32,14 +31,17 @@ var _ = ginkgo.BeforeSuite(func() { ctx, cancel := context.WithTimeout(context.Background(), time.Minute) defer cancel() - wd, err := os.Getwd() - gomega.Expect(err).Should(gomega.BeNil()) - log.Info("Starting AvalancheGo node", "wd", wd) - startCmd, err = utils.RunCommand("./scripts/run.sh") + log.Info("Starting AvalancheGo node") + err, nodeUrl, tearDownFunc := utils.SpinupAvalancheNode() gomega.Expect(err).Should(gomega.BeNil()) + gomega.Expect(tearDownFunc).ShouldNot(gomega.BeNil()) + tearDown = tearDownFunc + + // confirm that Kurtosis started the node on the expected url + gomega.Expect(nodeUrl).Should(gomega.Equal(utils.DefaultLocalNodeURI)) // Assumes that startCmd will launch a node with HTTP Port at [utils.DefaultLocalNodeURI] - healthClient := health.NewClient(utils.DefaultLocalNodeURI) + healthClient := health.NewClient(nodeUrl) healthy, err := health.AwaitReady(ctx, healthClient, 5*time.Second, nil) gomega.Expect(err).Should(gomega.BeNil()) gomega.Expect(healthy).Should(gomega.BeTrue()) @@ -72,8 +74,8 @@ var _ = ginkgo.Describe("[Load Simulator]", ginkgo.Ordered, func() { }) var _ = ginkgo.AfterSuite(func() { - gomega.Expect(startCmd).ShouldNot(gomega.BeNil()) - gomega.Expect(startCmd.Stop()).Should(gomega.BeNil()) + gomega.Expect(tearDown).ShouldNot(gomega.BeNil()) + tearDown() // TODO add a new node to bootstrap off of the existing node and ensure it can bootstrap all subnets // created during the test }) diff --git a/tests/precompile/precompile_test.go b/tests/precompile/precompile_test.go index b7d9c29242..e00a407357 100644 --- a/tests/precompile/precompile_test.go +++ b/tests/precompile/precompile_test.go @@ -5,14 +5,13 @@ package precompile import ( "context" - "os" "testing" "time" - "github.com/ava-labs/avalanchego/api/health" "github.com/ava-labs/subnet-evm/tests/utils" + + "github.com/ava-labs/avalanchego/api/health" "github.com/ethereum/go-ethereum/log" - "github.com/go-cmd/cmd" ginkgo "github.com/onsi/ginkgo/v2" "github.com/onsi/gomega" @@ -20,7 +19,7 @@ import ( _ "github.com/ava-labs/subnet-evm/tests/precompile/solidity" ) -var startCmd *cmd.Cmd +var tearDown func() func TestE2E(t *testing.T) { gomega.RegisterFailHandler(ginkgo.Fail) @@ -32,14 +31,17 @@ var _ = ginkgo.BeforeSuite(func() { ctx, cancel := context.WithTimeout(context.Background(), time.Minute) defer cancel() - wd, err := os.Getwd() - gomega.Expect(err).Should(gomega.BeNil()) - log.Info("Starting AvalancheGo node", "wd", wd) - startCmd, err = utils.RunCommand("./scripts/run.sh") + log.Info("Starting AvalancheGo node") + err, nodeUrl, tearDownFunc := utils.SpinupAvalancheNode() gomega.Expect(err).Should(gomega.BeNil()) + gomega.Expect(tearDownFunc).ShouldNot(gomega.BeNil()) + tearDown = tearDownFunc + + // confirm that Kurtosis started the node on the expected url + gomega.Expect(nodeUrl).Should(gomega.Equal(utils.DefaultLocalNodeURI)) // Assumes that startCmd will launch a node with HTTP Port at [utils.DefaultLocalNodeURI] - healthClient := health.NewClient(utils.DefaultLocalNodeURI) + healthClient := health.NewClient(nodeUrl) healthy, err := health.AwaitReady(ctx, healthClient, 5*time.Second, nil) gomega.Expect(err).Should(gomega.BeNil()) gomega.Expect(healthy).Should(gomega.BeTrue()) @@ -47,8 +49,8 @@ var _ = ginkgo.BeforeSuite(func() { }) var _ = ginkgo.AfterSuite(func() { - gomega.Expect(startCmd).ShouldNot(gomega.BeNil()) - gomega.Expect(startCmd.Stop()).Should(gomega.BeNil()) + gomega.Expect(tearDown).ShouldNot(gomega.BeNil()) + tearDown() // TODO add a new node to bootstrap off of the existing node and ensure it can bootstrap all subnets // created during the test }) diff --git a/tests/utils/node_launcher.go b/tests/utils/node_launcher.go new file mode 100644 index 0000000000..9c03cf4098 --- /dev/null +++ b/tests/utils/node_launcher.go @@ -0,0 +1,75 @@ +package utils + +import ( + "context" + "errors" + "fmt" + "time" + + "github.com/kurtosis-tech/kurtosis/api/golang/engine/lib/kurtosis_context" +) + +const ( + isPartitioningEnabled = false + enclaveIdPrefix = "test" + avalancheStarlarkPackage = "github.com/kurtosis-tech/avalanche-package" + // forces the node to launch on 9650 instead of ephemeral ports + forceExposeOn9650 = `{"test_mode": true}` + defaultParallelism = 4 + firstNodeId = "node-0" +) + +func SpinupAvalancheNode() (error, string, func()) { + ctx := context.Background() + + kurtosisCtx, err := kurtosis_context.NewKurtosisContextFromLocalEngine() + if err != nil { + return err, "", nil + } + + enclaveId := fmt.Sprintf("%s-%d", enclaveIdPrefix, time.Now().Unix()) + enclaveCtx, err := kurtosisCtx.CreateEnclave(ctx, enclaveId, isPartitioningEnabled) + if err != nil { + return err, "", nil + } + + runResult, err := enclaveCtx.RunStarlarkRemotePackageBlocking(ctx, avalancheStarlarkPackage, forceExposeOn9650, false, defaultParallelism) + if err != nil { + return err, "", nil + } + + if runResult.InterpretationError != nil { + return errors.New("error interpreting Starlark code"), "", nil + } + if len(runResult.ValidationErrors) != 0 { + return errors.New("error validating Starlark code"), "", nil + } + if runResult.ExecutionError != nil { + return errors.New("error executing Starlark code"), "", nil + } + + serviceCtx, err := enclaveCtx.GetServiceContext(firstNodeId) + if err != nil { + return nil, "", nil + } + + publicRpcPorts := serviceCtx.GetPublicPorts() + rpcPortSpec, found := publicRpcPorts["rpc"] + if !found { + return fmt.Errorf("couldn't find RPC port in the node '%v' that was spun up", firstNodeId), "", nil + } + + rpcPortNumber := rpcPortSpec.GetNumber() + + tearDownFunction := func() { + fmt.Println(fmt.Printf("Destroying enclave with id '%v'", enclaveId)) + if err = kurtosisCtx.StopEnclave(ctx, enclaveId); err != nil { + fmt.Printf("An error occurred while stopping the enclave with id '%v'\n", enclaveId) + } + if err = kurtosisCtx.DestroyEnclave(ctx, enclaveId); err != nil { + fmt.Printf("An error occurred while cleaning up the enclave with id '%v'\n", enclaveId) + } + } + + return nil, fmt.Sprintf("http://127.0.0.1:%d", rpcPortNumber), tearDownFunction +} From 250317a0c025cdab13e2b7a511f831dc3f05ef9a Mon Sep 17 00:00:00 2001 From: Gyanendra Mishra Date: Fri, 12 May 2023 13:30:56 +0100 Subject: [PATCH 02/29] cleanup ci --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7b1b84574d..d3e7195488 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -64,7 +64,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v3 with: - go-version: "1.20.4" + go-version: "1.19" - name: Install & Restart Kurtosis run: | echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list @@ -86,4 +86,4 @@ jobs: run: ./scripts/build.sh /tmp/e2e-test/avalanchego/plugins/srEXiWaHuhNyGwPUi444Tu47ZEDwxTWrbQiuD7FmgSAQ6X7Dy - name: Run E2E Tests shell: bash - run: AVALANCHEGO_BUILD_PATH=/tmp/e2e-test/avalanchego DATA_DIR=/tmp/e2e-test/data ./scripts/run_ginkgo.sh + run: AVALANCHEGO_BUILD_PATH=/tmp/e2e-test/avalanchego DATA_DIR=/tmp/e2e-test/data ./scripts/run_ginkgo.sh \ No newline at end of file From f4d2b991205fff24a29b584f9055dde3be92d494 Mon Sep 17 00:00:00 2001 From: Gyanendra Mishra Date: Wed, 17 May 2023 16:59:22 +0100 Subject: [PATCH 03/29] added new line Signed-off-by: Gyanendra Mishra --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d3e7195488..fc76919b18 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -86,4 +86,4 @@ jobs: run: ./scripts/build.sh /tmp/e2e-test/avalanchego/plugins/srEXiWaHuhNyGwPUi444Tu47ZEDwxTWrbQiuD7FmgSAQ6X7Dy - name: Run E2E Tests shell: bash - run: AVALANCHEGO_BUILD_PATH=/tmp/e2e-test/avalanchego DATA_DIR=/tmp/e2e-test/data ./scripts/run_ginkgo.sh \ No newline at end of file + run: AVALANCHEGO_BUILD_PATH=/tmp/e2e-test/avalanchego DATA_DIR=/tmp/e2e-test/data ./scripts/run_ginkgo.sh From 571b1f2959c2eefc9b2d6617e85245a8eec0c157 Mon Sep 17 00:00:00 2001 From: Gyanendra Mishra Date: Mon, 22 May 2023 21:51:24 +0100 Subject: [PATCH 04/29] use start instead of restart Signed-off-by: Gyanendra Mishra --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fc76919b18..9bd069bc61 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -70,7 +70,7 @@ jobs: echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list sudo apt update sudo apt install kurtosis-cli - kurtosis engine restart + kurtosis engine start - name: Use Node.js uses: actions/setup-node@v3 with: From c133539e0528e4f75fef78f1b486a8ae262f0958 Mon Sep 17 00:00:00 2001 From: Gyanendra Mishra Date: Mon, 22 May 2023 22:11:33 +0100 Subject: [PATCH 05/29] error is the last thing to be returned --- tests/load/load_test.go | 2 +- tests/precompile/precompile_test.go | 2 +- tests/utils/node_launcher.go | 20 ++++++++++---------- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/tests/load/load_test.go b/tests/load/load_test.go index 5a852e7bb2..f3774a3852 100644 --- a/tests/load/load_test.go +++ b/tests/load/load_test.go @@ -32,7 +32,7 @@ var _ = ginkgo.BeforeSuite(func() { defer cancel() log.Info("Starting AvalancheGo node") - err, nodeUrl, tearDownFunc := utils.SpinupAvalancheNode() + nodeUrl, tearDownFunc, err := utils.SpinupAvalancheNode() gomega.Expect(err).Should(gomega.BeNil()) gomega.Expect(tearDownFunc).ShouldNot(gomega.BeNil()) tearDown = tearDownFunc diff --git a/tests/precompile/precompile_test.go b/tests/precompile/precompile_test.go index e00a407357..590e45230b 100644 --- a/tests/precompile/precompile_test.go +++ b/tests/precompile/precompile_test.go @@ -32,7 +32,7 @@ var _ = ginkgo.BeforeSuite(func() { defer cancel() log.Info("Starting AvalancheGo node") - err, nodeUrl, tearDownFunc := utils.SpinupAvalancheNode() + nodeUrl, tearDownFunc, err := utils.SpinupAvalancheNode() gomega.Expect(err).Should(gomega.BeNil()) gomega.Expect(tearDownFunc).ShouldNot(gomega.BeNil()) tearDown = tearDownFunc diff --git a/tests/utils/node_launcher.go b/tests/utils/node_launcher.go index 9c03cf4098..8d99846898 100644 --- a/tests/utils/node_launcher.go +++ b/tests/utils/node_launcher.go @@ -19,44 +19,44 @@ const ( firstNodeId = "node-0" ) -func SpinupAvalancheNode() (error, string, func()) { +func SpinupAvalancheNode() (string, func(), error) { ctx := context.Background() kurtosisCtx, err := kurtosis_context.NewKurtosisContextFromLocalEngine() if err != nil { - return err, "", nil + return "", nil, err } enclaveId := fmt.Sprintf("%s-%d", enclaveIdPrefix, time.Now().Unix()) enclaveCtx, err := kurtosisCtx.CreateEnclave(ctx, enclaveId, isPartitioningEnabled) if err != nil { - return err, "", nil + return "", nil, err } runResult, err := enclaveCtx.RunStarlarkRemotePackageBlocking(ctx, avalancheStarlarkPackage, forceExposeOn9650, false, defaultParallelism) if err != nil { - return err, "", nil + return "", nil, err } if runResult.InterpretationError != nil { - return errors.New("error interpreting Starlark code"), "", nil + return "", nil, errors.New("error interpreting Starlark code") } if len(runResult.ValidationErrors) != 0 { - return errors.New("error validating Starlark code"), "", nil + return "", nil, errors.New("error validating Starlark code") } if runResult.ExecutionError != nil { - return errors.New("error executing Starlark code"), "", nil + return "", nil, errors.New("error executing Starlark code") } serviceCtx, err := enclaveCtx.GetServiceContext(firstNodeId) if err != nil { - return nil, "", nil + return "", nil, err } publicRpcPorts := serviceCtx.GetPublicPorts() rpcPortSpec, found := publicRpcPorts["rpc"] if !found { - return fmt.Errorf("couldn't find RPC port in the node '%v' that was spun up", firstNodeId), "", nil + return "", nil, fmt.Errorf("couldn't find RPC port in the node '%v' that was spun up", firstNodeId) } rpcPortNumber := rpcPortSpec.GetNumber() @@ -71,5 +71,5 @@ func SpinupAvalancheNode() (error, string, func()) { } } - return nil, fmt.Sprintf("http://127.0.0.1:%d", rpcPortNumber), tearDownFunction + return fmt.Sprintf("http://127.0.0.1:%d", rpcPortNumber), tearDownFunction, nil } From 11450f2b20f58cebab10396a30cd55ff857825f1 Mon Sep 17 00:00:00 2001 From: Gyanendra Mishra Date: Mon, 22 May 2023 22:15:17 +0100 Subject: [PATCH 06/29] fixed framing of KT job --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9bd069bc61..8e0dfa38f0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -65,7 +65,7 @@ jobs: uses: actions/setup-go@v3 with: go-version: "1.19" - - name: Install & Restart Kurtosis + - name: Install & Start Kurtosis run: | echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list sudo apt update From a24ee17bb546fa29a58665ef402e1d168b820c19 Mon Sep 17 00:00:00 2001 From: Gyanendra Mishra Date: Tue, 23 May 2023 10:59:06 +0100 Subject: [PATCH 07/29] Update tests/utils/node_launcher.go Co-authored-by: aaronbuchwald Signed-off-by: Gyanendra Mishra --- tests/utils/node_launcher.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/utils/node_launcher.go b/tests/utils/node_launcher.go index 8d99846898..7f497efcac 100644 --- a/tests/utils/node_launcher.go +++ b/tests/utils/node_launcher.go @@ -1,3 +1,6 @@ +// (c) 2023, Ava Labs, Inc. All rights reserved. +// See the file LICENSE for licensing terms. + package utils import ( From 2b2bc20ae2b0cd57ca6c7a67572e9847c201d54a Mon Sep 17 00:00:00 2001 From: Gyanendra Mishra Date: Tue, 23 May 2023 11:13:18 +0100 Subject: [PATCH 08/29] propagate various error types --- tests/utils/node_launcher.go | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/tests/utils/node_launcher.go b/tests/utils/node_launcher.go index 7f497efcac..dff5dddcd9 100644 --- a/tests/utils/node_launcher.go +++ b/tests/utils/node_launcher.go @@ -5,8 +5,8 @@ package utils import ( "context" - "errors" "fmt" + "strings" "time" "github.com/kurtosis-tech/kurtosis/api/golang/engine/lib/kurtosis_context" @@ -17,9 +17,10 @@ const ( enclaveIdPrefix = "test" avalancheStarlarkPackage = "github.com/kurtosis-tech/avalanche-package" // forces the node to launch on 9650 instead of ephemeral ports - forceExposeOn9650 = `{"test_mode": true}` - defaultParallelism = 4 - firstNodeId = "node-0" + forceExposeOn9650 = `{"test_mode": true}` + defaultParallelism = 4 + firstNodeId = "node-0" + validationErrorDelimiter = ", " ) func SpinupAvalancheNode() (string, func(), error) { @@ -42,13 +43,17 @@ func SpinupAvalancheNode() (string, func(), error) { } if runResult.InterpretationError != nil { - return "", nil, errors.New("error interpreting Starlark code") + return "", nil, fmt.Errorf("error interpreting Starlark code: %v", runResult.InterpretationError.GetErrorMessage()) } if len(runResult.ValidationErrors) != 0 { - return "", nil, errors.New("error validating Starlark code") + var validationErrors []string + for _, validationError := range runResult.ValidationErrors { + validationErrors = append(validationErrors, validationError.GetErrorMessage()) + } + return "", nil, fmt.Errorf("error validating Starlark code: %v", strings.Join(validationErrors, validationErrorDelimiter)) } if runResult.ExecutionError != nil { - return "", nil, errors.New("error executing Starlark code") + return "", nil, fmt.Errorf("error executing Starlark code: %v", runResult.ExecutionError.GetErrorMessage()) } serviceCtx, err := enclaveCtx.GetServiceContext(firstNodeId) From 2d86c0dae3942fd57203998885f83fc3fd852b28 Mon Sep 17 00:00:00 2001 From: Gyanendra Mishra Date: Tue, 23 May 2023 14:11:41 +0100 Subject: [PATCH 09/29] use the single error abstraction --- go.mod | 2 +- go.sum | 2 ++ tests/utils/node_launcher.go | 19 ++----------------- 3 files changed, 5 insertions(+), 18 deletions(-) diff --git a/go.mod b/go.mod index 2e832eed48..f7dd31c5b8 100644 --- a/go.mod +++ b/go.mod @@ -21,7 +21,7 @@ require ( github.com/holiman/big v0.0.0-20221017200358-a027dc42d04e github.com/holiman/bloomfilter/v2 v2.0.3 github.com/holiman/uint256 v1.2.0 - github.com/kurtosis-tech/kurtosis/api/golang v0.76.4 + github.com/kurtosis-tech/kurtosis/api/golang v0.76.8 github.com/mattn/go-colorable v0.1.12 github.com/mattn/go-isatty v0.0.14 github.com/olekukonko/tablewriter v0.0.5 diff --git a/go.sum b/go.sum index 966d08380d..18f7399f8a 100644 --- a/go.sum +++ b/go.sum @@ -382,6 +382,8 @@ github.com/kurtosis-tech/kurtosis-portal/api/golang v0.0.0-20230328194643-b4dea3 github.com/kurtosis-tech/kurtosis-portal/api/golang v0.0.0-20230328194643-b4dea3081e25/go.mod h1:YjVghnKmmELgH8DmIKBFxwArWbtLUYqwnol9DAWnBM8= github.com/kurtosis-tech/kurtosis/api/golang v0.76.4 h1:x0Crkqv+Y7qjj9SJh5SPDvA8r1E+G8KvVpMR6MUkC5w= github.com/kurtosis-tech/kurtosis/api/golang v0.76.4/go.mod h1:rNZqlwD7O5ThA4Wx7yHtzF5b1nYNlOgDd8Od4d0kp1o= +github.com/kurtosis-tech/kurtosis/api/golang v0.76.8 h1:cuWANqpnRXOtwtM/8NqD5MBqL5K3QEmy+u7EvwmOw2U= +github.com/kurtosis-tech/kurtosis/api/golang v0.76.8/go.mod h1:rNZqlwD7O5ThA4Wx7yHtzF5b1nYNlOgDd8Od4d0kp1o= github.com/kurtosis-tech/kurtosis/grpc-file-transfer/golang v0.0.0-20230427135111-ee2492059d06 h1:Y8JeWlV+R+ZOVCgIl+f3ltY3fvWHN22YvS43AV3c60g= github.com/kurtosis-tech/kurtosis/grpc-file-transfer/golang v0.0.0-20230427135111-ee2492059d06/go.mod h1:Dw7pqbZWNdjGEYO6B+xzfaQrtXsLNDpYLhHfXirbzTs= github.com/kurtosis-tech/stacktrace v0.0.0-20211028211901-1c67a77b5409 h1:YQTATifMUwZEtZYb0LVA7DK2pj8s71iY8rzweuUQ5+g= diff --git a/tests/utils/node_launcher.go b/tests/utils/node_launcher.go index dff5dddcd9..5825d2269d 100644 --- a/tests/utils/node_launcher.go +++ b/tests/utils/node_launcher.go @@ -6,7 +6,6 @@ package utils import ( "context" "fmt" - "strings" "time" "github.com/kurtosis-tech/kurtosis/api/golang/engine/lib/kurtosis_context" @@ -37,23 +36,9 @@ func SpinupAvalancheNode() (string, func(), error) { return "", nil, err } - runResult, err := enclaveCtx.RunStarlarkRemotePackageBlocking(ctx, avalancheStarlarkPackage, forceExposeOn9650, false, defaultParallelism) + _, err = enclaveCtx.RunStarlarkRemotePackageBlocking(ctx, avalancheStarlarkPackage, forceExposeOn9650, false, defaultParallelism) if err != nil { - return "", nil, err - } - - if runResult.InterpretationError != nil { - return "", nil, fmt.Errorf("error interpreting Starlark code: %v", runResult.InterpretationError.GetErrorMessage()) - } - if len(runResult.ValidationErrors) != 0 { - var validationErrors []string - for _, validationError := range runResult.ValidationErrors { - validationErrors = append(validationErrors, validationError.GetErrorMessage()) - } - return "", nil, fmt.Errorf("error validating Starlark code: %v", strings.Join(validationErrors, validationErrorDelimiter)) - } - if runResult.ExecutionError != nil { - return "", nil, fmt.Errorf("error executing Starlark code: %v", runResult.ExecutionError.GetErrorMessage()) + return "", nil, fmt.Errorf("an error occurred while running Starlark Package: %v", err) } serviceCtx, err := enclaveCtx.GetServiceContext(firstNodeId) From 74a1dead09c36c0818989705276be60f3c2896aa Mon Sep 17 00:00:00 2001 From: Gyanendra Mishra Date: Fri, 26 May 2023 14:46:47 +0100 Subject: [PATCH 10/29] pin 0.77.0 --- .github/workflows/ci.yml | 2 +- go.mod | 2 +- go.sum | 2 ++ tests/load/load_test.go | 8 +++-- tests/precompile/precompile_test.go | 8 +++-- tests/utils/constants.go | 5 +-- tests/utils/node_launcher.go | 49 +++++++++++++++++------------ 7 files changed, 46 insertions(+), 30 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8e0dfa38f0..34d9f729ef 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -69,7 +69,7 @@ jobs: run: | echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list sudo apt update - sudo apt install kurtosis-cli + sudo apt install kurtosis-cli=0.77.0 kurtosis engine start - name: Use Node.js uses: actions/setup-node@v3 diff --git a/go.mod b/go.mod index f7dd31c5b8..3148dfefc6 100644 --- a/go.mod +++ b/go.mod @@ -21,7 +21,7 @@ require ( github.com/holiman/big v0.0.0-20221017200358-a027dc42d04e github.com/holiman/bloomfilter/v2 v2.0.3 github.com/holiman/uint256 v1.2.0 - github.com/kurtosis-tech/kurtosis/api/golang v0.76.8 + github.com/kurtosis-tech/kurtosis/api/golang v0.77.0 github.com/mattn/go-colorable v0.1.12 github.com/mattn/go-isatty v0.0.14 github.com/olekukonko/tablewriter v0.0.5 diff --git a/go.sum b/go.sum index 18f7399f8a..156b502f53 100644 --- a/go.sum +++ b/go.sum @@ -384,6 +384,8 @@ github.com/kurtosis-tech/kurtosis/api/golang v0.76.4 h1:x0Crkqv+Y7qjj9SJh5SPDvA8 github.com/kurtosis-tech/kurtosis/api/golang v0.76.4/go.mod h1:rNZqlwD7O5ThA4Wx7yHtzF5b1nYNlOgDd8Od4d0kp1o= github.com/kurtosis-tech/kurtosis/api/golang v0.76.8 h1:cuWANqpnRXOtwtM/8NqD5MBqL5K3QEmy+u7EvwmOw2U= github.com/kurtosis-tech/kurtosis/api/golang v0.76.8/go.mod h1:rNZqlwD7O5ThA4Wx7yHtzF5b1nYNlOgDd8Od4d0kp1o= +github.com/kurtosis-tech/kurtosis/api/golang v0.77.0 h1:Jp5SFPGAUTevBNvaMjL2u+RipA9QX+Of8yQ+P8zkJXM= +github.com/kurtosis-tech/kurtosis/api/golang v0.77.0/go.mod h1:rNZqlwD7O5ThA4Wx7yHtzF5b1nYNlOgDd8Od4d0kp1o= github.com/kurtosis-tech/kurtosis/grpc-file-transfer/golang v0.0.0-20230427135111-ee2492059d06 h1:Y8JeWlV+R+ZOVCgIl+f3ltY3fvWHN22YvS43AV3c60g= github.com/kurtosis-tech/kurtosis/grpc-file-transfer/golang v0.0.0-20230427135111-ee2492059d06/go.mod h1:Dw7pqbZWNdjGEYO6B+xzfaQrtXsLNDpYLhHfXirbzTs= github.com/kurtosis-tech/stacktrace v0.0.0-20211028211901-1c67a77b5409 h1:YQTATifMUwZEtZYb0LVA7DK2pj8s71iY8rzweuUQ5+g= diff --git a/tests/load/load_test.go b/tests/load/load_test.go index f3774a3852..661507b63d 100644 --- a/tests/load/load_test.go +++ b/tests/load/load_test.go @@ -32,16 +32,18 @@ var _ = ginkgo.BeforeSuite(func() { defer cancel() log.Info("Starting AvalancheGo node") - nodeUrl, tearDownFunc, err := utils.SpinupAvalancheNode() + nodeUris, tearDownFunc, err := utils.SpinupAvalancheNodes(utils.DefaultNumberOfNodesToSpinUp) gomega.Expect(err).Should(gomega.BeNil()) gomega.Expect(tearDownFunc).ShouldNot(gomega.BeNil()) + gomega.Expect(nodeUris).ShouldNot(gomega.BeEmpty()) + firstNodeUri := nodeUris[0] tearDown = tearDownFunc // confirm that Kurtosis started the node on the expected url - gomega.Expect(nodeUrl).Should(gomega.Equal(utils.DefaultLocalNodeURI)) + gomega.Expect(firstNodeUri).Should(gomega.Equal(utils.DefaultLocalNodeURI)) // Assumes that startCmd will launch a node with HTTP Port at [utils.DefaultLocalNodeURI] - healthClient := health.NewClient(nodeUrl) + healthClient := health.NewClient(firstNodeUri) healthy, err := health.AwaitReady(ctx, healthClient, 5*time.Second, nil) gomega.Expect(err).Should(gomega.BeNil()) gomega.Expect(healthy).Should(gomega.BeTrue()) diff --git a/tests/precompile/precompile_test.go b/tests/precompile/precompile_test.go index 590e45230b..15e6ff1066 100644 --- a/tests/precompile/precompile_test.go +++ b/tests/precompile/precompile_test.go @@ -32,16 +32,18 @@ var _ = ginkgo.BeforeSuite(func() { defer cancel() log.Info("Starting AvalancheGo node") - nodeUrl, tearDownFunc, err := utils.SpinupAvalancheNode() + nodeUris, tearDownFunc, err := utils.SpinupAvalancheNodes(utils.DefaultNumberOfNodesToSpinUp) gomega.Expect(err).Should(gomega.BeNil()) gomega.Expect(tearDownFunc).ShouldNot(gomega.BeNil()) + gomega.Expect(nodeUris).ShouldNot(gomega.BeEmpty()) + firstNodeUri := nodeUris[0] tearDown = tearDownFunc // confirm that Kurtosis started the node on the expected url - gomega.Expect(nodeUrl).Should(gomega.Equal(utils.DefaultLocalNodeURI)) + gomega.Expect(firstNodeUri).Should(gomega.Equal(utils.DefaultLocalNodeURI)) // Assumes that startCmd will launch a node with HTTP Port at [utils.DefaultLocalNodeURI] - healthClient := health.NewClient(nodeUrl) + healthClient := health.NewClient(firstNodeUri) healthy, err := health.AwaitReady(ctx, healthClient, 5*time.Second, nil) gomega.Expect(err).Should(gomega.BeNil()) gomega.Expect(healthy).Should(gomega.BeTrue()) diff --git a/tests/utils/constants.go b/tests/utils/constants.go index 75cc779bd3..68d3875ced 100644 --- a/tests/utils/constants.go +++ b/tests/utils/constants.go @@ -4,6 +4,7 @@ package utils var ( - DefaultLocalNodeURI = "http://127.0.0.1:9650" - NodeURIs = []string{DefaultLocalNodeURI, "http://127.0.0.1:9652", "http://127.0.0.1:9654", "http://127.0.0.1:9656", "http://127.0.0.1:9658"} + DefaultNumberOfNodesToSpinUp = 1 + DefaultLocalNodeURI = "http://127.0.0.1:9650" + NodeURIs = []string{DefaultLocalNodeURI, "http://127.0.0.1:9652", "http://127.0.0.1:9654", "http://127.0.0.1:9656", "http://127.0.0.1:9658"} ) diff --git a/tests/utils/node_launcher.go b/tests/utils/node_launcher.go index 5825d2269d..0a8ceb6846 100644 --- a/tests/utils/node_launcher.go +++ b/tests/utils/node_launcher.go @@ -16,43 +16,52 @@ const ( enclaveIdPrefix = "test" avalancheStarlarkPackage = "github.com/kurtosis-tech/avalanche-package" // forces the node to launch on 9650 instead of ephemeral ports - forceExposeOn9650 = `{"test_mode": true}` - defaultParallelism = 4 - firstNodeId = "node-0" - validationErrorDelimiter = ", " + defaultParallelism = 4 + nodePrefix = "node-" ) -func SpinupAvalancheNode() (string, func(), error) { +func SpinupAvalancheNodes(nodeCount int) ([]string, func(), error) { ctx := context.Background() + packageArgumentsToStartNNodeTestNet := `{ + "test_mode": true, + "nodeCount": ` + string(nodeCount) + ` + }` + kurtosisCtx, err := kurtosis_context.NewKurtosisContextFromLocalEngine() if err != nil { - return "", nil, err + return nil, nil, err } enclaveId := fmt.Sprintf("%s-%d", enclaveIdPrefix, time.Now().Unix()) enclaveCtx, err := kurtosisCtx.CreateEnclave(ctx, enclaveId, isPartitioningEnabled) if err != nil { - return "", nil, err + return nil, nil, err } - _, err = enclaveCtx.RunStarlarkRemotePackageBlocking(ctx, avalancheStarlarkPackage, forceExposeOn9650, false, defaultParallelism) + _, err = enclaveCtx.RunStarlarkRemotePackageBlocking(ctx, avalancheStarlarkPackage, packageArgumentsToStartNNodeTestNet, false, defaultParallelism) if err != nil { - return "", nil, fmt.Errorf("an error occurred while running Starlark Package: %v", err) + return nil, nil, fmt.Errorf("an error occurred while running Starlark Package: %v", err) } - serviceCtx, err := enclaveCtx.GetServiceContext(firstNodeId) - if err != nil { - return "", nil, err - } + var nodeRpcUris []string - publicRpcPorts := serviceCtx.GetPublicPorts() - rpcPortSpec, found := publicRpcPorts["rpc"] - if !found { - return "", nil, fmt.Errorf("couldn't find RPC port in the node '%v' that was spun up", firstNodeId) - } + for nodeIdx := 0; nodeIdx < nodeCount; nodeIdx++ { + nodeId := nodePrefix + string(nodeIdx) + serviceCtx, err := enclaveCtx.GetServiceContext(nodeId) + if err != nil { + return nil, nil, err + } + + publicRpcPorts := serviceCtx.GetPublicPorts() + rpcPortSpec, found := publicRpcPorts["rpc"] + if !found { + return nil, nil, fmt.Errorf("couldn't find RPC port in the node '%v' that was spun up", nodeId) + } - rpcPortNumber := rpcPortSpec.GetNumber() + rpcPortNumber := rpcPortSpec.GetNumber() + nodeRpcUris = append(nodeRpcUris, fmt.Sprintf("http://127.0.0.1:%d", rpcPortNumber)) + } tearDownFunction := func() { fmt.Println(fmt.Printf("Destroying enclave with id '%v'", enclaveId)) @@ -64,5 +73,5 @@ func SpinupAvalancheNode() (string, func(), error) { } } - return fmt.Sprintf("http://127.0.0.1:%d", rpcPortNumber), tearDownFunction, nil + return nodeRpcUris, tearDownFunction, nil } From 29c6cb434021b2f0114628fd90b86e6f89b890fd Mon Sep 17 00:00:00 2001 From: Gyanendra Mishra Date: Fri, 26 May 2023 14:49:48 +0100 Subject: [PATCH 11/29] ran go mod tidy --- go.sum | 4 ---- 1 file changed, 4 deletions(-) diff --git a/go.sum b/go.sum index 156b502f53..9d6dc51d12 100644 --- a/go.sum +++ b/go.sum @@ -380,10 +380,6 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kurtosis-tech/kurtosis-portal/api/golang v0.0.0-20230328194643-b4dea3081e25 h1:ig5umBAI6smmP/4xPLSL5KSlH9N/bZURzDkJzD8qWb8= github.com/kurtosis-tech/kurtosis-portal/api/golang v0.0.0-20230328194643-b4dea3081e25/go.mod h1:YjVghnKmmELgH8DmIKBFxwArWbtLUYqwnol9DAWnBM8= -github.com/kurtosis-tech/kurtosis/api/golang v0.76.4 h1:x0Crkqv+Y7qjj9SJh5SPDvA8r1E+G8KvVpMR6MUkC5w= -github.com/kurtosis-tech/kurtosis/api/golang v0.76.4/go.mod h1:rNZqlwD7O5ThA4Wx7yHtzF5b1nYNlOgDd8Od4d0kp1o= -github.com/kurtosis-tech/kurtosis/api/golang v0.76.8 h1:cuWANqpnRXOtwtM/8NqD5MBqL5K3QEmy+u7EvwmOw2U= -github.com/kurtosis-tech/kurtosis/api/golang v0.76.8/go.mod h1:rNZqlwD7O5ThA4Wx7yHtzF5b1nYNlOgDd8Od4d0kp1o= github.com/kurtosis-tech/kurtosis/api/golang v0.77.0 h1:Jp5SFPGAUTevBNvaMjL2u+RipA9QX+Of8yQ+P8zkJXM= github.com/kurtosis-tech/kurtosis/api/golang v0.77.0/go.mod h1:rNZqlwD7O5ThA4Wx7yHtzF5b1nYNlOgDd8Od4d0kp1o= github.com/kurtosis-tech/kurtosis/grpc-file-transfer/golang v0.0.0-20230427135111-ee2492059d06 h1:Y8JeWlV+R+ZOVCgIl+f3ltY3fvWHN22YvS43AV3c60g= From 255b8d76a2ffc66599b46bd4cf5eb168795966bd Mon Sep 17 00:00:00 2001 From: Gyanendra Mishra Date: Fri, 26 May 2023 14:57:41 +0100 Subject: [PATCH 12/29] try running after building image instead --- .github/workflows/ci.yml | 7 ++----- tests/utils/node_launcher.go | 2 ++ 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 34d9f729ef..7c4281b7f0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -78,12 +78,9 @@ jobs: - name: Yarn install run: yarn working-directory: ./contract-examples - - name: Install AvalancheGo Release + - name: Build avalanche image shell: bash - run: BASEDIR=/tmp/e2e-test AVALANCHEGO_BUILD_PATH=/tmp/e2e-test/avalanchego ./scripts/install_avalanchego_release.sh - - name: Build Subnet-EVM Plugin Binary - shell: bash - run: ./scripts/build.sh /tmp/e2e-test/avalanchego/plugins/srEXiWaHuhNyGwPUi444Tu47ZEDwxTWrbQiuD7FmgSAQ6X7Dy + run: BUILD_IMAGE_ID=test ./scripts/build_image.sh - name: Run E2E Tests shell: bash run: AVALANCHEGO_BUILD_PATH=/tmp/e2e-test/avalanchego DATA_DIR=/tmp/e2e-test/data ./scripts/run_ginkgo.sh diff --git a/tests/utils/node_launcher.go b/tests/utils/node_launcher.go index 0a8ceb6846..d56fc4ef0b 100644 --- a/tests/utils/node_launcher.go +++ b/tests/utils/node_launcher.go @@ -18,6 +18,7 @@ const ( // forces the node to launch on 9650 instead of ephemeral ports defaultParallelism = 4 nodePrefix = "node-" + testImageId = "avaplatform/avalanchego:test" ) func SpinupAvalancheNodes(nodeCount int) ([]string, func(), error) { @@ -26,6 +27,7 @@ func SpinupAvalancheNodes(nodeCount int) ([]string, func(), error) { packageArgumentsToStartNNodeTestNet := `{ "test_mode": true, "nodeCount": ` + string(nodeCount) + ` + "image": ` + testImageId + ` }` kurtosisCtx, err := kurtosis_context.NewKurtosisContextFromLocalEngine() From c9de7fb4c24eef4759cf4196dedfae493d41af93 Mon Sep 17 00:00:00 2001 From: Gyanendra Mishra Date: Fri, 26 May 2023 14:58:55 +0100 Subject: [PATCH 13/29] fix arguments --- tests/utils/node_launcher.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/utils/node_launcher.go b/tests/utils/node_launcher.go index d56fc4ef0b..6103556dd8 100644 --- a/tests/utils/node_launcher.go +++ b/tests/utils/node_launcher.go @@ -6,6 +6,7 @@ package utils import ( "context" "fmt" + "strconv" "time" "github.com/kurtosis-tech/kurtosis/api/golang/engine/lib/kurtosis_context" @@ -26,7 +27,7 @@ func SpinupAvalancheNodes(nodeCount int) ([]string, func(), error) { packageArgumentsToStartNNodeTestNet := `{ "test_mode": true, - "nodeCount": ` + string(nodeCount) + ` + "nodeCount": ` + strconv.Itoa(nodeCount) + ` "image": ` + testImageId + ` }` From c77873f4522975c171ae6a238613dba1bdf95618 Mon Sep 17 00:00:00 2001 From: Gyanendra Mishra Date: Fri, 26 May 2023 15:48:13 +0100 Subject: [PATCH 14/29] fix json --- tests/utils/node_launcher.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/utils/node_launcher.go b/tests/utils/node_launcher.go index 6103556dd8..16aac1190e 100644 --- a/tests/utils/node_launcher.go +++ b/tests/utils/node_launcher.go @@ -27,7 +27,7 @@ func SpinupAvalancheNodes(nodeCount int) ([]string, func(), error) { packageArgumentsToStartNNodeTestNet := `{ "test_mode": true, - "nodeCount": ` + strconv.Itoa(nodeCount) + ` + "nodeCount": ` + strconv.Itoa(nodeCount) + `, "image": ` + testImageId + ` }` From 14d5bc085155742af3a4813f41b17e39853c06fa Mon Sep 17 00:00:00 2001 From: Gyanendra Mishra Date: Fri, 26 May 2023 16:08:16 +0100 Subject: [PATCH 15/29] fix json for real --- tests/utils/node_launcher.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/utils/node_launcher.go b/tests/utils/node_launcher.go index 16aac1190e..e5002ee4e1 100644 --- a/tests/utils/node_launcher.go +++ b/tests/utils/node_launcher.go @@ -28,7 +28,7 @@ func SpinupAvalancheNodes(nodeCount int) ([]string, func(), error) { packageArgumentsToStartNNodeTestNet := `{ "test_mode": true, "nodeCount": ` + strconv.Itoa(nodeCount) + `, - "image": ` + testImageId + ` + "image": "` + testImageId + `" }` kurtosisCtx, err := kurtosis_context.NewKurtosisContextFromLocalEngine() From 86d6da892f99272a0e8a73814b10c8ce6b8bd9da Mon Sep 17 00:00:00 2001 From: Gyanendra Mishra Date: Fri, 26 May 2023 16:16:52 +0100 Subject: [PATCH 16/29] correctly populate node id --- tests/utils/node_launcher.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/utils/node_launcher.go b/tests/utils/node_launcher.go index e5002ee4e1..c96614b573 100644 --- a/tests/utils/node_launcher.go +++ b/tests/utils/node_launcher.go @@ -50,7 +50,7 @@ func SpinupAvalancheNodes(nodeCount int) ([]string, func(), error) { var nodeRpcUris []string for nodeIdx := 0; nodeIdx < nodeCount; nodeIdx++ { - nodeId := nodePrefix + string(nodeIdx) + nodeId := fmt.Sprintf("%v%v", nodePrefix, nodeIdx) serviceCtx, err := enclaveCtx.GetServiceContext(nodeId) if err != nil { return nil, nil, err From 34338c7ad6b498000ca906eac002c2c99560cfba Mon Sep 17 00:00:00 2001 From: Gyanendra Mishra Date: Fri, 26 May 2023 16:25:12 +0100 Subject: [PATCH 17/29] actually correctly populate node id --- tests/utils/node_launcher.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/utils/node_launcher.go b/tests/utils/node_launcher.go index c96614b573..39f97246e2 100644 --- a/tests/utils/node_launcher.go +++ b/tests/utils/node_launcher.go @@ -50,7 +50,7 @@ func SpinupAvalancheNodes(nodeCount int) ([]string, func(), error) { var nodeRpcUris []string for nodeIdx := 0; nodeIdx < nodeCount; nodeIdx++ { - nodeId := fmt.Sprintf("%v%v", nodePrefix, nodeIdx) + nodeId := fmt.Sprintf("%v%d", nodePrefix, nodeIdx) serviceCtx, err := enclaveCtx.GetServiceContext(nodeId) if err != nil { return nil, nil, err From 2741b094063ac9f660893515e9c3a8e4c753962b Mon Sep 17 00:00:00 2001 From: Gyanendra Mishra Date: Fri, 26 May 2023 16:43:00 +0100 Subject: [PATCH 18/29] this should work --- tests/utils/node_launcher.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/tests/utils/node_launcher.go b/tests/utils/node_launcher.go index 39f97246e2..b1f9e935a6 100644 --- a/tests/utils/node_launcher.go +++ b/tests/utils/node_launcher.go @@ -16,10 +16,9 @@ const ( isPartitioningEnabled = false enclaveIdPrefix = "test" avalancheStarlarkPackage = "github.com/kurtosis-tech/avalanche-package" - // forces the node to launch on 9650 instead of ephemeral ports - defaultParallelism = 4 - nodePrefix = "node-" - testImageId = "avaplatform/avalanchego:test" + defaultParallelism = 4 + nodePrefix = "node-" + testImageId = "avaplatform/avalanchego:test" ) func SpinupAvalancheNodes(nodeCount int) ([]string, func(), error) { From d0dac57adc51639278701e12a51e1b10be7450ee Mon Sep 17 00:00:00 2001 From: Gyanendra Mishra Date: Fri, 26 May 2023 16:44:54 +0100 Subject: [PATCH 19/29] test out multi node behavior --- tests/load/load_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/load/load_test.go b/tests/load/load_test.go index 661507b63d..9685ddf0c4 100644 --- a/tests/load/load_test.go +++ b/tests/load/load_test.go @@ -32,7 +32,7 @@ var _ = ginkgo.BeforeSuite(func() { defer cancel() log.Info("Starting AvalancheGo node") - nodeUris, tearDownFunc, err := utils.SpinupAvalancheNodes(utils.DefaultNumberOfNodesToSpinUp) + nodeUris, tearDownFunc, err := utils.SpinupAvalancheNodes(5) gomega.Expect(err).Should(gomega.BeNil()) gomega.Expect(tearDownFunc).ShouldNot(gomega.BeNil()) gomega.Expect(nodeUris).ShouldNot(gomega.BeEmpty()) @@ -58,7 +58,7 @@ var _ = ginkgo.Describe("[Load Simulator]", ginkgo.Ordered, func() { blockchainID := utils.CreateNewSubnet(ctx, "./tests/load/genesis/genesis.json") rpcEndpoints := make([]string, 0, len(utils.NodeURIs)) - for _, uri := range []string{utils.DefaultLocalNodeURI} { // TODO: use NodeURIs instead, hack until fixing multi node in a network behavior + for _, uri := range utils.NodeURIs { rpcEndpoints = append(rpcEndpoints, fmt.Sprintf("%s/ext/bc/%s/rpc", uri, blockchainID)) } commaSeparatedRPCEndpoints := strings.Join(rpcEndpoints, ",") From 71f1c3d41975b681fcc66f0071f375967b148da5 Mon Sep 17 00:00:00 2001 From: Gyanendra Mishra Date: Fri, 26 May 2023 16:47:46 +0100 Subject: [PATCH 20/29] added note about cli installation --- .github/workflows/ci.yml | 2 +- scripts/run_ginkgo.sh | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7c4281b7f0..c5bd3686d8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -83,4 +83,4 @@ jobs: run: BUILD_IMAGE_ID=test ./scripts/build_image.sh - name: Run E2E Tests shell: bash - run: AVALANCHEGO_BUILD_PATH=/tmp/e2e-test/avalanchego DATA_DIR=/tmp/e2e-test/data ./scripts/run_ginkgo.sh + run: DATA_DIR=/tmp/e2e-test/data ./scripts/run_ginkgo.sh diff --git a/scripts/run_ginkgo.sh b/scripts/run_ginkgo.sh index 53d380fc8d..13d87ff1b5 100755 --- a/scripts/run_ginkgo.sh +++ b/scripts/run_ginkgo.sh @@ -1,8 +1,9 @@ #!/usr/bin/env bash set -e -# This script assumes that an AvalancheGo and Subnet-EVM binaries are available in the standard location -# within the $GOPATH +# This script assumes that Kurtosis is installed and an engine is running +# Head over to https://docs.kurtosis.com/install/#ii-install-the-cli +# In case an engine isn't running use kurtosis engine restart # Load the versions SUBNET_EVM_PATH=$( From 20a64ab4e91e3a586cae6e3bbf4da0e9ca6b5df5 Mon Sep 17 00:00:00 2001 From: Gyanendra Mishra Date: Fri, 26 May 2023 17:02:32 +0100 Subject: [PATCH 21/29] fix node count argument --- tests/utils/node_launcher.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/utils/node_launcher.go b/tests/utils/node_launcher.go index b1f9e935a6..5e8ef0447b 100644 --- a/tests/utils/node_launcher.go +++ b/tests/utils/node_launcher.go @@ -26,7 +26,7 @@ func SpinupAvalancheNodes(nodeCount int) ([]string, func(), error) { packageArgumentsToStartNNodeTestNet := `{ "test_mode": true, - "nodeCount": ` + strconv.Itoa(nodeCount) + `, + "node_count": ` + strconv.Itoa(nodeCount) + `, "image": "` + testImageId + `" }` From 19478f7d8ee7deaca5254092d614b3eaa84ac4c5 Mon Sep 17 00:00:00 2001 From: Gyanendra Mishra Date: Fri, 26 May 2023 17:25:18 +0100 Subject: [PATCH 22/29] use a constant instead --- tests/load/load_test.go | 2 +- tests/utils/constants.go | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/tests/load/load_test.go b/tests/load/load_test.go index 9685ddf0c4..72e2f10ffd 100644 --- a/tests/load/load_test.go +++ b/tests/load/load_test.go @@ -32,7 +32,7 @@ var _ = ginkgo.BeforeSuite(func() { defer cancel() log.Info("Starting AvalancheGo node") - nodeUris, tearDownFunc, err := utils.SpinupAvalancheNodes(5) + nodeUris, tearDownFunc, err := utils.SpinupAvalancheNodes(utils.NumNodesToSpinUpForMultiNodeTest) gomega.Expect(err).Should(gomega.BeNil()) gomega.Expect(tearDownFunc).ShouldNot(gomega.BeNil()) gomega.Expect(nodeUris).ShouldNot(gomega.BeEmpty()) diff --git a/tests/utils/constants.go b/tests/utils/constants.go index 68d3875ced..f471eef515 100644 --- a/tests/utils/constants.go +++ b/tests/utils/constants.go @@ -4,7 +4,8 @@ package utils var ( - DefaultNumberOfNodesToSpinUp = 1 - DefaultLocalNodeURI = "http://127.0.0.1:9650" - NodeURIs = []string{DefaultLocalNodeURI, "http://127.0.0.1:9652", "http://127.0.0.1:9654", "http://127.0.0.1:9656", "http://127.0.0.1:9658"} + DefaultNumberOfNodesToSpinUp = 1 + DefaultLocalNodeURI = "http://127.0.0.1:9650" + NodeURIs = []string{DefaultLocalNodeURI, "http://127.0.0.1:9652", "http://127.0.0.1:9654", "http://127.0.0.1:9656", "http://127.0.0.1:9658"} + NumNodesToSpinUpForMultiNodeTest = len(NodeURIs) ) From 406f885d8a87a97b0d88eecb49f2f8bd12fdb40a Mon Sep 17 00:00:00 2001 From: Gyanendra Mishra Date: Fri, 26 May 2023 17:29:27 +0100 Subject: [PATCH 23/29] use the right parameter for image passing --- scripts/run_ginkgo.sh | 1 + tests/utils/node_launcher.go | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/run_ginkgo.sh b/scripts/run_ginkgo.sh index 13d87ff1b5..cb0f9a237c 100755 --- a/scripts/run_ginkgo.sh +++ b/scripts/run_ginkgo.sh @@ -4,6 +4,7 @@ set -e # This script assumes that Kurtosis is installed and an engine is running # Head over to https://docs.kurtosis.com/install/#ii-install-the-cli # In case an engine isn't running use kurtosis engine restart +# This assumes that the # Load the versions SUBNET_EVM_PATH=$( diff --git a/tests/utils/node_launcher.go b/tests/utils/node_launcher.go index 5e8ef0447b..c28f477fdc 100644 --- a/tests/utils/node_launcher.go +++ b/tests/utils/node_launcher.go @@ -27,7 +27,7 @@ func SpinupAvalancheNodes(nodeCount int) ([]string, func(), error) { packageArgumentsToStartNNodeTestNet := `{ "test_mode": true, "node_count": ` + strconv.Itoa(nodeCount) + `, - "image": "` + testImageId + `" + "avalanchego_image": "` + testImageId + `" }` kurtosisCtx, err := kurtosis_context.NewKurtosisContextFromLocalEngine() From ebf8ee48bcf314da5d2db34a72d71ebe99cce316 Mon Sep 17 00:00:00 2001 From: Gyanendra Mishra Date: Fri, 26 May 2023 19:26:02 +0100 Subject: [PATCH 24/29] propagate tear down errors --- tests/load/load_test.go | 5 +++-- tests/precompile/precompile_test.go | 5 +++-- tests/utils/node_launcher.go | 9 +++++---- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/tests/load/load_test.go b/tests/load/load_test.go index 72e2f10ffd..8622854ce4 100644 --- a/tests/load/load_test.go +++ b/tests/load/load_test.go @@ -19,7 +19,7 @@ import ( "github.com/onsi/gomega" ) -var tearDown func() +var tearDown func() error func TestE2E(t *testing.T) { gomega.RegisterFailHandler(ginkgo.Fail) @@ -77,7 +77,8 @@ var _ = ginkgo.Describe("[Load Simulator]", ginkgo.Ordered, func() { var _ = ginkgo.AfterSuite(func() { gomega.Expect(tearDown).ShouldNot(gomega.BeNil()) - tearDown() + err := tearDown() + gomega.Expect(err).Should(gomega.BeNil()) // TODO add a new node to bootstrap off of the existing node and ensure it can bootstrap all subnets // created during the test }) diff --git a/tests/precompile/precompile_test.go b/tests/precompile/precompile_test.go index 15e6ff1066..5c88f1bf12 100644 --- a/tests/precompile/precompile_test.go +++ b/tests/precompile/precompile_test.go @@ -19,7 +19,7 @@ import ( _ "github.com/ava-labs/subnet-evm/tests/precompile/solidity" ) -var tearDown func() +var tearDown func() error func TestE2E(t *testing.T) { gomega.RegisterFailHandler(ginkgo.Fail) @@ -52,7 +52,8 @@ var _ = ginkgo.BeforeSuite(func() { var _ = ginkgo.AfterSuite(func() { gomega.Expect(tearDown).ShouldNot(gomega.BeNil()) - tearDown() + err := tearDown() + gomega.Expect(err).Should(gomega.BeNil()) // TODO add a new node to bootstrap off of the existing node and ensure it can bootstrap all subnets // created during the test }) diff --git a/tests/utils/node_launcher.go b/tests/utils/node_launcher.go index c28f477fdc..e509ae3b67 100644 --- a/tests/utils/node_launcher.go +++ b/tests/utils/node_launcher.go @@ -21,7 +21,7 @@ const ( testImageId = "avaplatform/avalanchego:test" ) -func SpinupAvalancheNodes(nodeCount int) ([]string, func(), error) { +func SpinupAvalancheNodes(nodeCount int) ([]string, func() error, error) { ctx := context.Background() packageArgumentsToStartNNodeTestNet := `{ @@ -65,14 +65,15 @@ func SpinupAvalancheNodes(nodeCount int) ([]string, func(), error) { nodeRpcUris = append(nodeRpcUris, fmt.Sprintf("http://127.0.0.1:%d", rpcPortNumber)) } - tearDownFunction := func() { + tearDownFunction := func() error { fmt.Println(fmt.Printf("Destroying enclave with id '%v'", enclaveId)) if err = kurtosisCtx.StopEnclave(ctx, enclaveId); err != nil { - fmt.Printf("An error occurred while stopping the enclave with id '%v'\n", enclaveId) + return fmt.Errorf("an error occurred while stopping the enclave '%v': %v", enclaveId, err) } if err = kurtosisCtx.DestroyEnclave(ctx, enclaveId); err != nil { - fmt.Printf("An error occurred while cleaning up the enclave with id '%v'\n", enclaveId) + return fmt.Errorf("an error occurred while destroying the enclave '%v': %v", enclaveId, err) } + return err } return nodeRpcUris, tearDownFunction, nil From 89ab8746e773d6d9f95f042ea319299dd8885779 Mon Sep 17 00:00:00 2001 From: Gyanendra Mishra Date: Fri, 26 May 2023 19:37:27 +0100 Subject: [PATCH 25/29] Add notes about test docker image --- scripts/run_ginkgo.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/run_ginkgo.sh b/scripts/run_ginkgo.sh index cb0f9a237c..84d93dc128 100755 --- a/scripts/run_ginkgo.sh +++ b/scripts/run_ginkgo.sh @@ -4,7 +4,8 @@ set -e # This script assumes that Kurtosis is installed and an engine is running # Head over to https://docs.kurtosis.com/install/#ii-install-the-cli # In case an engine isn't running use kurtosis engine restart -# This assumes that the +# This assumes that the node image with tag :test exists +# you can create it with BUILD_IMAGE_ID=test ./scripts/build_image.sh # Load the versions SUBNET_EVM_PATH=$( From 5eda8ed512393fccafb59ba6932a9b8c4dfeb9b3 Mon Sep 17 00:00:00 2001 From: Gyanendra Mishra Date: Fri, 26 May 2023 21:08:36 +0100 Subject: [PATCH 26/29] test health of every node in multi node test --- tests/load/load_test.go | 22 ++++++++++------------ tests/precompile/precompile_test.go | 2 +- tests/utils/node_launcher.go | 11 +++++------ 3 files changed, 16 insertions(+), 19 deletions(-) diff --git a/tests/load/load_test.go b/tests/load/load_test.go index 8622854ce4..0a8ec7097a 100644 --- a/tests/load/load_test.go +++ b/tests/load/load_test.go @@ -35,19 +35,17 @@ var _ = ginkgo.BeforeSuite(func() { nodeUris, tearDownFunc, err := utils.SpinupAvalancheNodes(utils.NumNodesToSpinUpForMultiNodeTest) gomega.Expect(err).Should(gomega.BeNil()) gomega.Expect(tearDownFunc).ShouldNot(gomega.BeNil()) - gomega.Expect(nodeUris).ShouldNot(gomega.BeEmpty()) - firstNodeUri := nodeUris[0] tearDown = tearDownFunc - - // confirm that Kurtosis started the node on the expected url - gomega.Expect(firstNodeUri).Should(gomega.Equal(utils.DefaultLocalNodeURI)) - - // Assumes that startCmd will launch a node with HTTP Port at [utils.DefaultLocalNodeURI] - healthClient := health.NewClient(firstNodeUri) - healthy, err := health.AwaitReady(ctx, healthClient, 5*time.Second, nil) - gomega.Expect(err).Should(gomega.BeNil()) - gomega.Expect(healthy).Should(gomega.BeTrue()) - log.Info("AvalancheGo node is healthy") + gomega.Expect(nodeUris).Should(gomega.HaveLen(utils.NumNodesToSpinUpForMultiNodeTest)) + for index, nodeUri := range nodeUris { + // confirm that Kurtosis started the node on the expected url + gomega.Expect(nodeUri).Should(gomega.Equal(utils.NodeURIs[index])) + healthClient := health.NewClient(nodeUri) + healthy, err := health.AwaitReady(ctx, healthClient, 5*time.Second, nil) + gomega.Expect(err).Should(gomega.BeNil()) + gomega.Expect(healthy).Should(gomega.BeTrue()) + log.Info("AvalancheGo node is healthy") + } }) var _ = ginkgo.Describe("[Load Simulator]", ginkgo.Ordered, func() { diff --git a/tests/precompile/precompile_test.go b/tests/precompile/precompile_test.go index 5c88f1bf12..b14aca865a 100644 --- a/tests/precompile/precompile_test.go +++ b/tests/precompile/precompile_test.go @@ -35,7 +35,7 @@ var _ = ginkgo.BeforeSuite(func() { nodeUris, tearDownFunc, err := utils.SpinupAvalancheNodes(utils.DefaultNumberOfNodesToSpinUp) gomega.Expect(err).Should(gomega.BeNil()) gomega.Expect(tearDownFunc).ShouldNot(gomega.BeNil()) - gomega.Expect(nodeUris).ShouldNot(gomega.BeEmpty()) + gomega.Expect(nodeUris).Should(gomega.HaveLen(utils.DefaultNumberOfNodesToSpinUp)) firstNodeUri := nodeUris[0] tearDown = tearDownFunc diff --git a/tests/utils/node_launcher.go b/tests/utils/node_launcher.go index e509ae3b67..b2a7994de8 100644 --- a/tests/utils/node_launcher.go +++ b/tests/utils/node_launcher.go @@ -24,12 +24,6 @@ const ( func SpinupAvalancheNodes(nodeCount int) ([]string, func() error, error) { ctx := context.Background() - packageArgumentsToStartNNodeTestNet := `{ - "test_mode": true, - "node_count": ` + strconv.Itoa(nodeCount) + `, - "avalanchego_image": "` + testImageId + `" - }` - kurtosisCtx, err := kurtosis_context.NewKurtosisContextFromLocalEngine() if err != nil { return nil, nil, err @@ -41,6 +35,11 @@ func SpinupAvalancheNodes(nodeCount int) ([]string, func() error, error) { return nil, nil, err } + packageArgumentsToStartNNodeTestNet := `{ + "test_mode": true, + "node_count": ` + strconv.Itoa(nodeCount) + `, + "avalanchego_image": "` + testImageId + `" + }` _, err = enclaveCtx.RunStarlarkRemotePackageBlocking(ctx, avalancheStarlarkPackage, packageArgumentsToStartNNodeTestNet, false, defaultParallelism) if err != nil { return nil, nil, fmt.Errorf("an error occurred while running Starlark Package: %v", err) From 269ec3c5b4217de507287f69eb901d9229dde2c0 Mon Sep 17 00:00:00 2001 From: Gyanendra Mishra Date: Fri, 26 May 2023 21:21:33 +0100 Subject: [PATCH 27/29] revert load test to single node due to flake --- tests/load/load_test.go | 25 +++++++++++++------------ tests/precompile/precompile_test.go | 1 - 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/tests/load/load_test.go b/tests/load/load_test.go index 0a8ec7097a..a3c8501b08 100644 --- a/tests/load/load_test.go +++ b/tests/load/load_test.go @@ -32,20 +32,21 @@ var _ = ginkgo.BeforeSuite(func() { defer cancel() log.Info("Starting AvalancheGo node") - nodeUris, tearDownFunc, err := utils.SpinupAvalancheNodes(utils.NumNodesToSpinUpForMultiNodeTest) + nodeUris, tearDownFunc, err := utils.SpinupAvalancheNodes(utils.DefaultNumberOfNodesToSpinUp) gomega.Expect(err).Should(gomega.BeNil()) gomega.Expect(tearDownFunc).ShouldNot(gomega.BeNil()) + gomega.Expect(nodeUris).Should(gomega.HaveLen(utils.DefaultNumberOfNodesToSpinUp)) + firstNodeUri := nodeUris[0] tearDown = tearDownFunc - gomega.Expect(nodeUris).Should(gomega.HaveLen(utils.NumNodesToSpinUpForMultiNodeTest)) - for index, nodeUri := range nodeUris { - // confirm that Kurtosis started the node on the expected url - gomega.Expect(nodeUri).Should(gomega.Equal(utils.NodeURIs[index])) - healthClient := health.NewClient(nodeUri) - healthy, err := health.AwaitReady(ctx, healthClient, 5*time.Second, nil) - gomega.Expect(err).Should(gomega.BeNil()) - gomega.Expect(healthy).Should(gomega.BeTrue()) - log.Info("AvalancheGo node is healthy") - } + + // confirm that Kurtosis started the node on the expected url + gomega.Expect(firstNodeUri).Should(gomega.Equal(utils.DefaultLocalNodeURI)) + + healthClient := health.NewClient(firstNodeUri) + healthy, err := health.AwaitReady(ctx, healthClient, 5*time.Second, nil) + gomega.Expect(err).Should(gomega.BeNil()) + gomega.Expect(healthy).Should(gomega.BeTrue()) + log.Info("AvalancheGo node is healthy") }) var _ = ginkgo.Describe("[Load Simulator]", ginkgo.Ordered, func() { @@ -56,7 +57,7 @@ var _ = ginkgo.Describe("[Load Simulator]", ginkgo.Ordered, func() { blockchainID := utils.CreateNewSubnet(ctx, "./tests/load/genesis/genesis.json") rpcEndpoints := make([]string, 0, len(utils.NodeURIs)) - for _, uri := range utils.NodeURIs { + for _, uri := range []string{utils.DefaultLocalNodeURI} { // TODO: use NodeURIs instead, hack until fixing multi node in a network behavior rpcEndpoints = append(rpcEndpoints, fmt.Sprintf("%s/ext/bc/%s/rpc", uri, blockchainID)) } commaSeparatedRPCEndpoints := strings.Join(rpcEndpoints, ",") diff --git a/tests/precompile/precompile_test.go b/tests/precompile/precompile_test.go index b14aca865a..69eea43e02 100644 --- a/tests/precompile/precompile_test.go +++ b/tests/precompile/precompile_test.go @@ -42,7 +42,6 @@ var _ = ginkgo.BeforeSuite(func() { // confirm that Kurtosis started the node on the expected url gomega.Expect(firstNodeUri).Should(gomega.Equal(utils.DefaultLocalNodeURI)) - // Assumes that startCmd will launch a node with HTTP Port at [utils.DefaultLocalNodeURI] healthClient := health.NewClient(firstNodeUri) healthy, err := health.AwaitReady(ctx, healthClient, 5*time.Second, nil) gomega.Expect(err).Should(gomega.BeNil()) From de07e1f89f629a34b7324f5c008318d8e3aba95f Mon Sep 17 00:00:00 2001 From: Gyanendra Mishra Date: Fri, 26 May 2023 22:08:28 +0100 Subject: [PATCH 28/29] Update run_ginkgo.sh Signed-off-by: Gyanendra Mishra --- scripts/run_ginkgo.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/run_ginkgo.sh b/scripts/run_ginkgo.sh index 84d93dc128..2645044eea 100755 --- a/scripts/run_ginkgo.sh +++ b/scripts/run_ginkgo.sh @@ -2,9 +2,9 @@ set -e # This script assumes that Kurtosis is installed and an engine is running -# Head over to https://docs.kurtosis.com/install/#ii-install-the-cli +# Head over to https://docs.kurtosis.com/install/#ii-install-the-cli to see how to install Kurtosis # In case an engine isn't running use kurtosis engine restart -# This assumes that the node image with tag :test exists +# This assumes that the node image avaplatform/avalanchego with tag :test exists; # you can create it with BUILD_IMAGE_ID=test ./scripts/build_image.sh # Load the versions From a9824c2da1413227e06565e983441d563b34a2af Mon Sep 17 00:00:00 2001 From: Gyanendra Mishra Date: Wed, 7 Jun 2023 09:24:59 +0530 Subject: [PATCH 29/29] Update node_launcher.go Signed-off-by: Gyanendra Mishra --- tests/utils/node_launcher.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/utils/node_launcher.go b/tests/utils/node_launcher.go index b2a7994de8..0dd30cde90 100644 --- a/tests/utils/node_launcher.go +++ b/tests/utils/node_launcher.go @@ -36,7 +36,7 @@ func SpinupAvalancheNodes(nodeCount int) ([]string, func() error, error) { } packageArgumentsToStartNNodeTestNet := `{ - "test_mode": true, + "ephemeral_ports": false, "node_count": ` + strconv.Itoa(nodeCount) + `, "avalanchego_image": "` + testImageId + `" }`