From b903866c6493e7f569d1975dc5f8efd34bdcc24e Mon Sep 17 00:00:00 2001 From: sampocs Date: Fri, 2 Dec 2022 18:56:30 -0600 Subject: [PATCH] Dockernet Re-org (#431) --- .dockerignore | 4 +- .github/labeler.yml | 2 +- .gitignore | 26 ++----- .gitmodules | 15 ++-- Dockerfile | 42 ++++++++++ Dockerfile.localstride | 36 --------- Dockerfile.stride | 34 -------- Makefile | 48 ++++++------ {scripts => dockernet}/README.md | 22 +++--- {scripts => dockernet}/build.sh | 12 ++- scripts/vars.sh => dockernet/config.sh | 15 ++-- .../config/hermes_config.toml | 0 {scripts => dockernet}/config/ica.json | 0 .../config/relayer_config.yaml | 0 .../docker-compose.yml | 63 +++++++-------- .../dockerfiles/Dockerfile.gaia | 0 .../dockerfiles/Dockerfile.hermes | 0 .../dockerfiles/Dockerfile.juno | 0 .../dockerfiles/Dockerfile.osmo | 0 .../dockerfiles/Dockerfile.relayer | 0 .../dockerfiles/Dockerfile.stars | 0 {scripts/test-util => dockernet/scripts}/1.sh | 2 +- {scripts/test-util => dockernet/scripts}/2.sh | 2 +- {scripts/test-util => dockernet/scripts}/3.sh | 4 +- {scripts/test-util => dockernet/scripts}/4.sh | 6 +- {scripts => dockernet/scripts}/airdrop.sh | 4 +- {scripts => dockernet/src}/create_logs.sh | 2 +- {scripts => dockernet/src}/init_chain.sh | 2 +- {scripts => dockernet/src}/register_host.sh | 2 +- {scripts => dockernet/src}/start_chain.sh | 6 +- {scripts => dockernet/src}/start_relayers.sh | 6 +- {scripts => dockernet}/start_network.sh | 29 ++++--- dockernet/tests/bats/bats-assert | 1 + dockernet/tests/bats/bats-core | 1 + dockernet/tests/bats/bats-support | 1 + .../tests/integration_tests.bats | 2 +- dockernet/tests/run_all_tests.sh | 10 +++ .../upgrades/Dockerfile.cosmovisor | 0 .../upgrades/Dockerfile.stride | 0 {scripts => dockernet}/upgrades/README.md | 26 +++---- .../upgrades/submit_upgrade.sh | 2 +- scripts/local-to-mainnet/commands.sh | 77 +++++++++++-------- scripts/local-to-mainnet/docker-compose.yml | 24 ++++++ scripts/local-to-mainnet/init_stride.sh | 3 +- scripts/local-to-mainnet/start.sh | 23 ++++-- .../local-to-mainnet/templates/commands.sh | 68 ++++++++-------- scripts/tests/bats/bats-assert | 1 - scripts/tests/bats/bats-support | 1 - scripts/tests/run_all_tests.sh | 7 -- .../{ => localnet}/docker-compose.yml | 11 ++- .../{ => localnet}/scripts/add_keys.sh | 0 .../{ => localnet}/scripts/start.sh | 5 -- .../state-export/docker-compose.yml | 26 +++++++ .../scripts/start.sh | 5 +- .../scripts/testnetify.py | 0 .../state_export/docker-compose.yml | 27 ------- 56 files changed, 359 insertions(+), 346 deletions(-) create mode 100644 Dockerfile delete mode 100644 Dockerfile.localstride delete mode 100644 Dockerfile.stride rename {scripts => dockernet}/README.md (61%) rename {scripts => dockernet}/build.sh (86%) rename scripts/vars.sh => dockernet/config.sh (95%) rename {scripts => dockernet}/config/hermes_config.toml (100%) rename {scripts => dockernet}/config/ica.json (100%) rename {scripts => dockernet}/config/relayer_config.yaml (100%) rename docker-compose.yml => dockernet/docker-compose.yml (57%) rename Dockerfile.gaia => dockernet/dockerfiles/Dockerfile.gaia (100%) rename Dockerfile.hermes => dockernet/dockerfiles/Dockerfile.hermes (100%) rename Dockerfile.juno => dockernet/dockerfiles/Dockerfile.juno (100%) rename Dockerfile.osmo => dockernet/dockerfiles/Dockerfile.osmo (100%) rename Dockerfile.relayer => dockernet/dockerfiles/Dockerfile.relayer (100%) rename Dockerfile.stars => dockernet/dockerfiles/Dockerfile.stars (100%) rename {scripts/test-util => dockernet/scripts}/1.sh (90%) rename {scripts/test-util => dockernet/scripts}/2.sh (84%) rename {scripts/test-util => dockernet/scripts}/3.sh (68%) rename {scripts/test-util => dockernet/scripts}/4.sh (78%) rename {scripts => dockernet/scripts}/airdrop.sh (97%) rename {scripts => dockernet/src}/create_logs.sh (99%) rename {scripts => dockernet/src}/init_chain.sh (99%) rename {scripts => dockernet/src}/register_host.sh (97%) rename {scripts => dockernet/src}/start_chain.sh (79%) rename {scripts => dockernet/src}/start_relayers.sh (83%) rename {scripts => dockernet}/start_network.sh (65%) create mode 160000 dockernet/tests/bats/bats-assert create mode 160000 dockernet/tests/bats/bats-core create mode 160000 dockernet/tests/bats/bats-support rename {scripts => dockernet}/tests/integration_tests.bats (99%) create mode 100755 dockernet/tests/run_all_tests.sh rename {scripts => dockernet}/upgrades/Dockerfile.cosmovisor (100%) rename {scripts => dockernet}/upgrades/Dockerfile.stride (100%) rename {scripts => dockernet}/upgrades/README.md (66%) rename {scripts => dockernet}/upgrades/submit_upgrade.sh (97%) create mode 100644 scripts/local-to-mainnet/docker-compose.yml delete mode 160000 scripts/tests/bats/bats-assert delete mode 160000 scripts/tests/bats/bats-support delete mode 100755 scripts/tests/run_all_tests.sh rename testutil/localstride/{ => localnet}/docker-compose.yml (54%) rename testutil/localstride/{ => localnet}/scripts/add_keys.sh (100%) rename testutil/localstride/{ => localnet}/scripts/start.sh (97%) create mode 100644 testutil/localstride/state-export/docker-compose.yml rename testutil/localstride/{state_export => state-export}/scripts/start.sh (96%) rename testutil/localstride/{state_export => state-export}/scripts/testnetify.py (100%) delete mode 100644 testutil/localstride/state_export/docker-compose.yml diff --git a/.dockerignore b/.dockerignore index 942c141d0..a264428f3 100644 --- a/.dockerignore +++ b/.dockerignore @@ -2,5 +2,7 @@ .vscode build deps +dockernet scripts -scripts-local +genesis +testutil/localstride \ No newline at end of file diff --git a/.github/labeler.yml b/.github/labeler.yml index fe3df7a2c..839778d3f 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -28,7 +28,7 @@ - Makefile - Dockerfile - scripts/* - - scripts-local/* + - dockernet/* "T:CI": - .github/**/*.yml - .golangci.yml diff --git a/.gitignore b/.gitignore index 79305aad9..483afeb1c 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,6 @@ *.so *.dylib -scripts/testnet/state/keys.txt **state.json **test.py **test.sh @@ -14,25 +13,14 @@ scripts/testnet/state/keys.txt launch.sh build/* state/* -.state.backup -scripts/state/* -scripts/testnet/*/state/keys.txt -scripts/testnet/state/* -scripts/testnet/certs/**.pem - -scripts/logs/*.log -scripts/logs/*/*.log -scripts-local/state -scripts-local/logs -scripts-local/test-utils/state/ +scripts/state +scripts/logs +dockernet/state +dockernet/logs +dockernet/upgrades/binaries +dockernet/upgrades/cosmovisor +dockernet/temp.sh scripts/temp.sh -scripts/testnet/*/state/keys.txt -scripts/tests/validator_selection -scripts/tests/local_tests.bats -scripts-local/upgrades/binaries -scripts-local/upgrades/cosmovisor -scripts/upgrades/binaries -scripts/upgrades/cosmovisor vue/* # Test binary, built with `go test -c` *.test diff --git a/.gitmodules b/.gitmodules index 5e055395b..16d87ec4e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -23,9 +23,12 @@ # Commit: b0bea28fc695a2a5c567e56a37b289a5b75830cc path = deps/stargaze url = https://github.com/public-awesome/stargaze.git -[submodule "scripts/tests/bats/bats-support"] - path = scripts/tests/bats/bats-support - url = https://github.com/ztombol/bats-support -[submodule "scripts/tests/bats/bats-assert"] - path = scripts/tests/bats/bats-assert - url = https://github.com/ztombol/bats-assert +[submodule "dockernet/tests/bats/bats-core"] + path = dockernet/tests/bats/bats-core + url = https://github.com/bats-core/bats-core.git +[submodule "dockernet/tests/bats/bats-assert"] + path = dockernet/tests/bats/bats-assert + url = https://github.com/bats-core/bats-assert.git +[submodule "dockernet/tests/bats/bats-support"] + path = dockernet/tests/bats/bats-support + url = https://github.com/bats-core/bats-support.git diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..5f0e36d9d --- /dev/null +++ b/Dockerfile @@ -0,0 +1,42 @@ +# syntax = docker/dockerfile:1 + +ARG GO_VERSION="1.19" +ARG RUNNER_IMAGE="alpine:3.16" + +FROM golang:${GO_VERSION}-alpine as builder + +WORKDIR /opt +RUN apk add --no-cache make git gcc musl-dev openssl-dev linux-headers + +COPY go.mod . +COPY go.sum . + +RUN --mount=type=cache,target=/root/.cache/go-build \ + --mount=type=cache,target=/root/go/pkg/mod \ + go mod download + +# Copy the remaining files +COPY . . + +RUN LINK_STATICALLY=true make build + +# Add to a distroless container +FROM ${RUNNER_IMAGE} + +COPY --from=builder /opt/build/strided /usr/local/bin/strided +RUN apk add bash vim sudo dasel \ + && addgroup -g 1000 stride \ + && adduser -S -h /home/stride -D stride -u 1000 -G stride + +RUN mkdir -p /etc/sudoers.d \ + && echo '%wheel ALL=(ALL) ALL' > /etc/sudoers.d/wheel \ + && echo "%wheel ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers \ + && adduser stride wheel + +USER 1000 +ENV HOME /home/stride +WORKDIR $HOME + +EXPOSE 26657 26656 1317 9090 + +CMD ["strided", "start"] \ No newline at end of file diff --git a/Dockerfile.localstride b/Dockerfile.localstride deleted file mode 100644 index 4280860a2..000000000 --- a/Dockerfile.localstride +++ /dev/null @@ -1,36 +0,0 @@ -# syntax = docker/dockerfile:1 - -ARG GO_VERSION="1.18" -ARG RUNNER_IMAGE="gcr.io/distroless/static" - -FROM golang:${GO_VERSION}-alpine as builder - -ARG GIT_VERSION -ARG GIT_COMMIT - -WORKDIR /stride -RUN apk add --no-cache make git gcc musl-dev openssl-dev linux-headers - -COPY go.mod . -COPY go.sum . - -RUN --mount=type=cache,target=/root/.cache/go-build \ - --mount=type=cache,target=/root/go/pkg/mod \ - go mod download - -# Copy the remaining files -COPY . . - -RUN LINK_STATICALLY=true make build - -# Add to a distroless container -FROM ${RUNNER_IMAGE} - -COPY --from=builder /stride/build/strided /bin/strided - -ENV HOME /stride -WORKDIR $HOME - -EXPOSE 26657 26656 1317 9090 - -ENTRYPOINT ["strided"] \ No newline at end of file diff --git a/Dockerfile.stride b/Dockerfile.stride deleted file mode 100644 index 0667eac4f..000000000 --- a/Dockerfile.stride +++ /dev/null @@ -1,34 +0,0 @@ -# syntax = docker/dockerfile:1 -FROM golang:1.19-alpine3.15 AS builder - -WORKDIR /src/ - -RUN apk add --no-cache make git gcc musl-dev openssl-dev linux-headers - -COPY go.mod . -COPY go.sum . -COPY Makefile . -RUN go mod download - -COPY app /src/app -COPY cmd /src/cmd -COPY proto /src/proto -COPY testutil /src/testutil -COPY utils /src/utils -COPY x /src/x - -RUN --mount=type=cache,target=/root/.cache/go-build make build - -# Add to a distroless container -FROM alpine:3.15 -COPY --from=builder /src/build/strided /usr/local/bin/strided -RUN apk add bash vim \ - && addgroup -g 1000 stride \ - && adduser -S -h /home/stride -D stride -u 1000 -G stride - -USER 1000 -WORKDIR /home/stride - -EXPOSE 26657 26656 1317 9090 - -CMD ["strided", "start"] diff --git a/Makefile b/Makefile index 37a8d4894..b719e859d 100644 --- a/Makefile +++ b/Makefile @@ -6,6 +6,11 @@ cache=false COMMIT := $(shell git log -1 --format='%H') DOCKER := $(shell which docker) DOCKER_BUF := $(DOCKER) run --rm -v $(CURDIR):/workspace --workdir /workspace bufbuild/buf:1.7.0 +DOCKERNET_HOME=./dockernet +DOCKERNET_COMPOSE_FILE=$(DOCKERNET_HOME)/docker-compose.yml +LOCALSTRIDE_HOME=./testutil/localstride +LOCALNET_COMPOSE_FILE=$(LOCALSTRIDE_HOME)/localnet/docker-compose.yml +STATE_EXPORT_COMPOSE_FILE=$(LOCALSTRIDE_HOME)/state-export/docker-compose.yml # process build tags @@ -79,9 +84,6 @@ install: go.sum clean: rm -rf $(BUILDDIR)/* -clean-state: - rm -rf scripts-local/state - ############################################################################### ### CI ### ############################################################################### @@ -104,32 +106,30 @@ test-unit: test-cover: @go test -mod=readonly -race -coverprofile=coverage.out -covermode=atomic ./x/$(module)/... -test-integration-local: - bash scripts-local/tests/run_all_tests.sh - test-integration-docker: - bash scripts/tests/run_all_tests.sh + bash $(DOCKERNET_HOME)/tests/run_all_tests.sh ############################################################################### ### DockerNet ### ############################################################################### build-docker: - @bash scripts/build.sh -${build} ${BUILDDIR} + @bash $(DOCKERNET_HOME)/build.sh -${build} ${BUILDDIR} start-docker: build-docker - @bash scripts/start_network.sh + @bash $(DOCKERNET_HOME)/start_network.sh clean-docker: - @docker-compose stop - @docker-compose down - rm -rf scripts/state + @docker-compose -f $(DOCKERNET_COMPOSE_FILE) stop + @docker-compose -f $(DOCKERNET_COMPOSE_FILE) down + rm -rf $(DOCKERNET_HOME)/state docker image prune -a stop-docker: - @-pkill -f "docker-compose logs" - @-pkill -f "/bin/bash.*create_logs.sh" - docker-compose down + @pkill -f "docker-compose .*stride.* logs" | true + @pkill -f "/bin/bash.*create_logs.sh" | true + @pkill -f "tail .*.log" | true + docker-compose -f $(DOCKERNET_COMPOSE_FILE) down ############################################################################### ### Protobuf ### @@ -163,7 +163,7 @@ proto-lint: ############################################################################### localnet-keys: - . testutil/localstride/scripts/add_keys.sh + . $(LOCALSTRIDE_HOME)/localnet/add_keys.sh localnet-init: localnet-clean localnet-build @@ -171,29 +171,29 @@ localnet-clean: @rm -rfI $(HOME)/.stride/ localnet-build: - @docker-compose -f testutil/localstride/docker-compose.yml build + @docker-compose -f $(LOCALNET_COMPOSE_FILE) build localnet-start: - @docker-compose -f testutil/localstride/docker-compose.yml up + @docker-compose -f $(LOCALNET_COMPOSE_FILE) up localnet-startd: - @docker-compose -f testutil/localstride/docker-compose.yml up -d + @docker-compose -f $(LOCALNET_COMPOSE_FILE) up -d localnet-stop: - @docker-compose -f testutil/localstride/docker-compose.yml down + @docker-compose -f $(LOCALNET_COMPOSE_FILE) down localnet-state-export-init: localnet-state-export-clean localnet-state-export-build localnet-state-export-build: - @DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 docker-compose -f testutil/localstride/state_export/docker-compose.yml build + @DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 docker-compose -f $(STATE_EXPORT_COMPOSE_FILE) build localnet-state-export-start: - @docker-compose -f testutil/localstride/state_export/docker-compose.yml up + @docker-compose -f $(STATE_EXPORT_COMPOSE_FILE) up localnet-state-export-startd: - @docker-compose -f testutil/localstride/state_export/docker-compose.yml up -d + @docker-compose -f $(STATE_EXPORT_COMPOSE_FILE) up -d localnet-state-export-stop: - @docker-compose -f testutil/localstride/docker-compose.yml down + @docker-compose -f $(STATE_EXPORT_COMPOSE_FILE) down localnet-state-export-clean: localnet-clean diff --git a/scripts/README.md b/dockernet/README.md similarity index 61% rename from scripts/README.md rename to dockernet/README.md index ef6ee4d32..5f5d7d539 100644 --- a/scripts/README.md +++ b/dockernet/README.md @@ -1,8 +1,8 @@ -`/scripts` contains (unmaintained) infrastructure that was used for early testing and development of the Stride protocol. The scripts here support docker-image based testing, some of which are heavily inspired by those used by Osmosis and Quicksilver (although there have been deviations from the original implementations since). The relevant licenses are included here. +`/dockernet` contains (unmaintained) infrastructure that was used for early testing and development of the Stride protocol. The scripts here support docker-image based testing, some of which are heavily inspired by those used by Osmosis and Quicksilver (although there have been deviations from the original implementations since). The relevant licenses are included here. ## Dockernet ### Adding a new host zone -* Create a new dockerfile at the root level (`Dockerfile.{new-host-zone}`). Use one of the other host zone's dockerfile's as a starting port to provide the certain boilerplate such as the package installs, adding user, exposing ports, etc. +* Create a new dockerfile to `dockernet/dockerfiles` (named `Dockerfile.{new-host-zone}`). Use one of the other host zone's dockerfile's as a starting port to provide the certain boilerplate such as the package installs, adding user, exposing ports, etc. * Add the repo as a submodule ``` git submodule add {repo-url} deps/{new-host-zone} @@ -14,19 +14,19 @@ git checkout {commit-hash} cd .. ``` * Add a comment to `.gitmodules` with the commit hash -* Add the build command for that host zone in `scripts/build.sh` (`n` is used as an example below - use the first letter of the host zone) +* Add the build command for that host zone in `dockernet/build.sh` (`n` is used as an example below - use the first letter of the host zone) ``` while getopts sgojhir{n} flag; do case "${flag}" in ... n) build_local_and_docker {new-host-zone} deps/{new-host-zone} ;; ``` -* Add the host zone to the docker compose filein the root level of the stride directory. Add 5 nodes and add the port forwarding to the first node only. Drop the RPC port number by 100, and the API/gRPC port by 10, relative to the last host zone that was added. +* Add the host zone to the docker compose file. Add 5 nodes and add the port forwarding to the first node only. Drop the RPC port number by 100, and the API/gRPC port by 10, relative to the last host zone that was added. ``` {new-host-zone}1: image: stridezone:{new-host-zone} volumes: - - ./scripts/state/{new-host-zone}1:/home/{new-host-zone}/.{new-host-zone} + - ./dockernet/state/{new-host-zone}1:/home/{new-host-zone}/.{new-host-zone} ports: - "{rpc-port}:26657" - "{api-port}:1317" @@ -35,16 +35,16 @@ while getopts sgojhir{n} flag; do {new-host-zone}2: image: stridezone:{new-host-zone} volumes: - - ./scripts/state/{new-host-zone}2:/home/{new-host-zone}/.{new-host-zone} + - ./dockernet/state/{new-host-zone}2:/home/{new-host-zone}/.{new-host-zone} ... {new-host-zone}5: image: stridezone:{new-host-zone} volumes: - - ./scripts/state/{new-host-zone}5:/home/{new-host-zone}/.{new-host-zone} + - ./dockernet/state/{new-host-zone}5:/home/{new-host-zone}/.{new-host-zone} ``` -* Add the following parameters to `scripts/vars.sh`, where `CHAIN` is the ID of the new host zone +* Add the following parameters to `dockernet/config.sh`, where `CHAIN` is the ID of the new host zone ``` {CHAIN}_CHAIN_ID={NEW-HOST-ZONE} {CHAIN}_NODE_PREFIX={new-host-zone} @@ -65,7 +65,7 @@ RELAYER_{CHAIN}_MNEMONIC="" RELAYER_MNEMONICS=(...,"$RELAYER_{CHAIN}_MNEMONIC") ``` -* Add the IBC denom's for the host zone across each channel to `vars.sh` (e.g. `IBC_{HOST}_CHANNEL_{N}_DENOM)`). You can use the following code block to generate the variables (just temporarily throw it in any of the test files, run it, and copy the output to `vars.sh`) +* Add the IBC denom's for the host zone across each channel to `config.sh` (e.g. `IBC_{HOST}_CHANNEL_{N}_DENOM)`). You can use the following code block to generate the variables (just temporarily throw it in any of the test files, run it, and copy the output to `config.sh`) ``` import transfertypes "github.com/cosmos/ibc-go/v3/modules/apps/transfer/types" @@ -80,7 +80,7 @@ func (s *KeeperTestSuite) TestIBCDenom() { } } ``` -* Add a section to the `scripts/config/relayer_config.yaml` +* Add a section to the `dockernet/config/relayer_config.yaml` ``` chains: ... @@ -110,7 +110,7 @@ paths: rule: "" channel-list: [] ``` -* To enable the the new host zone, include it in the `HOST_CHAINS` array in `scripts/vars.sh`. **Note: You can only run up to 4 host zones at once.** +* To enable the the new host zone, include it in the `HOST_CHAINS` array in `dockernet/config.sh`. **Note: You can only run up to 4 host zones at once.** ``` HOST_CHAINS=(GAIA {NEW-HOST-ZONE}) ``` diff --git a/scripts/build.sh b/dockernet/build.sh similarity index 86% rename from scripts/build.sh rename to dockernet/build.sh index 99783cd13..00a15be04 100755 --- a/scripts/build.sh +++ b/dockernet/build.sh @@ -2,7 +2,7 @@ set -eu SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -source ${SCRIPT_DIR}/vars.sh +source ${SCRIPT_DIR}/config.sh BUILDDIR="$2" mkdir -p $BUILDDIR @@ -27,7 +27,13 @@ build_local_and_docker() { fi echo "Building $title Docker... " - DOCKER_BUILDKIT=1 docker build --tag stridezone:$module -f Dockerfile.$module . | true + if [[ "$module" == "stride" ]]; then + image=Dockerfile + else + image=dockernet/dockerfiles/Dockerfile.$module + fi + + DOCKER_BUILDKIT=1 docker build --tag stridezone:$module -f $image . | true docker_build_succeeded=${PIPESTATUS[0]} if [[ "$docker_build_succeeded" == "0" ]]; then @@ -69,7 +75,7 @@ while getopts sgojthr flag; do t) build_local_and_docker stars deps/stargaze ;; r) build_local_and_docker relayer deps/relayer ;; h) echo "Building Hermes Docker... "; - docker build --tag stridezone:hermes -f Dockerfile.hermes . ; + docker build --tag stridezone:hermes -f dockernet/dockerfiles/Dockerfile.hermes . ; printf '%s' "Building Hermes Locally... "; cd deps/hermes; diff --git a/scripts/vars.sh b/dockernet/config.sh similarity index 95% rename from scripts/vars.sh rename to dockernet/config.sh index 60fad1267..0aa09d014 100644 --- a/scripts/vars.sh +++ b/dockernet/config.sh @@ -5,7 +5,10 @@ SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) STATE=$SCRIPT_DIR/state LOGS=$SCRIPT_DIR/logs +UPGRADES=$SCRIPT_DIR/upgrades +SRC=$SCRIPT_DIR/src PEER_PORT=26656 +DOCKER_COMPOSE="docker-compose -f $SCRIPT_DIR/docker-compose.yml" # Logs STRIDE_LOGS=$LOGS/stride.log @@ -99,7 +102,7 @@ STRIDE_FEE_ADDRESS=stride1czvrk3jkvtj8m27kqsqu2yrkhw3h3ykwj3rxh6 if [[ "$UPGRADE_NAME" == "" ]]; then STRIDE_CMD="$SCRIPT_DIR/../build/strided" else - STRIDE_CMD="$SCRIPT_DIR/upgrades/binaries/strided1" + STRIDE_CMD="$UPGRADES/binaries/strided1" fi STRIDE_MAIN_CMD="$STRIDE_CMD --home $SCRIPT_DIR/state/${STRIDE_NODE_PREFIX}1" @@ -157,7 +160,7 @@ STARS_RECEIVER_ADDRESS='stars15dywcmy6gzsc8wfefkrx0c9czlwvwrjenqthyq' # HERMES HERMES_CMD="$SCRIPT_DIR/../build/hermes/release/hermes --config $STATE/hermes/config.toml" -HERMES_EXEC="docker-compose run --rm hermes hermes" +HERMES_EXEC="$DOCKER_COMPOSE run --rm hermes hermes" HERMES_STRIDE_ACCT=hrly1 HERMES_GAIA_ACCT=hrly2 @@ -173,10 +176,10 @@ HERMES_STARS_MNEMONIC="inherit shallow bargain explain fence vocal fury perfect # RELAYER RELAYER_CMD="$SCRIPT_DIR/../build/relayer --home $STATE/relayer" -RELAYER_GAIA_EXEC="docker-compose run --rm relayer-gaia" -RELAYER_JUNO_EXEC="docker-compose run --rm relayer-juno" -RELAYER_OSMO_EXEC="docker-compose run --rm relayer-osmo" -RELAYER_STARS_EXEC="docker-compose run --rm relayer-stars" +RELAYER_GAIA_EXEC="$DOCKER_COMPOSE run --rm relayer-gaia" +RELAYER_JUNO_EXEC="$DOCKER_COMPOSE run --rm relayer-juno" +RELAYER_OSMO_EXEC="$DOCKER_COMPOSE run --rm relayer-osmo" +RELAYER_STARS_EXEC="$DOCKER_COMPOSE run --rm relayer-stars" RELAYER_STRIDE_ACCT=rly1 RELAYER_GAIA_ACCT=rly2 diff --git a/scripts/config/hermes_config.toml b/dockernet/config/hermes_config.toml similarity index 100% rename from scripts/config/hermes_config.toml rename to dockernet/config/hermes_config.toml diff --git a/scripts/config/ica.json b/dockernet/config/ica.json similarity index 100% rename from scripts/config/ica.json rename to dockernet/config/ica.json diff --git a/scripts/config/relayer_config.yaml b/dockernet/config/relayer_config.yaml similarity index 100% rename from scripts/config/relayer_config.yaml rename to dockernet/config/relayer_config.yaml diff --git a/docker-compose.yml b/dockernet/docker-compose.yml similarity index 57% rename from docker-compose.yml rename to dockernet/docker-compose.yml index 534685c3c..35f8119bc 100644 --- a/docker-compose.yml +++ b/dockernet/docker-compose.yml @@ -3,7 +3,7 @@ services: stride1: image: stridezone:stride volumes: - - ./scripts/state/stride1:/home/stride/.stride + - ./state/stride1:/home/stride/.stride ports: - "26657:26657" - "1317:1317" @@ -12,17 +12,17 @@ services: stride2: image: stridezone:stride volumes: - - ./scripts/state/stride2:/home/stride/.stride + - ./state/stride2:/home/stride/.stride stride3: image: stridezone:stride volumes: - - ./scripts/state/stride3:/home/stride/.stride + - ./state/stride3:/home/stride/.stride gaia1: image: stridezone:gaia volumes: - - ./scripts/state/gaia1:/home/gaia/.gaia + - ./state/gaia1:/home/gaia/.gaia ports: - "26557:26657" - "1307:1317" @@ -31,27 +31,27 @@ services: gaia2: image: stridezone:gaia volumes: - - ./scripts/state/gaia2:/home/gaia/.gaia + - ./state/gaia2:/home/gaia/.gaia gaia3: image: stridezone:gaia volumes: - - ./scripts/state/gaia3:/home/gaia/.gaia + - ./state/gaia3:/home/gaia/.gaia gaia4: image: stridezone:gaia volumes: - - ./scripts/state/gaia4:/home/gaia/.gaia + - ./state/gaia4:/home/gaia/.gaia gaia5: image: stridezone:gaia volumes: - - ./scripts/state/gaia5:/home/gaia/.gaia + - ./state/gaia5:/home/gaia/.gaia juno1: image: stridezone:juno volumes: - - ./scripts/state/juno1:/home/juno/.juno + - ./state/juno1:/home/juno/.juno ports: - "26457:26657" - "1297:1317" @@ -60,27 +60,27 @@ services: juno2: image: stridezone:juno volumes: - - ./scripts/state/juno2:/home/juno/.juno + - ./state/juno2:/home/juno/.juno juno3: image: stridezone:juno volumes: - - ./scripts/state/juno3:/home/juno/.juno + - ./state/juno3:/home/juno/.juno juno4: image: stridezone:juno volumes: - - ./scripts/state/juno4:/home/juno/.juno + - ./state/juno4:/home/juno/.juno juno5: image: stridezone:juno volumes: - - ./scripts/state/juno5:/home/juno/.juno + - ./state/juno5:/home/juno/.juno osmo1: image: stridezone:osmo volumes: - - ./scripts/state/osmo1:/home/osmosis/.osmosisd + - ./state/osmo1:/home/osmosis/.osmosisd ports: - "26357:26657" - "1287:1317" @@ -89,27 +89,27 @@ services: osmo2: image: stridezone:osmo volumes: - - ./scripts/state/osmo2:/home/osmosis/.osmosisd + - ./state/osmo2:/home/osmosis/.osmosisd osmo3: image: stridezone:osmo volumes: - - ./scripts/state/osmo3:/home/osmosis/.osmosisd + - ./state/osmo3:/home/osmosis/.osmosisd osmo4: image: stridezone:osmo volumes: - - ./scripts/state/osmo4:/home/osmosis/.osmosisd + - ./state/osmo4:/home/osmosis/.osmosisd osmo5: image: stridezone:osmo volumes: - - ./scripts/state/osmo5:/home/osmosis/.osmosisd + - ./state/osmo5:/home/osmosis/.osmosisd stars1: image: stridezone:stars volumes: - - ./scripts/state/stars1:/home/stars/.starsd + - ./state/stars1:/home/stars/.starsd ports: - "26257:26657" - "1277:1317" @@ -118,61 +118,54 @@ services: stars2: image: stridezone:stars volumes: - - ./scripts/state/stars2:/home/stars/.starsd + - ./state/stars2:/home/stars/.starsd stars3: image: stridezone:stars volumes: - - ./scripts/state/stars3:/home/stars/.starsd + - ./state/stars3:/home/stars/.starsd stars4: image: stridezone:stars volumes: - - ./scripts/state/stars4:/home/stars/.starsd + - ./state/stars4:/home/stars/.starsd stars5: image: stridezone:stars volumes: - - ./scripts/state/stars5:/home/stars/.starsd + - ./state/stars5:/home/stars/.starsd hermes: image: stridezone:hermes volumes: - ~/.hermes:/home/hermes/.hermes - - ./scripts/state/hermes/config.toml:/home/hermes/.hermes/config.toml + - ./state/hermes/config.toml:/home/hermes/.hermes/config.toml restart: always - relayer-host: - image: stridezone:relayer - volumes: - - ./scripts/state/relayer:/home/relayer/.relayer - restart: always - command: [ "bash", "start.sh", "stride-host" ] - relayer-gaia: image: stridezone:relayer volumes: - - ./scripts/state/relayer-gaia:/home/relayer/.relayer + - ./state/relayer-gaia:/home/relayer/.relayer restart: always command: [ "bash", "start.sh", "stride-gaia" ] relayer-juno: image: stridezone:relayer volumes: - - ./scripts/state/relayer-juno:/home/relayer/.relayer + - ./state/relayer-juno:/home/relayer/.relayer restart: always command: [ "bash", "start.sh", "stride-juno" ] relayer-osmo: image: stridezone:relayer volumes: - - ./scripts/state/relayer-osmo:/home/relayer/.relayer + - ./state/relayer-osmo:/home/relayer/.relayer restart: always command: [ "bash", "start.sh", "stride-osmo" ] relayer-stars: image: stridezone:relayer volumes: - - ./scripts/state/relayer-stars:/home/relayer/.relayer + - ./state/relayer-stars:/home/relayer/.relayer restart: always command: [ "bash", "start.sh", "stride-stars" ] diff --git a/Dockerfile.gaia b/dockernet/dockerfiles/Dockerfile.gaia similarity index 100% rename from Dockerfile.gaia rename to dockernet/dockerfiles/Dockerfile.gaia diff --git a/Dockerfile.hermes b/dockernet/dockerfiles/Dockerfile.hermes similarity index 100% rename from Dockerfile.hermes rename to dockernet/dockerfiles/Dockerfile.hermes diff --git a/Dockerfile.juno b/dockernet/dockerfiles/Dockerfile.juno similarity index 100% rename from Dockerfile.juno rename to dockernet/dockerfiles/Dockerfile.juno diff --git a/Dockerfile.osmo b/dockernet/dockerfiles/Dockerfile.osmo similarity index 100% rename from Dockerfile.osmo rename to dockernet/dockerfiles/Dockerfile.osmo diff --git a/Dockerfile.relayer b/dockernet/dockerfiles/Dockerfile.relayer similarity index 100% rename from Dockerfile.relayer rename to dockernet/dockerfiles/Dockerfile.relayer diff --git a/Dockerfile.stars b/dockernet/dockerfiles/Dockerfile.stars similarity index 100% rename from Dockerfile.stars rename to dockernet/dockerfiles/Dockerfile.stars diff --git a/scripts/test-util/1.sh b/dockernet/scripts/1.sh similarity index 90% rename from scripts/test-util/1.sh rename to dockernet/scripts/1.sh index a47408270..14b088d32 100644 --- a/scripts/test-util/1.sh +++ b/dockernet/scripts/1.sh @@ -1,6 +1,6 @@ ### IBC TRANSFER SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -source ${SCRIPT_DIR}/../vars.sh +source ${SCRIPT_DIR}/../config.sh ## IBC ATOM from GAIA to STRIDE $GAIA_MAIN_CMD tx ibc-transfer transfer transfer channel-0 $(STRIDE_ADDRESS) 1000000uatom --from ${GAIA_VAL_PREFIX}1 -y diff --git a/scripts/test-util/2.sh b/dockernet/scripts/2.sh similarity index 84% rename from scripts/test-util/2.sh rename to dockernet/scripts/2.sh index 57b50a10d..a0a1e3da1 100644 --- a/scripts/test-util/2.sh +++ b/dockernet/scripts/2.sh @@ -1,6 +1,6 @@ ### LIQ STAKE SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -source ${SCRIPT_DIR}/../vars.sh +source ${SCRIPT_DIR}/../config.sh $STRIDE_MAIN_CMD tx stakeibc liquid-stake 10000 $ATOM_DENOM --from ${STRIDE_VAL_PREFIX}1 -y \ No newline at end of file diff --git a/scripts/test-util/3.sh b/dockernet/scripts/3.sh similarity index 68% rename from scripts/test-util/3.sh rename to dockernet/scripts/3.sh index 8a4acdbe2..922b6490f 100644 --- a/scripts/test-util/3.sh +++ b/dockernet/scripts/3.sh @@ -1,6 +1,6 @@ ### LIQ STAKE SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -source ${SCRIPT_DIR}/../vars.sh +source ${SCRIPT_DIR}/../config.sh -$STRIDE_MAIN_CMD tx stakeibc redeem-stake 89 GAIA $GAIA_RECEIVER_ACCT --from ${STRIDE_VAL_PREFIX}1 -y +$STRIDE_MAIN_CMD tx stakeibc redeem-stake 89 GAIA $GAIA_RECEIVER_ADDRESS --from ${STRIDE_VAL_PREFIX}1 -y diff --git a/scripts/test-util/4.sh b/dockernet/scripts/4.sh similarity index 78% rename from scripts/test-util/4.sh rename to dockernet/scripts/4.sh index fec083536..92bcb99bb 100644 --- a/scripts/test-util/4.sh +++ b/dockernet/scripts/4.sh @@ -1,10 +1,10 @@ ### LIQ STAKE SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -source ${SCRIPT_DIR}/../vars.sh +source ${SCRIPT_DIR}/../config.sh # check balances before claiming redeemed stake -$GAIA_MAIN_CMD q bank balances $GAIA_RECEIVER_ACCT +$GAIA_MAIN_CMD q bank balances $GAIA_RECEIVER_ADDRESS #claim stake EPOCH=$($STRIDE_MAIN_CMD q records list-user-redemption-record | grep -Fiw 'epochNumber' | head -n 1 | grep -o -E '[0-9]+') @@ -13,4 +13,4 @@ $STRIDE_MAIN_CMD tx stakeibc claim-undelegated-tokens GAIA $EPOCH $(STRIDE_ADDRE CSLEEP 30 # check balances after claiming redeemed stake -$GAIA_MAIN_CMD q bank balances $GAIA_RECEIVER_ACCT +$GAIA_MAIN_CMD q bank balances $GAIA_RECEIVER_ADDRESS diff --git a/scripts/airdrop.sh b/dockernet/scripts/airdrop.sh similarity index 97% rename from scripts/airdrop.sh rename to dockernet/scripts/airdrop.sh index ebba86718..98afdf016 100644 --- a/scripts/airdrop.sh +++ b/dockernet/scripts/airdrop.sh @@ -1,9 +1,9 @@ ### AIRDROP TESTING FLOW SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -source ${SCRIPT_DIR}/vars.sh +source ${SCRIPT_DIR}/config.sh # First, start the network with `make start-docker` -# Then, run this script with `bash scripts/airdrop.sh` +# Then, run this script with `bash dockernet/scripts/airdrop.sh` # NOTE: First, store the keys using the following mnemonics # distributor address: stride1z835j3j65nqr6ng257q0xkkc9gta72gf48txwl diff --git a/scripts/create_logs.sh b/dockernet/src/create_logs.sh similarity index 99% rename from scripts/create_logs.sh rename to dockernet/src/create_logs.sh index 6f3db69f7..6ea63711d 100755 --- a/scripts/create_logs.sh +++ b/dockernet/src/create_logs.sh @@ -4,7 +4,7 @@ set -eu SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) -source ${SCRIPT_DIR}/vars.sh +source ${SCRIPT_DIR}/../config.sh LOGS_DIR=$SCRIPT_DIR/logs TEMP_LOGS_DIR=$LOGS_DIR/temp diff --git a/scripts/init_chain.sh b/dockernet/src/init_chain.sh similarity index 99% rename from scripts/init_chain.sh rename to dockernet/src/init_chain.sh index b522cb76a..a2b5d36a6 100644 --- a/scripts/init_chain.sh +++ b/dockernet/src/init_chain.sh @@ -3,7 +3,7 @@ set -eu SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -source $SCRIPT_DIR/vars.sh +source $SCRIPT_DIR/../config.sh CHAIN="$1" KEYS_LOGS=$SCRIPT_DIR/logs/keys.log diff --git a/scripts/register_host.sh b/dockernet/src/register_host.sh similarity index 97% rename from scripts/register_host.sh rename to dockernet/src/register_host.sh index 42dfdd33c..1838b8b53 100644 --- a/scripts/register_host.sh +++ b/dockernet/src/register_host.sh @@ -2,7 +2,7 @@ set -eu SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -source $SCRIPT_DIR/vars.sh +source $SCRIPT_DIR/../config.sh CHAIN="$1" HOST_ZONE_NUM="$2" diff --git a/scripts/start_chain.sh b/dockernet/src/start_chain.sh similarity index 79% rename from scripts/start_chain.sh rename to dockernet/src/start_chain.sh index 2498e2f19..a60fa57c5 100644 --- a/scripts/start_chain.sh +++ b/dockernet/src/start_chain.sh @@ -3,7 +3,7 @@ set -eu SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -source ${SCRIPT_DIR}/vars.sh +source ${SCRIPT_DIR}/../config.sh for chain_id in STRIDE ${HOST_CHAINS[@]}; do num_nodes=$(GET_VAR_VALUE ${chain_id}_NUM_NODES) @@ -13,9 +13,9 @@ for chain_id in STRIDE ${HOST_CHAINS[@]}; do echo "Starting $chain_id chain" nodes_names=$(i=1; while [ $i -le $num_nodes ]; do printf "%s " ${node_prefix}${i}; i=$(($i + 1)); done;) - docker-compose up -d $nodes_names + $DOCKER_COMPOSE up -d $nodes_names - docker-compose logs -f ${node_prefix}1 | sed -r -u "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" > $log_file 2>&1 & + $DOCKER_COMPOSE logs -f ${node_prefix}1 | sed -r -u "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" > $log_file 2>&1 & done for chain_id in STRIDE ${HOST_CHAINS[@]}; do diff --git a/scripts/start_relayers.sh b/dockernet/src/start_relayers.sh similarity index 83% rename from scripts/start_relayers.sh rename to dockernet/src/start_relayers.sh index 02be1afad..930ebcd41 100644 --- a/scripts/start_relayers.sh +++ b/dockernet/src/start_relayers.sh @@ -3,7 +3,7 @@ set -eu SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -source ${SCRIPT_DIR}/vars.sh +source ${SCRIPT_DIR}/../config.sh for chain_id in ${HOST_CHAINS[@]}; do relayer_exec=$(GET_VAR_VALUE RELAYER_${chain_id}_EXEC) @@ -26,6 +26,6 @@ for chain_id in ${HOST_CHAINS[@]}; do $relayer_exec rly transact link stride-${chain_name} >> $relayer_logs 2>&1 echo "Done" - docker-compose up -d relayer-${chain_name} - docker-compose logs -f relayer-${chain_name} | sed -r -u "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" >> $relayer_logs 2>&1 & + $DOCKER_COMPOSE up -d relayer-${chain_name} + $DOCKER_COMPOSE logs -f relayer-${chain_name} | sed -r -u "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" >> $relayer_logs 2>&1 & done diff --git a/scripts/start_network.sh b/dockernet/start_network.sh similarity index 65% rename from scripts/start_network.sh rename to dockernet/start_network.sh index 2b6ff6950..28795ee0e 100755 --- a/scripts/start_network.sh +++ b/dockernet/start_network.sh @@ -2,23 +2,22 @@ set -eu SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -source ${SCRIPT_DIR}/vars.sh +source ${SCRIPT_DIR}/config.sh # cleanup any stale state make stop-docker -rm -rf $SCRIPT_DIR/state $SCRIPT_DIR/logs/*.log $SCRIPT_DIR/logs/temp -mkdir -p $SCRIPT_DIR/logs - -HERMES_LOGS=$SCRIPT_DIR/logs/hermes.log +rm -rf $STATE $LOGS +mkdir -p $STATE +mkdir -p $LOGS # If we're testing an upgrade, setup cosmovisor if [[ "$UPGRADE_NAME" != "" ]]; then printf "\n>>> UPGRADE ENABLED! ($UPGRADE_NAME)\n\n" # Update binary #2 with the binary that was just compiled - mkdir -p $SCRIPT_DIR/upgrades/binaries - rm -f $SCRIPT_DIR/upgrades/binaries/strided2 - cp $SCRIPT_DIR/../build/strided $SCRIPT_DIR/upgrades/binaries/strided2 + mkdir -p $UPGRADES/binaries + rm -f $UPGRADES/binaries/strided2 + cp $SCRIPT_DIR/../build/strided $UPGRADES/binaries/strided2 # Build a cosmovisor image with the old binary and replace the stride docker image with a new one # that has both binaries and is running cosmovisor @@ -28,29 +27,29 @@ if [[ "$UPGRADE_NAME" != "" ]]; then -t stridezone:cosmovisor \ --build-arg old_commit_hash=$UPGRADE_OLD_COMMIT_HASH \ --build-arg stride_admin_address=$STRIDE_ADMIN_ADDRESS \ - -f ${SCRIPT_DIR}/upgrades/Dockerfile.cosmovisor . + -f $UPGRADES/Dockerfile.cosmovisor . echo "Re-Building Stride with Upgrade Support..." docker build \ -t stridezone:stride \ --build-arg upgrade_name=$UPGRADE_NAME \ - -f ${SCRIPT_DIR}/upgrades/Dockerfile.stride . + -f $UPGRADES/Dockerfile.stride . echo "Done" fi # Initialize the state for each chain for chain_id in STRIDE ${HOST_CHAINS[@]}; do - bash ${SCRIPT_DIR}/init_chain.sh $chain_id + bash $SRC/init_chain.sh $chain_id done # Start the chain and create the transfer channels -bash ${SCRIPT_DIR}/start_chain.sh -bash ${SCRIPT_DIR}/start_relayers.sh +bash $SRC/start_chain.sh +bash $SRC/start_relayers.sh # Register all host zones for i in ${!HOST_CHAINS[@]}; do - bash $SCRIPT_DIR/register_host.sh ${HOST_CHAINS[$i]} $i + bash $SRC/register_host.sh ${HOST_CHAINS[$i]} $i done -$SCRIPT_DIR/create_logs.sh & +$SRC/create_logs.sh & diff --git a/dockernet/tests/bats/bats-assert b/dockernet/tests/bats/bats-assert new file mode 160000 index 000000000..78fa631d1 --- /dev/null +++ b/dockernet/tests/bats/bats-assert @@ -0,0 +1 @@ +Subproject commit 78fa631d1370562d2cd4a1390989e706158e7bf0 diff --git a/dockernet/tests/bats/bats-core b/dockernet/tests/bats/bats-core new file mode 160000 index 000000000..dc312135a --- /dev/null +++ b/dockernet/tests/bats/bats-core @@ -0,0 +1 @@ +Subproject commit dc312135a8de97e149cd0307c45c1e41061c918d diff --git a/dockernet/tests/bats/bats-support b/dockernet/tests/bats/bats-support new file mode 160000 index 000000000..3c8fadc50 --- /dev/null +++ b/dockernet/tests/bats/bats-support @@ -0,0 +1 @@ +Subproject commit 3c8fadc5097c9acfc96d836dced2bb598e48b009 diff --git a/scripts/tests/integration_tests.bats b/dockernet/tests/integration_tests.bats similarity index 99% rename from scripts/tests/integration_tests.bats rename to dockernet/tests/integration_tests.bats index fb3b95faf..4c2cbda45 100644 --- a/scripts/tests/integration_tests.bats +++ b/dockernet/tests/integration_tests.bats @@ -17,7 +17,7 @@ setup_file() { # set allows us to export all variables in account_vars set -a - source scripts/vars.sh + source dockernet/config.sh HOST_CHAIN_ID=$(GET_VAR_VALUE ${CHAIN_NAME}_CHAIN_ID) HOST_DENOM=$(GET_VAR_VALUE ${CHAIN_NAME}_DENOM) diff --git a/dockernet/tests/run_all_tests.sh b/dockernet/tests/run_all_tests.sh new file mode 100755 index 000000000..8ba8c5ddf --- /dev/null +++ b/dockernet/tests/run_all_tests.sh @@ -0,0 +1,10 @@ +#!/bin/bash +BASE_SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) + +# run test files +BATS=${BASE_SCRIPT_DIR}/bats/bats-core/bin/bats +INTEGRATION_TEST_FILE=${BASE_SCRIPT_DIR}/integration_tests.bats + +CHAIN_NAME=GAIA TRANSFER_CHANNEL_NUMBER=0 $BATS $INTEGRATION_TEST_FILE +CHAIN_NAME=JUNO TRANSFER_CHANNEL_NUMBER=1 $BATS $INTEGRATION_TEST_FILE +CHAIN_NAME=OSMO TRANSFER_CHANNEL_NUMBER=2 $BATS $INTEGRATION_TEST_FILE \ No newline at end of file diff --git a/scripts/upgrades/Dockerfile.cosmovisor b/dockernet/upgrades/Dockerfile.cosmovisor similarity index 100% rename from scripts/upgrades/Dockerfile.cosmovisor rename to dockernet/upgrades/Dockerfile.cosmovisor diff --git a/scripts/upgrades/Dockerfile.stride b/dockernet/upgrades/Dockerfile.stride similarity index 100% rename from scripts/upgrades/Dockerfile.stride rename to dockernet/upgrades/Dockerfile.stride diff --git a/scripts/upgrades/README.md b/dockernet/upgrades/README.md similarity index 66% rename from scripts/upgrades/README.md rename to dockernet/upgrades/README.md index ba9f8ca03..ca35ae9d0 100644 --- a/scripts/upgrades/README.md +++ b/dockernet/upgrades/README.md @@ -1,18 +1,18 @@ # Testing Upgrades in Local Mode ## Run Instructions -* Before working on the upgrade logic, compile the original binary and place it in `scripts/upgrades/binaries/` named `strided1` +* Before working on the upgrade logic, compile the original binary and place it in `dockernet/upgrades/binaries/` named `strided1` * **This binary should represent the code before the upgrade changes. You'll likely want to checkout to the main branch to compile this.** ``` git checkout {OLD_COMMIT_HASH} make build-docker build=s -mkdir -p scripts/upgrades/binaries -rm -f scripts/upgrades/binaries/strided1 -cp build/strided scripts/upgrades/binaries/strided1 +mkdir -p dockernet/upgrades/binaries +rm -f dockernet/upgrades/binaries/strided1 +cp build/strided dockernet/upgrades/binaries/strided1 git checkout {UPDATED_BRANCH} ``` * Then switch the code back to the most recent version -* Enter the commit hash of the old binary (built above) as `UPGRADE_OLD_COMMIT_HASH` in `scripts/vars.sh` -* Enter upgrade name as `UPGRADE_NAME` in `scripts/vars.sh` +* Enter the commit hash of the old binary (built above) as `UPGRADE_OLD_COMMIT_HASH` in `dockernet/config.sh` +* Enter upgrade name as `UPGRADE_NAME` in `dockernet/config.sh` * Then startup the chain as normal and rebuild stride ``` make start-docker build=s @@ -22,18 +22,18 @@ make start-docker build=s * Create the cosmosvisor file structure required for upgrades * Rebuild and replace the stride docker image with an image that has both binaries and is running cosmosvisor * This image pulls the new binary from the normal docker build that happens at the start of running this make command -* Once the chain is up and running, set the upgrade height (`UPGRADE_HEIGHT` in `scripts/submit_upgrade.sh`) and run the upgrade script to propose and vote on an upgrade +* Once the chain is up and running, set the upgrade height (`UPGRADE_HEIGHT` in `dockernet/submit_upgrade.sh`) and run the upgrade script to propose and vote on an upgrade ``` -bash scripts/upgrades/submit_upgrade.sh +bash dockernet/upgrades/submit_upgrade.sh ``` * View the stride logs - you should notice an update occuring at the specified upgrade height. -* After the upgrade has occured, check a post-upgrade condition using `scripts/upgrades/binaries/strided2` +* After the upgrade has occured, check a post-upgrade condition using `dockernet/upgrades/binaries/strided2` ## Testing Upgrades with Integration Tests * **WARNING**: The integration tests may change between versions - the following only works if there were not breaking changes. If there are breaking changes, you can replace the GAIA and JUNO integration test files with those from the old version. * Follow the instructions above to start the network but stop before submitting the proposal -* Run integration tests for GAIA and JUNO (comment out OSMO and STARS in `scripts/tests/run_all_tests.sh`) -* Once the tests pass, grab the current block height, modify `scripts/upgrades/submit_upgrade.sh` to have an upgrade height ~50 blocks in the future, and run the script +* Run integration tests for GAIA and JUNO (comment out OSMO and STARS in `dockernet/tests/run_all_tests.sh`) +* Once the tests pass, grab the current block height, modify `dockernet/upgrades/submit_upgrade.sh` to have an upgrade height ~50 blocks in the future, and run the script * Check the stride logs to confirm the upgrade passes successfully -* Modify `STRIDE_CMD` in `vars.sh` to point to the **new** binary (`STRIDE_CMD="$SCRIPT_DIR/upgrades/binaries/strided2"`) -* Finally, run integration tests for OSMO and STARS (comment out GAIA and JUNO in `scripts/tests/run_all_tests.sh`) +* Modify `STRIDE_CMD` in `config.sh` to point to the **new** binary (`STRIDE_CMD="$UPGRADES/binaries/strided2"`) +* Finally, run integration tests for OSMO and STARS (comment out GAIA and JUNO in `dockernet/tests/run_all_tests.sh`) diff --git a/scripts/upgrades/submit_upgrade.sh b/dockernet/upgrades/submit_upgrade.sh similarity index 97% rename from scripts/upgrades/submit_upgrade.sh rename to dockernet/upgrades/submit_upgrade.sh index b8654ce5c..38b7be1f7 100644 --- a/scripts/upgrades/submit_upgrade.sh +++ b/dockernet/upgrades/submit_upgrade.sh @@ -2,7 +2,7 @@ set -eu SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -source ${SCRIPT_DIR}/../vars.sh +source ${SCRIPT_DIR}/../config.sh UPGRADE_HEIGHT=250 diff --git a/scripts/local-to-mainnet/commands.sh b/scripts/local-to-mainnet/commands.sh index 515c32fdf..5a2973572 100644 --- a/scripts/local-to-mainnet/commands.sh +++ b/scripts/local-to-mainnet/commands.sh @@ -8,25 +8,38 @@ echo "$HOT_WALLET_1_MNEMONIC" | build/osmosisd keys add hot --recover --keyring- #### START RELAYERS # Create connections and channels -docker-compose run --rm relayer-host rly transact link stride-host -# (OR) If the go relayer isn't working, use hermes (you'll have to add the connections to the relayer config though in `scripts/state/relayer`) -# docker-compose run --rm hermes hermes create connection --a-chain osmosis-1 --b-chain local-test-7 -# docker-compose run --rm hermes hermes create channel --a-chain local-test-7 --a-connection connection-0 --a-port transfer --b-port transfer +docker-compose -f scripts/local-to-mainnet/docker-compose.yml run --rm relayer rly transact link stride-host + +# (OR) If the go relayer isn't working, use hermes (you'll have to add the connections to the relayer config though in `scripts/state/relaye/config/config.yaml`) +# docker-compose -f scripts/local-to-mainnet/docker-compose.yml run --rm hermes hermes create connection --a-chain osmosis-1 --b-chain local-test-1 +# docker-compose -f scripts/local-to-mainnet/docker-compose.yml run --rm hermes hermes create channel --a-chain local-test-1 --a-connection connection-0 --a-port transfer --b-port transfer + +# Ensure Relayer Config is updated (`scripts/state/relayer/config/config.yaml`) +# paths: +# stride-host: +# src: +# chain-id: stride-1 +# client-id: 07-tendermint-0 +# connection-id: connection-0 +# dst: +# chain-id: cosmoshub-4 +# client-id: {CLIENT-ID} +# connection-id: {CONNECTION-ID} # Get channel ID created on the host -build/strided --home scripts/state/stride1 q ibc channel channels -transfer_channel=$(build/strided --home scripts/state/stride1 q ibc channel channels | grep channel-0 -A 4 | grep counterparty -A 1 | grep channel | awk '{print $2}') && echo $transfer_channel +build/strided --home s q ibc channel channels +transfer_channel=$(build/strided --home s q ibc channel channels | grep channel-0 -A 4 | grep counterparty -A 1 | grep channel | awk '{print $2}') && echo $transfer_channel # Start Hermes Relayer -docker-compose up -d hermes -docker-compose logs -f hermes | sed -r -u "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" >> scripts/logs/hermes.log 2>&1 & +docker-compose -f scripts/local-to-mainnet/docker-compose.yml up -d hermes +docker-compose -f scripts/local-to-mainnet/docker-compose.yml logs -f hermes | sed -r -u "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" >> scripts/logs/hermes.log 2>&1 & # Configure the Go Relayer to only run ICQ sed -i -E "s|rule: \"\"|rule: allowlist|g" scripts/state/relayer/config/config.yaml # Start Go Relayer (for ICQ) -docker-compose up -d relayer-host -docker-compose logs -f relayer-host | sed -r -u "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" >> scripts/logs/relayer.log 2>&1 & +docker-compose -f scripts/local-to-mainnet/docker-compose.yml up -d relayer +docker-compose -f scripts/local-to-mainnet/docker-compose.yml logs -f relayer | sed -r -u "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" >> scripts/logs/relayer.log 2>&1 & #### REGISTER HOST @@ -34,59 +47,61 @@ docker-compose logs -f relayer-host | sed -r -u "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2} build/osmosisd tx ibc-transfer transfer transfer $transfer_channel stride1u20df3trc2c2zdhm8qvh2hdjx9ewh00sv6eyy8 4000000uosmo --from hot --chain-id osmosis-1 -y --keyring-backend test --node http://osmo-fleet-direct.main.stridenet.co:26657 # Confirm funds were recieved on stride and get IBC denom -build/strided --home scripts/state/stride1 q bank balances stride1u20df3trc2c2zdhm8qvh2hdjx9ewh00sv6eyy8 +build/strided --home s q bank balances stride1u20df3trc2c2zdhm8qvh2hdjx9ewh00sv6eyy8 # Register host zone -IBC_DENOM=$(build/strided --home scripts/state/stride1 q bank balances stride1u20df3trc2c2zdhm8qvh2hdjx9ewh00sv6eyy8 | grep ibc | awk '{print $2}' | tr -d '"') && echo $IBC_DENOM -build/strided --home scripts/state/stride1 tx stakeibc register-host-zone \ +IBC_DENOM=$(build/strided --home s q bank balances stride1u20df3trc2c2zdhm8qvh2hdjx9ewh00sv6eyy8 | grep ibc | awk '{print $2}' | tr -d '"') && echo $IBC_DENOM +build/strided --home s tx stakeibc register-host-zone \ connection-0 uosmo osmo $IBC_DENOM channel-0 1 \ --from admin --gas 1000000 -y # Add validator -build/strided --home scripts/state/stride1 tx stakeibc add-validator osmosis-1 imperator osmovaloper1083svrca4t350mphfv9x45wq9asrs60c6rv0j5 10 5 --chain-id local-test-7 --keyring-backend test --from admin -y +build/strided --home s tx stakeibc add-validator osmosis-1 imperator osmovaloper1t8qckan2yrygq7kl9apwhzfalwzgc2429p8f0s 10 5 --chain-id local-test-1 --keyring-backend test --from admin -y +# Confirm ICA channels were registered +build/strided --home s q stakeibc list-host-zone #### FLOW ## Go Through Flow # Liquid stake (then wait and LS again) -build/strided --home scripts/state/stride1 tx stakeibc liquid-stake 1000000 uosmo --keyring-backend test --from admin -y --chain-id local-test-7 -y +build/strided --home s tx stakeibc liquid-stake 1000000 uosmo --keyring-backend test --from admin -y --chain-id local-test-1 -y # Confirm stTokens, StakedBal, and Redemption Rate -build/strided --home scripts/state/stride1 q bank balances stride1u20df3trc2c2zdhm8qvh2hdjx9ewh00sv6eyy8 -build/strided --home scripts/state/stride1 q stakeibc list-host-zone +build/strided --home s q bank balances stride1u20df3trc2c2zdhm8qvh2hdjx9ewh00sv6eyy8 +build/strided --home s q stakeibc list-host-zone # Redeem -build/strided --home scripts/state/stride1 tx stakeibc redeem-stake 1000 osmosis-1 osmo1c37n9aywapx2v0s6vk2yedydkkhq65zz38jfnc --from admin --keyring-backend test --chain-id local-test-7 -y +build/strided --home s tx stakeibc redeem-stake 1000 osmosis-1 osmo1c37n9aywapx2v0s6vk2yedydkkhq65zz38jfnc --from admin --keyring-backend test --chain-id local-test-1 -y # Confirm stTokens and StakedBal -build/strided --home scripts/state/stride1 q bank balances stride1u20df3trc2c2zdhm8qvh2hdjx9ewh00sv6eyy8 -build/strided --home scripts/state/stride1 q stakeibc list-host-zone +build/strided --home s q bank balances stride1u20df3trc2c2zdhm8qvh2hdjx9ewh00sv6eyy8 +build/strided --home s q stakeibc list-host-zone # Add another validator -build/strided --home scripts/state/stride1 tx stakeibc add-validator osmosis-1 imperator osmovaloper1083svrca4t350mphfv9x45wq9asrs60c6rv0j5 10 5 --chain-id local-test-7 --keyring-backend test --from admin -y +build/strided --home s tx stakeibc add-validator osmosis-1 notional osmovaloper1083svrca4t350mphfv9x45wq9asrs60c6rv0j5 10 5 --chain-id local-test-1 --keyring-backend test --from admin -y # Liquid stake and confirm the stake was split 50/50 between the validators -build/strided --home scripts/state/stride1 tx stakeibc liquid-stake 1000000 uosmo --keyring-backend test --from admin -y --chain-id local-test-7 -y +build/strided --home s tx stakeibc liquid-stake 1000000 uosmo --keyring-backend test --from admin -y --chain-id local-test-1 -y # Change validator weights -build/strided --home scripts/state/stride1 tx stakeibc change-validator-weight osmosis-1 osmovaloper1t8qckan2yrygq7kl9apwhzfalwzgc2429p8f0s 1 --from admin -y -build/strided --home scripts/state/stride1 tx stakeibc change-validator-weight osmosis-1-1 osmovaloper1083svrca4t350mphfv9x45wq9asrs60c6rv0j5 49 --from admin -y +build/strided --home s tx stakeibc change-validator-weight osmosis-1 osmovaloper1t8qckan2yrygq7kl9apwhzfalwzgc2429p8f0s 1 --from admin -y +build/strided --home s tx stakeibc change-validator-weight osmosis-1 osmovaloper1083svrca4t350mphfv9x45wq9asrs60c6rv0j5 49 --from admin -y # LS and confirm delegation aligned with new weights -build/strided --home scripts/state/stride1 tx stakeibc liquid-stake 1000000 ujuno --keyring-backend test --from admin -y --chain-id local-test-7 -y +build/strided --home s tx stakeibc liquid-stake 1000000 uosmo --keyring-backend test --from admin -y --chain-id local-test-1 -y # Call rebalance to and confirm new delegations -build/strided --home scripts/state/stride1 tx stakeibc rebalance-validators osmosis-1 5 --from admin +build/strided --home s tx stakeibc rebalance-validators osmosis-1 5 --from admin # Clear balances -fee_address=$(build/strided --home scripts/state/stride1 q stakeibc show-host-zone osmosis-1 | grep feeAccount -A 1 | grep address | awk '{print $2}') && echo $fee_address -balance=$(build/strided --home scripts/state/stride1 q bank balances $fee_address | grep amount | awk '{print $3}' | tr -d '"') && echo $balance -build/strided --home scripts/state/stride1 tx stakeibc clear-balance osmosis-1 $balance $transfer_channel --from admin +fee_address=$(build/strided --home s q stakeibc show-host-zone osmosis-1 | grep feeAccount -A 1 | grep address | awk '{print $2}') && echo $fee_address +balance=$(build/osmosisd --home s q bank balances $fee_address | grep amount | awk '{print $3}' | tr -d '"') && echo $balance +build/strided --home s tx stakeibc clear-balance osmosis-1 $balance $transfer_channel --from admin # Update delegations (just submit this query and confirm the ICQ callback displays in the stride logs) # Must be submitted in ICQ window -build/strided --home scripts/state/stride1 tx stakeibc update-delegation osmosis-1 osmovaloper1t8qckan2yrygq7kl9apwhzfalwzgc2429p8f0s --from admin -y +build/strided --home s tx stakeibc update-delegation osmosis-1 osmovaloper1t8qckan2yrygq7kl9apwhzfalwzgc2429p8f0s --from admin -y #### MISC # If a channel closes, restore it with: -build/strided --home scripts/state/stride1 tx stakeibc restore-interchain-account osmosis-1 {DELEGATION | WITHDRAWAL | FEE | REDEMPTION} --from admin \ No newline at end of file +build/strided --home s tx stakeibc restore-interchain-account osmosis-1 {DELEGATION | WITHDRAWAL | FEE | REDEMPTION} --from admin \ No newline at end of file diff --git a/scripts/local-to-mainnet/docker-compose.yml b/scripts/local-to-mainnet/docker-compose.yml new file mode 100644 index 000000000..9c7e31c87 --- /dev/null +++ b/scripts/local-to-mainnet/docker-compose.yml @@ -0,0 +1,24 @@ +version: "3" +services: + stride1: + image: stridezone:stride + volumes: + - ../state/stride1:/home/stride/.stride + ports: + - "26657:26657" + - "1317:1317" + - "9090:9090" + + hermes: + image: stridezone:hermes + volumes: + - ~/.hermes:/home/hermes/.hermes + - ../state/hermes/config.toml:/home/hermes/.hermes/config.toml + restart: always + + relayer: + image: stridezone:relayer + volumes: + - ../state/relayer:/home/relayer/.relayer + restart: always + command: [ "bash", "start.sh", "stride-host" ] diff --git a/scripts/local-to-mainnet/init_stride.sh b/scripts/local-to-mainnet/init_stride.sh index 331f5f3c4..525017419 100644 --- a/scripts/local-to-mainnet/init_stride.sh +++ b/scripts/local-to-mainnet/init_stride.sh @@ -5,7 +5,8 @@ SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) STRIDE_CHAIN_ID="$1" STATE=$SCRIPT_DIR/../state -KEYS_LOGS=$SCRIPT_DIR/../logs/keys.log +LOGS=$SCRIPT_DIR/../logs +KEYS_LOGS=$LOGS/keys.log # CHAIN PARAMS BLOCK_TIME='5s' diff --git a/scripts/local-to-mainnet/start.sh b/scripts/local-to-mainnet/start.sh index 7e144e8ea..e121771c7 100644 --- a/scripts/local-to-mainnet/start.sh +++ b/scripts/local-to-mainnet/start.sh @@ -3,7 +3,7 @@ set -eu SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -STRIDE_CHAIN_ID=local-test-7 +STRIDE_CHAIN_ID=local-test-1 HOST_CHAIN_ID=osmosis-1 HOST_ENDPOINT=osmo-fleet-direct.main.stridenet.co HOST_ACCOUNT_PREFIX=osmo @@ -16,21 +16,25 @@ HOST_VAL_ADDRESS_2=osmovaloper1083svrca4t350mphfv9x45wq9asrs60c6rv0j5 HOT_WALLET_ADDRESS=osmo1c37n9aywapx2v0s6vk2yedydkkhq65zz38jfnc STATE=$SCRIPT_DIR/../state -STRIDE_LOGS=$SCRIPT_DIR/../logs/stride.log +LOGS=$SCRIPT_DIR/../logs +STRIDE_LOGS=$LOGS/stride.log +STRIDE_HOME=$STATE/stride1 +DOCKER_COMPOSE="docker-compose -f $SCRIPT_DIR/docker-compose.yml" HERMES_STRIDE_MNEMONIC="alter old invest friend relief slot swear pioneer syrup economy vendor tray focus hedgehog artist legend antenna hair almost donkey spice protect sustain increase" RELAYER_STRIDE_MNEMONIC="pride narrow breeze fitness sign bounce dose smart squirrel spell length federal replace coral lunar thunder vital push nuclear crouch fun accident hood need" # cleanup any stale state make stop-docker -rm -rf $STATE $SCRIPT_DIR/../logs/*.log $SCRIPT_DIR/../logs/temp -mkdir -p $SCRIPT_DIR/../logs +rm -rf $STATE $LOGS +mkdir -p $STATE +mkdir -p $LOGS # Start stride bash ${SCRIPT_DIR}/init_stride.sh $STRIDE_CHAIN_ID -docker-compose up -d stride1 -docker-compose logs -f stride1 | sed -r -u "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" > $STRIDE_LOGS 2>&1 & +$DOCKER_COMPOSE up -d stride1 +$DOCKER_COMPOSE logs -f stride1 | sed -r -u "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" > $STRIDE_LOGS 2>&1 & printf "Waiting for Stride to start..." ( tail -f -n0 $STRIDE_LOGS & ) | grep -q "finalizing commit of block" @@ -74,7 +78,14 @@ $RELAYER_CMD keys restore host rly2 "$HOT_WALLET_3_MNEMONIC" # Update commands template COMMANDS_FILE=${SCRIPT_DIR}/commands.sh cp ${SCRIPT_DIR}/templates/commands.sh $COMMANDS_FILE +DOCKER_COMPOSE_RELATIVE="docker-compose -f scripts/local-to-mainnet/docker-compose.yml" +STATE_RELATIVE=scripts/state +LOGS_RELATIVE=scripts/logs sed -i -E '1s/^/############################################\n### WARNING: THIS FILE IS AUTOGENERATED. ###\n### ANY CHANGES WILL BE OVERWRITTEN. ###\n############################################\n/' $COMMANDS_FILE +sed -i -E "s|DOCKER_COMPOSE|$DOCKER_COMPOSE_RELATIVE|g" $COMMANDS_FILE +sed -i -E "s|STATE|$STATE_RELATIVE|g" $COMMANDS_FILE +sed -i -E "s|LOGS|$LOGS_RELATIVE|g" $COMMANDS_FILE +sed -i -E "s|STRIDE_HOME|s|g" $COMMANDS_FILE sed -i -E "s|STRIDE_CHAIN_ID|$STRIDE_CHAIN_ID|g" $COMMANDS_FILE sed -i -E "s|HOST_CHAIN_ID|$HOST_CHAIN_ID|g" $COMMANDS_FILE sed -i -E "s|HOST_BINARY|$HOST_BINARY|g" $COMMANDS_FILE diff --git a/scripts/local-to-mainnet/templates/commands.sh b/scripts/local-to-mainnet/templates/commands.sh index 12dec20de..9813d0b61 100644 --- a/scripts/local-to-mainnet/templates/commands.sh +++ b/scripts/local-to-mainnet/templates/commands.sh @@ -4,13 +4,13 @@ echo "$HOT_WALLET_1_MNEMONIC" | HOST_BINARY keys add hot --recover --keyring-bac #### START RELAYERS # Create connections and channels -docker-compose run --rm relayer-host rly transact link stride-host +DOCKER_COMPOSE run --rm relayer rly transact link stride-host -# (OR) If the go relayer isn't working, use hermes (you'll have to add the connections to the relayer config though in `scripts/state/relaye/config/config.yaml`) -# docker-compose run --rm hermes hermes create connection --a-chain HOST_CHAIN_ID --b-chain STRIDE_CHAIN_ID -# docker-compose run --rm hermes hermes create channel --a-chain STRIDE_CHAIN_ID --a-connection connection-0 --a-port transfer --b-port transfer +# (OR) If the go relayer isn't working, use hermes (you'll have to add the connections to the relayer config though in `STATE/relaye/config/config.yaml`) +# DOCKER_COMPOSE run --rm hermes hermes create connection --a-chain HOST_CHAIN_ID --b-chain STRIDE_CHAIN_ID +# DOCKER_COMPOSE run --rm hermes hermes create channel --a-chain STRIDE_CHAIN_ID --a-connection connection-0 --a-port transfer --b-port transfer -# Ensure Relayer Config is updated (`scripts/state/relaye/config/config.yaml`) +# Ensure Relayer Config is updated (`STATE/relayer/config/config.yaml`) # paths: # stride-host: # src: @@ -23,19 +23,19 @@ docker-compose run --rm relayer-host rly transact link stride-host # connection-id: {CONNECTION-ID} # Get channel ID created on the host -build/strided --home scripts/state/stride1 q ibc channel channels -transfer_channel=$(build/strided --home scripts/state/stride1 q ibc channel channels | grep channel-0 -A 4 | grep counterparty -A 1 | grep channel | awk '{print $2}') && echo $transfer_channel +build/strided --home STRIDE_HOME q ibc channel channels +transfer_channel=$(build/strided --home STRIDE_HOME q ibc channel channels | grep channel-0 -A 4 | grep counterparty -A 1 | grep channel | awk '{print $2}') && echo $transfer_channel # Start Hermes Relayer -docker-compose up -d hermes -docker-compose logs -f hermes | sed -r -u "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" >> scripts/logs/hermes.log 2>&1 & +DOCKER_COMPOSE up -d hermes +DOCKER_COMPOSE logs -f hermes | sed -r -u "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" >> LOGS/hermes.log 2>&1 & # Configure the Go Relayer to only run ICQ -sed -i -E "s|rule: \"\"|rule: allowlist|g" scripts/state/relayer/config/config.yaml +sed -i -E "s|rule: \"\"|rule: allowlist|g" STATE/relayer/config/config.yaml # Start Go Relayer (for ICQ) -docker-compose up -d relayer-host -docker-compose logs -f relayer-host | sed -r -u "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" >> scripts/logs/relayer.log 2>&1 & +DOCKER_COMPOSE up -d relayer +DOCKER_COMPOSE logs -f relayer | sed -r -u "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" >> LOGS/relayer.log 2>&1 & #### REGISTER HOST @@ -43,61 +43,61 @@ docker-compose logs -f relayer-host | sed -r -u "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2} HOST_BINARY tx ibc-transfer transfer transfer $transfer_channel stride1u20df3trc2c2zdhm8qvh2hdjx9ewh00sv6eyy8 4000000HOST_DENOM --from hot --chain-id HOST_CHAIN_ID -y --keyring-backend test --node http://HOST_ENDPOINT:26657 # Confirm funds were recieved on stride and get IBC denom -build/strided --home scripts/state/stride1 q bank balances stride1u20df3trc2c2zdhm8qvh2hdjx9ewh00sv6eyy8 +build/strided --home STRIDE_HOME q bank balances stride1u20df3trc2c2zdhm8qvh2hdjx9ewh00sv6eyy8 # Register host zone -IBC_DENOM=$(build/strided --home scripts/state/stride1 q bank balances stride1u20df3trc2c2zdhm8qvh2hdjx9ewh00sv6eyy8 | grep ibc | awk '{print $2}' | tr -d '"') && echo $IBC_DENOM -build/strided --home scripts/state/stride1 tx stakeibc register-host-zone \ +IBC_DENOM=$(build/strided --home STRIDE_HOME q bank balances stride1u20df3trc2c2zdhm8qvh2hdjx9ewh00sv6eyy8 | grep ibc | awk '{print $2}' | tr -d '"') && echo $IBC_DENOM +build/strided --home STRIDE_HOME tx stakeibc register-host-zone \ connection-0 HOST_DENOM HOST_ACCOUNT_PREFIX $IBC_DENOM channel-0 1 \ --from admin --gas 1000000 -y # Add validator -build/strided --home scripts/state/stride1 tx stakeibc add-validator HOST_CHAIN_ID HOST_VAL_NAME_1 HOST_VAL_ADDRESS_1 10 5 --chain-id STRIDE_CHAIN_ID --keyring-backend test --from admin -y +build/strided --home STRIDE_HOME tx stakeibc add-validator HOST_CHAIN_ID HOST_VAL_NAME_1 HOST_VAL_ADDRESS_1 10 5 --chain-id STRIDE_CHAIN_ID --keyring-backend test --from admin -y # Confirm ICA channels were registered -build/strided --home scripts/state/stride1 q stakeibc list-host-zone +build/strided --home STRIDE_HOME q stakeibc list-host-zone #### FLOW ## Go Through Flow # Liquid stake (then wait and LS again) -build/strided --home scripts/state/stride1 tx stakeibc liquid-stake 1000000 HOST_DENOM --keyring-backend test --from admin -y --chain-id STRIDE_CHAIN_ID -y +build/strided --home STRIDE_HOME tx stakeibc liquid-stake 1000000 HOST_DENOM --keyring-backend test --from admin -y --chain-id STRIDE_CHAIN_ID -y # Confirm stTokens, StakedBal, and Redemption Rate -build/strided --home scripts/state/stride1 q bank balances stride1u20df3trc2c2zdhm8qvh2hdjx9ewh00sv6eyy8 -build/strided --home scripts/state/stride1 q stakeibc list-host-zone +build/strided --home STRIDE_HOME q bank balances stride1u20df3trc2c2zdhm8qvh2hdjx9ewh00sv6eyy8 +build/strided --home STRIDE_HOME q stakeibc list-host-zone # Redeem -build/strided --home scripts/state/stride1 tx stakeibc redeem-stake 1000 HOST_CHAIN_ID HOT_WALLET_ADDRESS --from admin --keyring-backend test --chain-id STRIDE_CHAIN_ID -y +build/strided --home STRIDE_HOME tx stakeibc redeem-stake 1000 HOST_CHAIN_ID HOT_WALLET_ADDRESS --from admin --keyring-backend test --chain-id STRIDE_CHAIN_ID -y # Confirm stTokens and StakedBal -build/strided --home scripts/state/stride1 q bank balances stride1u20df3trc2c2zdhm8qvh2hdjx9ewh00sv6eyy8 -build/strided --home scripts/state/stride1 q stakeibc list-host-zone +build/strided --home STRIDE_HOME q bank balances stride1u20df3trc2c2zdhm8qvh2hdjx9ewh00sv6eyy8 +build/strided --home STRIDE_HOME q stakeibc list-host-zone # Add another validator -build/strided --home scripts/state/stride1 tx stakeibc add-validator HOST_CHAIN_ID HOST_VAL_NAME_2 HOST_VAL_ADDRESS_2 10 5 --chain-id STRIDE_CHAIN_ID --keyring-backend test --from admin -y +build/strided --home STRIDE_HOME tx stakeibc add-validator HOST_CHAIN_ID HOST_VAL_NAME_2 HOST_VAL_ADDRESS_2 10 5 --chain-id STRIDE_CHAIN_ID --keyring-backend test --from admin -y # Liquid stake and confirm the stake was split 50/50 between the validators -build/strided --home scripts/state/stride1 tx stakeibc liquid-stake 1000000 HOST_DENOM --keyring-backend test --from admin -y --chain-id STRIDE_CHAIN_ID -y +build/strided --home STRIDE_HOME tx stakeibc liquid-stake 1000000 HOST_DENOM --keyring-backend test --from admin -y --chain-id STRIDE_CHAIN_ID -y # Change validator weights -build/strided --home scripts/state/stride1 tx stakeibc change-validator-weight HOST_CHAIN_ID HOST_VAL_ADDRESS_1 1 --from admin -y -build/strided --home scripts/state/stride1 tx stakeibc change-validator-weight HOST_CHAIN_ID HOST_VAL_ADDRESS_2 49 --from admin -y +build/strided --home STRIDE_HOME tx stakeibc change-validator-weight HOST_CHAIN_ID HOST_VAL_ADDRESS_1 1 --from admin -y +build/strided --home STRIDE_HOME tx stakeibc change-validator-weight HOST_CHAIN_ID HOST_VAL_ADDRESS_2 49 --from admin -y # LS and confirm delegation aligned with new weights -build/strided --home scripts/state/stride1 tx stakeibc liquid-stake 1000000 HOST_DENOM --keyring-backend test --from admin -y --chain-id STRIDE_CHAIN_ID -y +build/strided --home STRIDE_HOME tx stakeibc liquid-stake 1000000 HOST_DENOM --keyring-backend test --from admin -y --chain-id STRIDE_CHAIN_ID -y # Call rebalance to and confirm new delegations -build/strided --home scripts/state/stride1 tx stakeibc rebalance-validators HOST_CHAIN_ID 5 --from admin +build/strided --home STRIDE_HOME tx stakeibc rebalance-validators HOST_CHAIN_ID 5 --from admin # Clear balances -fee_address=$(build/strided --home scripts/state/stride1 q stakeibc show-host-zone osmosis-1 | grep feeAccount -A 1 | grep address | awk '{print $2}') && echo $fee_address -balance=$(build/osmosisd --home scripts/state/stride1 q bank balances $fee_address | grep amount | awk '{print $3}' | tr -d '"') && echo $balance -build/strided --home scripts/state/stride1 tx stakeibc clear-balance HOST_CHAIN_ID $balance $transfer_channel --from admin +fee_address=$(build/strided --home STRIDE_HOME q stakeibc show-host-zone osmosis-1 | grep feeAccount -A 1 | grep address | awk '{print $2}') && echo $fee_address +balance=$(build/osmosisd --home STRIDE_HOME q bank balances $fee_address | grep amount | awk '{print $3}' | tr -d '"') && echo $balance +build/strided --home STRIDE_HOME tx stakeibc clear-balance HOST_CHAIN_ID $balance $transfer_channel --from admin # Update delegations (just submit this query and confirm the ICQ callback displays in the stride logs) # Must be submitted in ICQ window -build/strided --home scripts/state/stride1 tx stakeibc update-delegation HOST_CHAIN_ID HOST_VAL_ADDRESS_1 --from admin -y +build/strided --home STRIDE_HOME tx stakeibc update-delegation HOST_CHAIN_ID HOST_VAL_ADDRESS_1 --from admin -y #### MISC # If a channel closes, restore it with: -build/strided --home scripts/state/stride1 tx stakeibc restore-interchain-account HOST_CHAIN_ID {DELEGATION | WITHDRAWAL | FEE | REDEMPTION} --from admin \ No newline at end of file +build/strided --home STRIDE_HOME tx stakeibc restore-interchain-account HOST_CHAIN_ID {DELEGATION | WITHDRAWAL | FEE | REDEMPTION} --from admin \ No newline at end of file diff --git a/scripts/tests/bats/bats-assert b/scripts/tests/bats/bats-assert deleted file mode 160000 index 9f88b4207..000000000 --- a/scripts/tests/bats/bats-assert +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 9f88b4207da750093baabc4e3f41bf68f0dd3630 diff --git a/scripts/tests/bats/bats-support b/scripts/tests/bats/bats-support deleted file mode 160000 index 004e70763..000000000 --- a/scripts/tests/bats/bats-support +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 004e707638eedd62e0481e8cdc9223ad471f12ee diff --git a/scripts/tests/run_all_tests.sh b/scripts/tests/run_all_tests.sh deleted file mode 100755 index 01f123a0e..000000000 --- a/scripts/tests/run_all_tests.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -BASE_SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) - -# run test files -CHAIN_NAME=GAIA TRANSFER_CHANNEL_NUMBER=0 bats $BASE_SCRIPT_DIR/integration_tests.bats -CHAIN_NAME=JUNO TRANSFER_CHANNEL_NUMBER=1 bats $BASE_SCRIPT_DIR/integration_tests.bats -CHAIN_NAME=OSMO TRANSFER_CHANNEL_NUMBER=2 bats $BASE_SCRIPT_DIR/integration_tests.bats diff --git a/testutil/localstride/docker-compose.yml b/testutil/localstride/localnet/docker-compose.yml similarity index 54% rename from testutil/localstride/docker-compose.yml rename to testutil/localstride/localnet/docker-compose.yml index f5b6cc96e..7055d5563 100644 --- a/testutil/localstride/docker-compose.yml +++ b/testutil/localstride/localnet/docker-compose.yml @@ -3,18 +3,17 @@ version: "3" services: strided: - image: local:stride + image: stridezone:localstride build: - context: ../../ - dockerfile: Dockerfile.localstride + context: ../../../ args: RUNNER_IMAGE: alpine:3.15 GO_VERSION: 1.18 volumes: - - ./scripts/start.sh:/stride/start.sh - - $HOME/.stride/:/stride/.stride/ + - ./scripts/start.sh:/home/stride/start.sh + - $HOME/.stride/:/home/stride/.stride/ entrypoint: - - /stride/start.sh + - /home/stride/start.sh ports: - 26657:26657 - 1317:1317 diff --git a/testutil/localstride/scripts/add_keys.sh b/testutil/localstride/localnet/scripts/add_keys.sh similarity index 100% rename from testutil/localstride/scripts/add_keys.sh rename to testutil/localstride/localnet/scripts/add_keys.sh diff --git a/testutil/localstride/scripts/start.sh b/testutil/localstride/localnet/scripts/start.sh similarity index 97% rename from testutil/localstride/scripts/start.sh rename to testutil/localstride/localnet/scripts/start.sh index e2760fe98..aed5dd563 100755 --- a/testutil/localstride/scripts/start.sh +++ b/testutil/localstride/localnet/scripts/start.sh @@ -7,10 +7,6 @@ MONIKER=val MNEMONIC="deer gaze swear marine one perfect hero twice turkey symbol mushroom hub escape accident prevent rifle horse arena secret endless panel equal rely payment" -install_prerequisites () { - apk add dasel -} - edit_genesis () { GENESIS=$CONFIG_FOLDER/genesis.json @@ -67,7 +63,6 @@ edit_config () { if [[ ! -d $CONFIG_FOLDER ]] then echo $MNEMONIC | strided init -o --chain-id=$CHAIN_ID --home $STRIDE_HOME --recover $MONIKER - install_prerequisites edit_genesis add_genesis_accounts edit_config diff --git a/testutil/localstride/state-export/docker-compose.yml b/testutil/localstride/state-export/docker-compose.yml new file mode 100644 index 000000000..6862efe80 --- /dev/null +++ b/testutil/localstride/state-export/docker-compose.yml @@ -0,0 +1,26 @@ +version: "3" + +services: + + stride: + image: stridezone:localstride + build: + context: ../../../ + args: + RUNNER_IMAGE: alpine:3.16 + GO_VERSION: 1.19 + volumes: + - ./scripts/start.sh:/home/stride/start.sh + - ./scripts/testnetify.py:/home/stride/testnetify.py + - ./state_export.json:/home/stride/state_export.json + - $HOME/.stride/:/home/stride/.stride/ + entrypoint: + - /home/stride/start.sh + environment: + - MONIKER=val + - CHAIN_ID=localstride + ports: + - 26657:26657 + - 1317:1317 + - 9090:9090 + - 9091:9091 diff --git a/testutil/localstride/state_export/scripts/start.sh b/testutil/localstride/state-export/scripts/start.sh similarity index 96% rename from testutil/localstride/state_export/scripts/start.sh rename to testutil/localstride/state-export/scripts/start.sh index 852db2b86..823cbdd1c 100755 --- a/testutil/localstride/state_export/scripts/start.sh +++ b/testutil/localstride/state-export/scripts/start.sh @@ -15,8 +15,7 @@ CHAIN_ID=${CHAIN_ID:-$DEFAULT_CHAIN_ID} MONIKER=${MONIKER:-$DEFAULT_MONIKER} install_prerequisites () { - apk add -q --no-cache \ - dasel \ + sudo apk add -q --no-cache \ python3 \ py3-pip } @@ -57,7 +56,7 @@ then VALIDATOR_CONSENSUS_ADDRESS=$(strided tendermint show-address --home $STRIDE_HOME) python3 -u testnetify.py \ - -i /stride/state_export.json \ + -i /home/stride/state_export.json \ -o $CONFIG_FOLDER/genesis.json \ -c $CHAIN_ID \ --validator-hex-address $VALIDATOR_HEX_ADDRESS \ diff --git a/testutil/localstride/state_export/scripts/testnetify.py b/testutil/localstride/state-export/scripts/testnetify.py similarity index 100% rename from testutil/localstride/state_export/scripts/testnetify.py rename to testutil/localstride/state-export/scripts/testnetify.py diff --git a/testutil/localstride/state_export/docker-compose.yml b/testutil/localstride/state_export/docker-compose.yml deleted file mode 100644 index 3ab0f6c09..000000000 --- a/testutil/localstride/state_export/docker-compose.yml +++ /dev/null @@ -1,27 +0,0 @@ -version: "3" - -services: - - stride: - image: local:stride - build: - context: ../../../ - dockerfile: Dockerfile.localstride - args: - RUNNER_IMAGE: alpine:3.16 - GO_VERSION: 1.18 - volumes: - - ./scripts/start.sh:/stride/start.sh - - ./scripts/testnetify.py:/stride/testnetify.py - - ./state_export.json:/stride/state_export.json - - $HOME/.stride/:/stride/.stride/ - entrypoint: - - /stride/start.sh - environment: - - MONIKER=val - - CHAIN_ID=localstride - ports: - - 26657:26657 - - 1317:1317 - - 9090:9090 - - 9091:9091