Skip to content

Commit 857c6b7

Browse files
author
Daniel Thurau
committed
Merge branch 'thurau/nns-tools-support-swap-upgrade-testing' into 'master'
Allow for upgrading Swap type canisters when testing sns upgrade permutations permutations See merge request dfinity-lab/public/ic!12597
2 parents a21afd6 + 232a548 commit 857c6b7

8 files changed

+68
-21
lines changed

testnet/tools/nns-tools/lib/canister_wasms.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/bin/bash
22

3-
get_sns_canister_wasm_gz_for_type() {
3+
download_sns_canister_wasm_gz_for_type() {
44
local CANISTER_TYPE=$1
55
local VERSION=$2
66

testnet/tools/nns-tools/lib/functions.sh

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ propose_upgrade_canister_to_version_pem() {
2121

2222
WASM_FILE=$(get_nns_canister_wasm_gz_for_type "$CANISTER_NAME" "$VERSION")
2323

24-
propose_upgrade_canister_wasm_file_pem "$NNS_URL" "$NEURON_ID" "$PEM" "$CANISTER_NAME" "$WASM_FILE" "$ENCODED_ARGS_FILE"
24+
propose_upgrade_nns_canister_wasm_file_pem "$NNS_URL" "$NEURON_ID" "$PEM" "$CANISTER_NAME" "$WASM_FILE" "$ENCODED_ARGS_FILE"
2525
}
2626

2727
build_canister_and_propose_upgrade_pem() {
@@ -36,7 +36,7 @@ build_canister_and_propose_upgrade_pem() {
3636

3737
WASM_FILE="$(repo_root)/$(canister_bazel_artifact_path "${CANISTER_NAME}")"
3838

39-
propose_upgrade_canister_wasm_file_pem "$NNS_URL" "$NEURON_ID" "$PEM" "$CANISTER_NAME" "$WASM_FILE" "$ENCODED_ARGS_FILE"
39+
propose_upgrade_nns_canister_wasm_file_pem "$NNS_URL" "$NEURON_ID" "$PEM" "$CANISTER_NAME" "$WASM_FILE" "$ENCODED_ARGS_FILE"
4040
}
4141

4242
canister_bazel_label() {
@@ -74,7 +74,7 @@ canister_bazel_artifact_path() {
7474
bazel cquery --output=files $(canister_bazel_label "$CANISTER_NAME") 2>/dev/null
7575
}
7676

77-
propose_upgrade_canister_wasm_file_pem() {
77+
propose_upgrade_nns_canister_wasm_file_pem() {
7878
ensure_variable_set IC_ADMIN
7979

8080
local NNS_URL=$1
@@ -86,6 +86,19 @@ propose_upgrade_canister_wasm_file_pem() {
8686

8787
CANISTER_ID=$(nns_canister_id "$CANISTER_NAME")
8888

89+
propose_upgrade_canister_wasm_file_pem "$NNS_URL" "$NEURON_ID" "$PEM" "$CANISTER_ID" "$WASM_FILE" "$ENCODED_ARGS_FILE"
90+
}
91+
92+
propose_upgrade_canister_wasm_file_pem() {
93+
ensure_variable_set IC_ADMIN
94+
95+
local NNS_URL=$1
96+
local NEURON_ID=$2
97+
local PEM=$3
98+
local CANISTER_ID=$4
99+
local WASM_FILE=$5
100+
local ENCODED_ARGS_FILE=${6:-}
101+
89102
# See note at variable declaration
90103
PROPOSAL="$MY_DOWNLOAD_DIR"/testnet_upgrade_proposal.txt
91104
echo "Testnet $CANISTER_NAME upgrade" >$PROPOSAL

testnet/tools/nns-tools/lib/proposals.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ generate_sale_canister_upgrade_proposal_text() {
88
local CANISTER_ID=$3
99
local OUTPUT_FILE=${4:-}
1010

11-
WASM_GZ=$(get_sns_canister_wasm_gz_for_type "swap" "$NEXT_COMMIT")
11+
WASM_GZ=$(download_sns_canister_wasm_gz_for_type "swap" "$NEXT_COMMIT")
1212
WASM_SHA=$(sha_256 "$WASM_GZ")
1313
CAPITALIZED_CANISTER_NAME="Swap"
1414
LAST_WASM_HASH=$(canister_hash ic $CANISTER_ID)
@@ -135,7 +135,7 @@ generate_sns_bless_wasm_proposal_text() {
135135
local CANISTER_TYPE=$3
136136
local OUTPUT_FILE=${4:-}
137137

138-
WASM_GZ=$(get_sns_canister_wasm_gz_for_type "$CANISTER_TYPE" "$NEXT_COMMIT")
138+
WASM_GZ=$(download_sns_canister_wasm_gz_for_type "$CANISTER_TYPE" "$NEXT_COMMIT")
139139
WASM_SHA=$(sha_256 "$WASM_GZ")
140140
CAPITALIZED_CANISTER_TYPE="$(tr '[:lower:]' '[:upper:]' <<<${CANISTER_TYPE:0:1})${CANISTER_TYPE:1}"
141141

@@ -421,7 +421,7 @@ validate_sns_version_wasm_sha() {
421421
local EXPECTED_SHA=$3
422422

423423
_base_validate_version_wasm_sha \
424-
$(get_sns_canister_wasm_gz_for_type "$CANISTER_TYPE" "$VERSION") \
424+
$(download_sns_canister_wasm_gz_for_type "$CANISTER_TYPE" "$VERSION") \
425425
"$EXPECTED_SHA"
426426
}
427427

testnet/tools/nns-tools/lib/sns_upgrades.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ upload_canister_git_version_to_sns_wasm() {
6969
local CANISTER_TYPE=$4
7070
local VERSION=$5
7171

72-
WASM_GZ=$(get_sns_canister_wasm_gz_for_type "$CANISTER_TYPE" "$VERSION")
72+
WASM_GZ=$(download_sns_canister_wasm_gz_for_type "$CANISTER_TYPE" "$VERSION")
7373

7474
upload_wasm_to_sns_wasm "$NNS_URL" "$NEURON_ID" \
7575
"$PEM" "$CANISTER_TYPE" "$WASM_GZ"
@@ -167,7 +167,7 @@ wait_for_sns_canister_has_version() {
167167
local SNS_CANISTER_TYPE=$3
168168
local VERSION=$4
169169

170-
WASM=$(get_sns_canister_wasm_gz_for_type $SNS_CANISTER_TYPE $VERSION)
170+
WASM=$(download_sns_canister_wasm_gz_for_type $SNS_CANISTER_TYPE $VERSION)
171171
wait_for_canister_has_file_contents "$NETWORK" "$CANISTER_ID" "$WASM"
172172
}
173173

testnet/tools/nns-tools/submit-mainnet-publish-sns-wasm-proposal.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ submit_nns_publish_sns_wasm_proposal_mainnet() {
4646
validate_sns_version_wasm_sha "$CANISTER_TYPE" "$VERSION" "$PROPOSAL_SHA"
4747
validate_no_todos "$PROPOSAL_FILE"
4848

49-
WASM_GZ=$(get_sns_canister_wasm_gz_for_type "$CANISTER_TYPE" "$VERSION")
49+
WASM_GZ=$(download_sns_canister_wasm_gz_for_type "$CANISTER_TYPE" "$VERSION")
5050
WASM_SHA=$(sha_256 $WASM_GZ)
5151

5252
echo

testnet/tools/nns-tools/submit-mainnet-sale-canister-upgrade-proposal.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ submit_sale_upgrade_proposal_mainnet() {
3737
validate_sns_version_wasm_sha "swap" "$VERSION" "$PROPOSAL_SHA"
3838
validate_no_todos "$PROPOSAL_FILE"
3939

40-
WASM_GZ=$(get_sns_canister_wasm_gz_for_type swap "$VERSION")
40+
WASM_GZ=$(download_sns_canister_wasm_gz_for_type swap "$VERSION")
4141
WASM_SHA=$(sha_256 "$WASM_GZ")
4242

4343
echo

testnet/tools/nns-tools/test-canister-upgrade.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ if [ "$CANISTER_NAME" == "cycles-minting" ]; then
6161
# Get ungzipped version to make it easy to detect upgrade status
6262
CURRENT_VERSION_UNZIPPED=$(get_nns_canister_wasm_gz_for_type "$CANISTER_NAME" "$CURRENT_VERSION")
6363

64-
SKIP_STOPPING=yes propose_upgrade_canister_wasm_file_pem "$NNS_URL" \
64+
SKIP_STOPPING=yes propose_upgrade_nns_canister_wasm_file_pem "$NNS_URL" \
6565
"$NEURON_ID" "$PEM" "$CANISTER_NAME" \
6666
"$CURRENT_VERSION_UNZIPPED" "$(encode_candid_args_in_file \
6767
"(record {
@@ -97,7 +97,7 @@ if [ "$NEW_HASH" == "$ORIGINAL_HASH" ]; then
9797
fi
9898

9999
# We upgrade to same version but with a different hash so that we can verify that second upgrade worked.
100-
propose_upgrade_canister_wasm_file_pem "$NNS_URL" "$NEURON_ID" "$PEM" "$CANISTER_NAME" "$UNZIPPED" "$ENCODED_ARGS_FILE"
100+
propose_upgrade_nns_canister_wasm_file_pem "$NNS_URL" "$NEURON_ID" "$PEM" "$CANISTER_NAME" "$UNZIPPED" "$ENCODED_ARGS_FILE"
101101

102102
if wait_for_nns_canister_has_file_contents "$NNS_URL" "$CANISTER_NAME" "$UNZIPPED"; then
103103
echo "Second upgrade successful..."

testnet/tools/nns-tools/test-sns-canister-upgrades.sh

Lines changed: 42 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ CANISTERS="${@}"
3232

3333
ensure_variable_set IDL2JSON
3434
ensure_variable_set SNS_QUILL
35+
ensure_variable_set IC_ADMIN
3536

3637
ensure_variable_set NNS_URL
3738
ensure_variable_set SUBNET_URL
@@ -53,6 +54,39 @@ sns_canister_id_for_sns_canister_type() {
5354
cat $PWD/sns_canister_ids.json | jq -r ".${SNS_CANISTER_TYPE}_canister_id"
5455
}
5556

57+
upgrade_swap() {
58+
NNS_URL=$1
59+
NEURON_ID=$2
60+
PEM=$3
61+
CANISTER_ID=$4
62+
VERSION=$5
63+
64+
WASM_FILE=$(download_sns_canister_wasm_gz_for_type swap "$VERSION")
65+
66+
propose_upgrade_canister_wasm_file_pem "$NNS_URL" "$NEURON_ID" "$PEM" "$CANISTER_ID" "$WASM_FILE"
67+
}
68+
69+
upgrade_sns() {
70+
NNS_URL=$1
71+
SUBNET_URL=$2
72+
NEURON_ID=$3
73+
PEM=$4
74+
CANISTER_NAME=$5
75+
VERSION=$6
76+
LOG_FILE=$7
77+
SWAP_CANISTER_ID=$8
78+
GOV_CANISTER_ID=$9
79+
80+
# SNS upgrade proposal
81+
if [[ $CANISTER_NAME = "swap" ]]; then
82+
echo "Submitting upgrade proposal to NNS Governance for Swap" | tee -a "$LOG_FILE"
83+
upgrade_swap "$NNS_URL" "$NEURON_ID" "$PEM" "$SWAP_CANISTER_ID" "$VERSION"
84+
else
85+
echo "Submitting upgrade proposal to $GOV_CANISTER_ID" | tee -a "$LOG_FILE"
86+
sns_upgrade_to_next_version "$SUBNET_URL" "$PEM" "$GOV_CANISTER_ID" 0
87+
fi
88+
}
89+
5690
echo "$PERMUTATIONS" \
5791
| while read -r ORDERING; do
5892

@@ -67,7 +101,8 @@ echo "$PERMUTATIONS" \
67101
echo "Deployed SNS" | tee -a $LOG_FILE
68102
cat $PWD/sns_canister_ids.json | tee -a $LOG_FILE
69103

70-
GOV_CANISTER=$(sns_canister_id_for_sns_canister_type governance)
104+
GOV_CANISTER_ID=$(sns_canister_id_for_sns_canister_type governance)
105+
SWAP_CANISTER_ID=$(sns_canister_id_for_sns_canister_type swap)
71106

72107
# Assert that all canisters have the mainnet hashes so our test is legitimate
73108
canister_has_hash_installed $SUBNET_URL \
@@ -89,9 +124,8 @@ echo "$PERMUTATIONS" \
89124
upload_canister_git_version_to_sns_wasm "$NNS_URL" "$NEURON_ID" \
90125
"$PEM" "$CANISTER" "$VERSION"
91126

92-
# SNS upgrade proposal
93-
echo "Submitting upgrade proposal to $GOV_CANISTER" | tee -a $LOG_FILE
94-
sns_upgrade_to_next_version "$SUBNET_URL" "$PEM" "$GOV_CANISTER" 0
127+
upgrade_sns "$NNS_URL" "$SUBNET_URL" "$NEURON_ID" "$PEM" \
128+
"$CANISTER" "$VERSION" "$LOG_FILE" "$SWAP_CANISTER_ID" "$GOV_CANISTER_ID"
95129

96130
echo "Waiting for upgrade..." | tee -a $LOG_FILE
97131
if ! wait_for_sns_canister_has_version "$SUBNET_URL" \
@@ -100,7 +134,7 @@ echo "$PERMUTATIONS" \
100134
break
101135
fi
102136

103-
WASM_GZ_FILE=$(get_sns_canister_wasm_gz_for_type "$CANISTER" "$VERSION")
137+
WASM_GZ_FILE=$(download_sns_canister_wasm_gz_for_type "$CANISTER" "$VERSION")
104138

105139
ORIGINAL_HASH=$(sha_256 $WASM_GZ_FILE)
106140
UNZIPPED=$(ungzip $WASM_GZ_FILE)
@@ -111,9 +145,9 @@ echo "$PERMUTATIONS" \
111145
fi
112146
upload_wasm_to_sns_wasm "$NNS_URL" "$NEURON_ID" \
113147
"$PEM" "$CANISTER" "$UNZIPPED"
114-
# SNS upgrade proposal
115-
echo "Submitting unzipped proposal to $GOV_CANISTER" | tee -a $LOG_FILE
116-
sns_upgrade_to_next_version "$SUBNET_URL" "$PEM" "$GOV_CANISTER" 0
148+
149+
upgrade_sns "$NNS_URL" "$SUBNET_URL" "$NEURON_ID" "$PEM" \
150+
"$CANISTER" "$VERSION" "$LOG_FILE" "$SWAP_CANISTER_ID" "$GOV_CANISTER_ID"
117151

118152
if ! wait_for_canister_has_file_contents "$SUBNET_URL" \
119153
$(sns_canister_id_for_sns_canister_type $CANISTER) "$UNZIPPED"; then

0 commit comments

Comments
 (0)