From 4bb9195f0e0bc9e4796594eb77f33b1f5454e58d Mon Sep 17 00:00:00 2001 From: Jenny Pollack Date: Fri, 8 Oct 2021 19:13:50 -0400 Subject: [PATCH 01/13] dapp bash gas snapshotting --- src/dapp/libexec/dapp/dapp---check-snapshot | 11 +++++++++++ src/dapp/libexec/dapp/dapp---snapshot | 4 ++++ 2 files changed, 15 insertions(+) create mode 100755 src/dapp/libexec/dapp/dapp---check-snapshot create mode 100755 src/dapp/libexec/dapp/dapp---snapshot diff --git a/src/dapp/libexec/dapp/dapp---check-snapshot b/src/dapp/libexec/dapp/dapp---check-snapshot new file mode 100755 index 000000000..220ae860c --- /dev/null +++ b/src/dapp/libexec/dapp/dapp---check-snapshot @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +set -e +dapp test | grep 'gas:' > .gas-snapshot-temp +if diff .gas-snapshot .gas-snapshot-temp > /dev/null +then + rm .gas-snapshot-temp + exit 0 +else + diff .gas-snapshot .gas-snapshot-temp +fi +exit 1 \ No newline at end of file diff --git a/src/dapp/libexec/dapp/dapp---snapshot b/src/dapp/libexec/dapp/dapp---snapshot new file mode 100755 index 000000000..7f5fed3ed --- /dev/null +++ b/src/dapp/libexec/dapp/dapp---snapshot @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -e +dapp test | grep 'gas:' > .gas-snapshot +exit 0 \ No newline at end of file From 2fea2d6d7a877eb096ae17eeba2fc37cc74504ce Mon Sep 17 00:00:00 2001 From: Jenny Pollack Date: Mon, 18 Oct 2021 23:22:07 +0200 Subject: [PATCH 02/13] cleanup some bash, remove extraneous output --- src/dapp/libexec/dapp/dapp---check-snapshot | 15 +++++++-------- src/dapp/libexec/dapp/dapp---snapshot | 4 +++- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/dapp/libexec/dapp/dapp---check-snapshot b/src/dapp/libexec/dapp/dapp---check-snapshot index 220ae860c..500fa5a17 100755 --- a/src/dapp/libexec/dapp/dapp---check-snapshot +++ b/src/dapp/libexec/dapp/dapp---check-snapshot @@ -1,11 +1,10 @@ #!/usr/bin/env bash set -e -dapp test | grep 'gas:' > .gas-snapshot-temp -if diff .gas-snapshot .gas-snapshot-temp > /dev/null + +# Uses the output of dapp test to compare with dapp --snapshot +DIFF="$(diff .gas-snapshot <(dapp test | grep 'gas:' | cut -d " " -f 2-4) || true)" +if [ -n "$DIFF" ] then - rm .gas-snapshot-temp - exit 0 -else - diff .gas-snapshot .gas-snapshot-temp -fi -exit 1 \ No newline at end of file + echo "$DIFF" + exit 1 +fi \ No newline at end of file diff --git a/src/dapp/libexec/dapp/dapp---snapshot b/src/dapp/libexec/dapp/dapp---snapshot index 7f5fed3ed..29e9fd6ff 100755 --- a/src/dapp/libexec/dapp/dapp---snapshot +++ b/src/dapp/libexec/dapp/dapp---snapshot @@ -1,4 +1,6 @@ #!/usr/bin/env bash set -e -dapp test | grep 'gas:' > .gas-snapshot + +# Saves the output of dapp test to .gas-snapshot +dapp test | grep 'gas:' | cut -d " " -f 2-4 > .gas-snapshot exit 0 \ No newline at end of file From 529ec3a6a8a5a964ce940d031d53b5bd47bde4d0 Mon Sep 17 00:00:00 2001 From: t11s Date: Fri, 29 Oct 2021 17:06:30 -0700 Subject: [PATCH 03/13] dapp: Use fuzz-runs 0 in snapshot --- src/dapp/libexec/dapp/dapp---snapshot | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/dapp/libexec/dapp/dapp---snapshot b/src/dapp/libexec/dapp/dapp---snapshot index 29e9fd6ff..72e4a8942 100755 --- a/src/dapp/libexec/dapp/dapp---snapshot +++ b/src/dapp/libexec/dapp/dapp---snapshot @@ -2,5 +2,5 @@ set -e # Saves the output of dapp test to .gas-snapshot -dapp test | grep 'gas:' | cut -d " " -f 2-4 > .gas-snapshot -exit 0 \ No newline at end of file +DAPP_TEST_FUZZ_RUNS=0 dapp test | grep 'gas:' | cut -d " " -f 2-4 > .gas-snapshot +exit 0 From 06099dce909927ab059c73607e37ac4239862dff Mon Sep 17 00:00:00 2001 From: t11s Date: Fri, 29 Oct 2021 17:09:58 -0700 Subject: [PATCH 04/13] dapp: Move snapshot to a command --- src/dapp/libexec/dapp/dapp---check-snapshot | 10 ---------- src/dapp/libexec/dapp/dapp-check-snapshot | 13 +++++++++++++ .../libexec/dapp/{dapp---snapshot => dapp-snapshot} | 3 +++ 3 files changed, 16 insertions(+), 10 deletions(-) delete mode 100755 src/dapp/libexec/dapp/dapp---check-snapshot create mode 100755 src/dapp/libexec/dapp/dapp-check-snapshot rename src/dapp/libexec/dapp/{dapp---snapshot => dapp-snapshot} (64%) diff --git a/src/dapp/libexec/dapp/dapp---check-snapshot b/src/dapp/libexec/dapp/dapp---check-snapshot deleted file mode 100755 index 500fa5a17..000000000 --- a/src/dapp/libexec/dapp/dapp---check-snapshot +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env bash -set -e - -# Uses the output of dapp test to compare with dapp --snapshot -DIFF="$(diff .gas-snapshot <(dapp test | grep 'gas:' | cut -d " " -f 2-4) || true)" -if [ -n "$DIFF" ] -then - echo "$DIFF" - exit 1 -fi \ No newline at end of file diff --git a/src/dapp/libexec/dapp/dapp-check-snapshot b/src/dapp/libexec/dapp/dapp-check-snapshot new file mode 100755 index 000000000..1adcbf9b8 --- /dev/null +++ b/src/dapp/libexec/dapp/dapp-check-snapshot @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +### dapp-check-snapshot -- check snapshot is up to date +### Usage: dapp check-snapshot +set -e + +# Uses the output of dapp test to compare with dapp snapshot +DIFF="$(diff .gas-snapshot <(dapp snapshot || true)" + +if [ -n "$DIFF" ] +then + echo "$DIFF" + exit 1 +fi \ No newline at end of file diff --git a/src/dapp/libexec/dapp/dapp---snapshot b/src/dapp/libexec/dapp/dapp-snapshot similarity index 64% rename from src/dapp/libexec/dapp/dapp---snapshot rename to src/dapp/libexec/dapp/dapp-snapshot index 72e4a8942..c6908baa5 100755 --- a/src/dapp/libexec/dapp/dapp---snapshot +++ b/src/dapp/libexec/dapp/dapp-snapshot @@ -1,6 +1,9 @@ #!/usr/bin/env bash +### dapp-snapshot -- creates a snapshot of each test's gas usage +### Usage: dapp snapshot set -e # Saves the output of dapp test to .gas-snapshot DAPP_TEST_FUZZ_RUNS=0 dapp test | grep 'gas:' | cut -d " " -f 2-4 > .gas-snapshot + exit 0 From 3d669eeafe5e2ceb9354924cd46598a547c898f7 Mon Sep 17 00:00:00 2001 From: t11s Date: Fri, 29 Oct 2021 17:10:53 -0700 Subject: [PATCH 05/13] dapp: Snapshot in changelog --- src/dapp/CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/dapp/CHANGELOG.md b/src/dapp/CHANGELOG.md index 028873974..ffe74f84a 100644 --- a/src/dapp/CHANGELOG.md +++ b/src/dapp/CHANGELOG.md @@ -11,6 +11,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - The output from `dapp build` now uses color to differentiate warnings and errors +- `dapp snapshot` and `dapp check-snapshot` commands to snapshot test gas usage. + ### Changed - Dapp remappings ignores non-directories in `DAPP_LIB` From 2b22d6e29c82430ec4acaa338e42bed65f395761 Mon Sep 17 00:00:00 2001 From: t11s Date: Fri, 29 Oct 2021 17:13:42 -0700 Subject: [PATCH 06/13] dapp: Document snapshot --- src/dapp/README.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/dapp/README.md b/src/dapp/README.md index d1aaac860..460690bee 100644 --- a/src/dapp/README.md +++ b/src/dapp/README.md @@ -538,6 +538,20 @@ it. For an example, see [this repo](https://github.com/dapp-org/radicle-contract Updates a project submodule in the `lib` subdirectory. +### `dapp snapshot` + + dapp-snapshot -- creates a snapshot of each test's gas usage + Usage: dapp snapshot + +Saves a snapshot of each concrete test's gas usage in a `.gas-snapshot` file. + +### `dapp check-snapshot` + + dapp-check-snapshot -- check snapshot is up to date + Usage: dapp check-snapshot + +Runs `dapp snapshot` and exits with an error code if its output does not match the current `.gas-snapshot` file. + ### `dapp upgrade` dapp-upgrade -- pull & commit all upstream lib changes @@ -551,7 +565,7 @@ Spins up a geth testnet. dapp-verify-contract -- verify contract source on etherscan Usage: dapp verify-contract :
[constructorArgs] - + Example: `dapp verify-contract src/auth/authorities/RolesAuthority.sol:RolesAuthority 0x9ed0e..` Requires `ETHERSCAN_API_KEY` to be set. From 777ebad7a0838e28f3c3aa75b19f6cb2fc0ab493 Mon Sep 17 00:00:00 2001 From: t11s Date: Fri, 29 Oct 2021 17:14:08 -0700 Subject: [PATCH 07/13] dapp: Don't always exit 0 in snapshot --- src/dapp/libexec/dapp/dapp-snapshot | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/dapp/libexec/dapp/dapp-snapshot b/src/dapp/libexec/dapp/dapp-snapshot index c6908baa5..8a6e3dd7b 100755 --- a/src/dapp/libexec/dapp/dapp-snapshot +++ b/src/dapp/libexec/dapp/dapp-snapshot @@ -5,5 +5,3 @@ set -e # Saves the output of dapp test to .gas-snapshot DAPP_TEST_FUZZ_RUNS=0 dapp test | grep 'gas:' | cut -d " " -f 2-4 > .gas-snapshot - -exit 0 From 6a158ce4086eeb7855324c0ae951a25b508b7d8b Mon Sep 17 00:00:00 2001 From: t11s Date: Fri, 29 Oct 2021 17:19:39 -0700 Subject: [PATCH 08/13] dapp: Fix DIFF --- src/dapp/libexec/dapp/dapp-check-snapshot | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/dapp/libexec/dapp/dapp-check-snapshot b/src/dapp/libexec/dapp/dapp-check-snapshot index 1adcbf9b8..9b98eff92 100755 --- a/src/dapp/libexec/dapp/dapp-check-snapshot +++ b/src/dapp/libexec/dapp/dapp-check-snapshot @@ -4,10 +4,10 @@ set -e # Uses the output of dapp test to compare with dapp snapshot -DIFF="$(diff .gas-snapshot <(dapp snapshot || true)" +DIFF="$(diff .gas-snapshot <(dapp snapshot || true))" if [ -n "$DIFF" ] then echo "$DIFF" exit 1 -fi \ No newline at end of file +fi From b68e11a1123f46b6933d9ed92750d41e42e17106 Mon Sep 17 00:00:00 2001 From: t11s Date: Fri, 29 Oct 2021 17:30:10 -0700 Subject: [PATCH 09/13] dapp: Cleanup DIFF --- src/dapp/libexec/dapp/dapp-check-snapshot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dapp/libexec/dapp/dapp-check-snapshot b/src/dapp/libexec/dapp/dapp-check-snapshot index 9b98eff92..c18803e14 100755 --- a/src/dapp/libexec/dapp/dapp-check-snapshot +++ b/src/dapp/libexec/dapp/dapp-check-snapshot @@ -4,7 +4,7 @@ set -e # Uses the output of dapp test to compare with dapp snapshot -DIFF="$(diff .gas-snapshot <(dapp snapshot || true))" +DIFF="$(diff .gas-snapshot <(dapp snapshot))" if [ -n "$DIFF" ] then From d47ac92083b8239dd65b291c65cd70815d4458fe Mon Sep 17 00:00:00 2001 From: t11s Date: Mon, 1 Nov 2021 05:09:03 -0700 Subject: [PATCH 10/13] dapp: Flag instead of env var --- src/dapp/libexec/dapp/dapp-snapshot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dapp/libexec/dapp/dapp-snapshot b/src/dapp/libexec/dapp/dapp-snapshot index 8a6e3dd7b..b857e386d 100755 --- a/src/dapp/libexec/dapp/dapp-snapshot +++ b/src/dapp/libexec/dapp/dapp-snapshot @@ -4,4 +4,4 @@ set -e # Saves the output of dapp test to .gas-snapshot -DAPP_TEST_FUZZ_RUNS=0 dapp test | grep 'gas:' | cut -d " " -f 2-4 > .gas-snapshot +dapp test --fuzz-runs 0 | grep 'gas:' | cut -d " " -f 2-4 > .gas-snapshot From a84cb419543654017f3d65af2153565c7782543a Mon Sep 17 00:00:00 2001 From: t11s Date: Thu, 11 Nov 2021 09:50:42 -0800 Subject: [PATCH 11/13] dapp: Fix check snapshot --- src/dapp/libexec/dapp/dapp-check-snapshot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dapp/libexec/dapp/dapp-check-snapshot b/src/dapp/libexec/dapp/dapp-check-snapshot index c18803e14..697079a92 100755 --- a/src/dapp/libexec/dapp/dapp-check-snapshot +++ b/src/dapp/libexec/dapp/dapp-check-snapshot @@ -4,7 +4,7 @@ set -e # Uses the output of dapp test to compare with dapp snapshot -DIFF="$(diff .gas-snapshot <(dapp snapshot))" +DIFF="$(diff .gas-snapshot <(dapp test --fuzz-runs 0 | grep 'gas:' | cut -d " " -f 2-4))" if [ -n "$DIFF" ] then From b1614fbf1c1b91b65d578d15cf1fc39e732f5f90 Mon Sep 17 00:00:00 2001 From: t11s Date: Thu, 11 Nov 2021 09:57:18 -0800 Subject: [PATCH 12/13] dapp: Add snapshot/check-snapshot tests --- src/dapp-tests/integration/tests.sh | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/dapp-tests/integration/tests.sh b/src/dapp-tests/integration/tests.sh index 46041c265..799b47e04 100755 --- a/src/dapp-tests/integration/tests.sh +++ b/src/dapp-tests/integration/tests.sh @@ -225,6 +225,34 @@ test_custom_solc_json() { assert "[[ -f out/dapp.sol.json ]]" } +test_gas_snapshots() { + tmp=$(mktemp -d) + + # copy source file + mkdir -p "$tmp/src" + cp "$CONTRACTS/factor.sol" "$tmp/src" + + # init dapp project + cd "$tmp" || exit + export GIT_CONFIG_NOSYSTEM=1 + export GIT_AUTHOR_NAME=dapp + export GIT_AUTHOR_EMAIL=dapp@hub.lol + export GIT_COMMITTER_NAME=$GIT_AUTHOR_NAME + export GIT_COMMITTER_EMAIL=$GIT_AUTHOR_EMAIL + dapp init + + # test with snapshots + dapp snapshot + assert "[[ -f .gas-snapshot ]]" + + # test check snapshots + dapp check-snapshot || fail + + # check that check snapshots fails if we change the snapshot + echo this_will_change_the_snapshot > .gas-snapshot + dapp check-snapshot && fail +} + test_nonce_1() { local account account=$(fresh_account) From 507f42ac0f5f7e51dd3e6f0232d1b901d8d7415c Mon Sep 17 00:00:00 2001 From: t11s Date: Thu, 11 Nov 2021 10:01:21 -0800 Subject: [PATCH 13/13] dapp: Test success message --- src/dapp-tests/integration/tests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dapp-tests/integration/tests.sh b/src/dapp-tests/integration/tests.sh index 799b47e04..8ebe92349 100755 --- a/src/dapp-tests/integration/tests.sh +++ b/src/dapp-tests/integration/tests.sh @@ -250,7 +250,7 @@ test_gas_snapshots() { # check that check snapshots fails if we change the snapshot echo this_will_change_the_snapshot > .gas-snapshot - dapp check-snapshot && fail + dapp check-snapshot && fail || echo "dapp success: snapshot diff detected" } test_nonce_1() {