End-to-end testing environment for fully simulated chains, powered by Starship.
The current commands will read from config.yaml
to build a multi-chain testing environment. Currently, the image includes agoric
, osmosis
, and cosmoshub
chains and a hermes relayer between each.
The agoric
software revision includes the vats necessary for building and testing orchestration applications:
- vat-network
- vat-ibc
- vat-localchain
- vat-transfer
- vat-orchestration
Install the relevant dependencies:
yarn install
(Note that the '@agoric/*' deps will come from the parent directory due to yarn link --relative .. --all
)
Ensure you have Kubernetes available. See https://docs.cosmology.zone/starship/get-started/step-2.
The following will install kubectl
, kind
, helm
, and yq
as needed:
make clean setup
You can start everything with a single command:
make start
This command will:
- Install the Helm chart and start the Starship service
- Wait for all pods to be ready
- Set up port forwarding
- Fund the provision pool
- Override the chain registry
The process may take 7-12 minutes to complete. You'll see status updates as the pods come online.
Alternatively, you can run the steps individually:
# install helm chart and start starship service
make install
# wait for all pods to spin up
make wait-for-pods
# expose ports on your local machine (useful for testing dapps)
make port-forward
# set up Agoric testing environment
make fund-provision-pool override-chain-registry register-bank-assets
If you get an error like "connection refused", you need to wait longer, until all the pods are Running.
# stop the containers and port-forwarding
make stop
# delete the clusters
make clean
You can use the following commands to view logs:
# agoric slogfile
make tail-slog
# agoric validator logs
kubectl logs agoriclocal-genesis-0 --container=validator --follow
# relayer logs
kubectl logs hermes-agoric-gaia-0 --container=relayer --follow
kubectl logs hermes-osmosis-gaia-0 --container=relayer --follow
For the steps below, you must import a key to agd
or create a new one.
# create a `user1` key from a random seed
kubectl exec -i agoriclocal-genesis-0 -c validator -- agd keys add user1
# get the newly created address
ADDR=$(kubectl exec -i agoriclocal-genesis-0 -c validator -- agd keys show user1 -a)
# fund the wallet with some tokens
make fund-wallet COIN=20000000ubld ADDR=$ADDR
# provision the smart wallet
make provision-smart-wallet ADDR=$ADDR
These only work if you've done make port-forward
.