diff --git a/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-11/.gitignore b/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-11/.gitignore new file mode 100644 index 00000000000..781644c0395 --- /dev/null +++ b/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-11/.gitignore @@ -0,0 +1,2 @@ +upgrade-walletFactory-permit.json +upgrade-walletFactory.js diff --git a/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-11/actions.sh b/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-11/actions.sh old mode 100644 new mode 100755 index 9d5987b8ef6..cad2ee8fb01 --- a/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-11/actions.sh +++ b/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-11/actions.sh @@ -1,13 +1,14 @@ #!/bin/bash -. ./upgrade-test-scripts/env_setup.sh +# Dockerfile in upgrade-test sets: +# WORKDIR /usr/src/agoric-sdk/ +# Overriding it during development has occasionally been useful. +SDK=${SDK:-/usr/src/agoric-sdk} +. $SDK/upgrade-test-scripts/env_setup.sh # Enable debugging set -x -# CWD is agoric-sdk -upgrade11=./upgrade-test-scripts/agoric-upgrade-11 - # hacky restore of pruned artifacts killAgd EXPORT_DIR=$(mktemp -t -d swing-store-export-upgrade-11-XXX) @@ -45,3 +46,22 @@ agops perf satisfaction --from "$GOV1ADDR" --executeOffer "$OFFER" --keyring-bac test_val $(agoric follow -l -F :published.vaultFactory.managers.manager0.vaults.vault3 -o jsonlines | jq -r '.vaultState') "closed" "vault3 is closed" test_val $(agoric follow -l -F :published.vaultFactory.managers.manager0.vaults.vault3 -o jsonlines | jq -r '.locked.value') "0" "vault3 contains no collateral" test_val $(agoric follow -l -F :published.vaultFactory.managers.manager0.vaults.vault3 -o jsonlines | jq -r '.debtSnapshot.debt.value') "0" "vault3 has no debt" + +upgrade11=$SDK/upgrade-test-scripts/agoric-upgrade-11 +cd $upgrade11 + +## build proposal and install bundles +./tools/mint-ist.sh +./wallet-all-ertp/wf-install-bundles.sh + +## upgrade wallet factory +./wallet-all-ertp/wf-propose.sh + +## start game1 +./wallet-all-ertp/wf-game-propose.sh + +# Pay 0.25IST join the game and get some places +node ./wallet-all-ertp/gen-game-offer.mjs Shire Mordor >/tmp/,join.json +agops perf satisfaction --from $GOV1ADDR --executeOffer /tmp/,join.json --keyring-backend=test + +cd $SDK diff --git a/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-11/pre_test.sh b/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-11/pre_test.sh index 1db5c34bbdc..ac0f8f4ecc6 100755 --- a/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-11/pre_test.sh +++ b/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-11/pre_test.sh @@ -8,6 +8,8 @@ waitForBlock 5 # CWD is agoric-sdk upgrade11=./upgrade-test-scripts/agoric-upgrade-11 +test_val "$(agd query vstorage children published.boardAux -o json | jq .children)" "[]" "no boardAux children yet" + # validate agoric-upgrade-10 metrics after update test_val $(agd q vstorage children published.vaultFactory.managers.manager0.vaults -o json | jq -r '.children | length') 3 "we have three vaults" diff --git a/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-11/test.sh b/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-11/test.sh index 86dcbf2d057..53d04c4beed 100755 --- a/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-11/test.sh +++ b/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-11/test.sh @@ -23,3 +23,45 @@ mv $TMP_GENESIS_DIR/priv_validator_state.json $HOME/.agoric/data mv $TMP_GENESIS_DIR/* $HOME/.agoric/config/ rm -rf $EXPORT_DIR startAgd + +testMinChildren() { + path=$1 + min=$2 + line="$(agd query vstorage children $path -o jsonlines)" + ok=$(echo $line | jq ".children | length | . > $min") + test_val "$ok" "true" "$path: more than $min children" +} + +# Check brand aux data for more than just vbank assets +testMinChildren published.boardAux 3 + +testDisplayInfo() { + name=$1 + expected=$2 + + line="$(agoric follow -lF :published.agoricNames.brand -o text)" + # find brand by name, then corresponding slot + id=$(echo $line | jq --arg name "$name" -r '.slots as $slots | .body | gsub("^#";"") | fromjson | .[] | select(.[0] == $name) | .[1] | capture("^[$](?0|[1-9][0-9]*)") | .slot | $slots[. | tonumber]') + echo $name Id: $id + + line="$(agoric follow -lF :published.boardAux.$id -o jsonlines)" + displayInfo="$(echo $line | jq -c .displayInfo)" + test_val "$displayInfo" "$expected" "$name displayInfo from boardAux" +} + +testDisplayInfo IST '{"assetKind":"nat","decimalPlaces":6}' + +testPurseValuePayload() { + addr=$1 + wkAsset=$2 + expected=$3 + + line="$(agoric follow -lF :published.wallet.$addr.current -o jsonlines)" + # HACK: selecting brand by allegedName + payload=$(echo $line | jq --arg name "$wkAsset" -c '.purses[] | select(.brand | contains($name)) | .balance.value.payload') + test_val "$payload" "$expected" "$wkAsset purse for $addr" +} + +# Smart wallet handles game Place assets? +testDisplayInfo Place '{"assetKind":"copyBag"}' +testPurseValuePayload $GOV1ADDR Place '[["Shire","1"],["Mordor","1"]]' diff --git a/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-11/tools/mint-ist.sh b/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-11/tools/mint-ist.sh new file mode 100755 index 00000000000..7c43a5b46d5 --- /dev/null +++ b/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-11/tools/mint-ist.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +if [ -z "$GOV1ADDR" ]; then + echo run env_setup.sh to set GOV1ADDR + exit 1 +fi + +micro=000000 + +# send some collateral to gov1 +agd tx bank send validator $GOV1ADDR 20123$micro${ATOM_DENOM} \ + --keyring-backend=test --chain-id=agoriclocal --yes -bblock -o json + +export PATH=/usr/src/agoric-sdk/packages/agoric-cli/bin:$PATH +agops vaults open --giveCollateral 5000 --wantMinted 20000 > /tmp/offer.json +agops perf satisfaction --executeOffer /tmp/offer.json --from gov1 --keyring-backend=test diff --git a/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-11/tools/parseProposals.mjs b/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-11/tools/parseProposals.mjs new file mode 100755 index 00000000000..daab1be3636 --- /dev/null +++ b/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-11/tools/parseProposals.mjs @@ -0,0 +1,41 @@ +#!/usr/bin/env node + +import fs from 'fs'; + +const Fail = (template, ...args) => { + throw Error(String.raw(template, ...args.map(val => String(val)))); +}; + +/** + * Parse output of `agoric run proposal-builder.js` + * + * @param {string} txt + * + * adapted from packages/boot/test/bootstrapTests/supports.js + */ +const parseProposalParts = txt => { + const evals = [ + ...txt.matchAll(/swingset-core-eval (?\S+) (?