From 8d36601888a5fb53769293e7501c5ee919576aa0 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Raynaud Date: Wed, 24 Jan 2024 17:21:51 +0100 Subject: [PATCH 1/4] fix: avoid cardano cli transactions fail for conway era --- .../mithril-devnet/mkfiles/mkfiles-mithril.sh | 34 ++++++++++++++----- .../mithril-devnet/mkfiles/mkfiles-pools.sh | 21 +++++++++--- 2 files changed, 43 insertions(+), 12 deletions(-) diff --git a/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-mithril.sh b/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-mithril.sh index c1b70b72339..c05ca7a8389 100644 --- a/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-mithril.sh +++ b/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-mithril.sh @@ -23,14 +23,32 @@ set -e EOF cat >> era-mithril.sh <>>> Current Cardano Era: \${CURRENT_CARDANO_ERA}" + + # Fix: era related command is not (well) supported in Cardano node version '8.1.2' + if [ "${CARDANO_NODE_VERSION}" = "8.1.2" ]; then + CURRENT_CARDANO_ERA="" + fi + + + # Get current Cardano block + CURRENT_CARDANO_BLOCK=\$(CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock ./cardano-cli query tip \\ + --testnet-magic ${NETWORK_MAGIC} \\ + | jq -r '.block') + echo ">>>> Current Cardano Block: \${CURRENT_CARDANO_BLOCK}" + # Send funds to Mithril era address ## Get the UTxO of utxo${N} TX_IN=\$(CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock ./cardano-cli query utxo \\ - --testnet-magic ${NETWORK_MAGIC} --address \$(cat addresses/utxo${N}.addr) --out-file /dev/stdout \\ + --testnet-magic ${NETWORK_MAGIC} --address \$(cat addresses/utxo${N}.addr) --out-file /dev/stdout \\ | jq -r 'to_entries | [last] | .[0].key') ## Build the transaction - CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock ./cardano-cli transaction build \\ + CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock ./cardano-cli \${CURRENT_CARDANO_ERA} transaction build \\ --tx-in \${TX_IN} \\ --tx-out \$(cat addresses/${ADDR}.addr)+${AMOUNT_TRANSFERRED} \\ --change-address \$(cat addresses/utxo${N}.addr) \\ @@ -39,14 +57,14 @@ cat >> era-mithril.sh <> era-mithril.sh <> era-mithril.sh <> delegate.sh <>>> Current Cardano Era: \${CURRENT_CARDANO_ERA}" + +# Fix: era related command is not (well) supported in Cardano node version '8.1.2' +if [ "${CARDANO_NODE_VERSION}" = "8.1.2" ]; then + CURRENT_CARDANO_ERA="" +fi + +# Get the current epoch CURRENT_EPOCH=\$(CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock ./cardano-cli query tip \\ --cardano-mode \\ --testnet-magic ${NETWORK_MAGIC} | jq .epoch) echo ">>>> Current Epoch: \${CURRENT_EPOCH}" + EOF # Prepare transactions for delegating to stake pools @@ -52,7 +65,7 @@ for N in ${POOL_NODES_N}; do # Build the transaction if [ "\$DELEGATION_ROUND" -eq 1 ]; then # First delegation round, we need to include registration certificate and delegation certificate - CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock ./cardano-cli transaction build \\ + CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock ./cardano-cli \${CURRENT_CARDANO_ERA} transaction build \\ --tx-in \${TX_IN} \\ --tx-out \$(cat addresses/user${N}.addr)+\${AMOUNT_STAKED} \\ --change-address \$(cat addresses/utxo${N}.addr) \\ @@ -64,7 +77,7 @@ for N in ${POOL_NODES_N}; do --witness-override 2 else # All other delegation rounds, we need to include only delegation certificate - CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock ./cardano-cli transaction build \\ + CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock ./cardano-cli \${CURRENT_CARDANO_ERA} transaction build \\ --tx-in \${TX_IN} \\ --tx-out \$(cat addresses/user${N}.addr)+\${AMOUNT_STAKED} \\ --change-address \$(cat addresses/utxo${N}.addr) \\ @@ -76,7 +89,7 @@ for N in ${POOL_NODES_N}; do fi # Sign the transaction - CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock ./cardano-cli transaction sign \\ + CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock ./cardano-cli \${CURRENT_CARDANO_ERA} transaction sign \\ --signing-key-file addresses/utxo${N}.skey \\ --signing-key-file addresses/user${N}-stake.skey \\ --testnet-magic ${NETWORK_MAGIC} \\ @@ -84,7 +97,7 @@ for N in ${POOL_NODES_N}; do --out-file node-pool${N}/tx/tx${N}-\${DELEGATION_ROUND}.tx # Submit the transaction - CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock ./cardano-cli transaction submit \\ + CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock ./cardano-cli \${CURRENT_CARDANO_ERA} transaction submit \\ --tx-file node-pool${N}/tx/tx${N}-\${DELEGATION_ROUND}.tx \\ --testnet-magic ${NETWORK_MAGIC} From de272450fa38519f8cd7e1b3f67c796c2ee8848f Mon Sep 17 00:00:00 2001 From: Jean-Philippe Raynaud Date: Wed, 24 Jan 2024 17:51:20 +0100 Subject: [PATCH 2/4] chore: enhance wait for settled transactions in devnet era markers --- .../mithril-devnet/mkfiles/mkfiles-mithril.sh | 41 ++++++++++++++++--- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-mithril.sh b/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-mithril.sh index c05ca7a8389..9c44318bac6 100644 --- a/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-mithril.sh +++ b/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-mithril.sh @@ -20,6 +20,37 @@ cat >> era-mithril.sh <>>> Cardano target block not reached yet... [current: \$CARDANO_BLOCK, target: \$CARDANO_BLOCK_TARGET] [attempt \$CARDANO_NEXT_BLOCK_WAIT_ROUNDS]" + sleep \$CARDANO_NEXT_BLOCK_WAIT_ROUND_DELAY + else + echo ">>>> Cardano target block is reached [current: \$CARDANO_BLOCK, target: \$CARDANO_BLOCK_TARGET] [attempt \$CARDANO_NEXT_BLOCK_WAIT_ROUNDS]" + sleep \$CARDANO_NEXT_BLOCK_WAIT_ROUND_DELAY + break + fi + CARDANO_NEXT_BLOCK_WAIT_ROUNDS=\$(( \$CARDANO_NEXT_BLOCK_WAIT_ROUNDS + 1 )) + if [ "\$CARDANO_NEXT_BLOCK_WAIT_ROUNDS" -gt "\$CARDANO_NEXT_BLOCK_WAIT_ROUNDS_MAX" ] ; then + echo ">>>> Timeout: Cardano target block was not reached within \$CARDANO_NEXT_BLOCK_WAIT_ROUNDS_MAX attempts" + exit 1 + fi + done +} + EOF cat >> era-mithril.sh <> era-mithril.sh <> era-mithril.sh <> era-mithril.sh < Date: Wed, 24 Jan 2024 17:29:13 +0100 Subject: [PATCH 3/4] feat: enable test multiple eras and Cardano node versions in CI end to end test --- .github/workflows/ci.yml | 40 +++++++++++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index eec34cf9728..49645527e3a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -262,22 +262,33 @@ jobs: base-ref: ${{ github.event.pull_request.base.sha || 'main' }} head-ref: ${{ github.event.pull_request.head.sha || github.ref }} - run-test-lab: + e2e: runs-on: ubuntu-22.04 needs: [ build-ubuntu-X64 ] strategy: fail-fast: false matrix: + mode: ["std"] era: ${{ fromJSON(needs.build-ubuntu-X64.outputs.eras) }} - run_id: [1,2,3] - # Deactivate Conway era which is not currently working with the Pallas Chain Observer yet, value should be 5-10 - hard_fork_latest_era_at_epoch: [1000] + cardano_node_version: ["8.7.3"] + hard_fork_latest_era_at_epoch: [0,10,100] + run_id: ["#1","#2"] extra_args: [""] include: - - era: ${{ fromJSON(needs.build-ubuntu-X64.outputs.eras)[0] }} - run_id: 3 - hard_fork_latest_era_at_epoch: 1000 + # Include a hard fork test for `8.1.2` which is not concerned + - mode: "std" + era: ${{ fromJSON(needs.build-ubuntu-X64.outputs.eras)[0] }} + cardano_node_version: "8.1.2" + hard_fork_latest_era_at_epoch: 100 + run_id: "#1" + extra_args: "" + # Include a test for the P2P mode + - mode: "p2p" + era: ${{ fromJSON(needs.build-ubuntu-X64.outputs.eras)[0] }} + cardano_node_version: "8.7.3" + hard_fork_latest_era_at_epoch: 100 + run_id: "#1" extra_args: "--use-p2p-network" steps: - name: Checkout sources @@ -304,7 +315,14 @@ jobs: mkdir artifacts - name: Test - run: ./mithril-end-to-end -vvv --bin-directory ./bin --work-directory=./artifacts --devnet-scripts-directory=./mithril-test-lab/mithril-devnet --mithril-era=${{ matrix.era }} ${{ matrix.extra_args }} --cardano-hard-fork-latest-era-at-epoch ${{ matrix.hard_fork_latest_era_at_epoch }} + run: | + ./mithril-end-to-end -vvv \ + --bin-directory ./bin \ + --work-directory=./artifacts \ + --devnet-scripts-directory=./mithril-test-lab/mithril-devnet \ + --mithril-era=${{ matrix.era }} \ + --cardano-node-version ${{ matrix.cardano_node_version }} \ + --cardano-hard-fork-latest-era-at-epoch ${{ matrix.hard_fork_latest_era_at_epoch }} ${{ matrix.extra_args }} - name: Upload E2E Tests Artifacts if: ${{ failure() }} @@ -356,7 +374,7 @@ jobs: - build - check - test - - run-test-lab + - e2e strategy: fail-fast: false matrix: @@ -422,7 +440,7 @@ jobs: needs: - build - test - - run-test-lab + - e2e - check steps: - name: Checkout sources @@ -481,7 +499,7 @@ jobs: - build - build-test-wasm - test - - run-test-lab + - e2e - check steps: - name: Checkout sources From 26841c3ee1916bf578cb47908f0db4a1a5dd1541 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Raynaud Date: Thu, 25 Jan 2024 16:53:08 +0100 Subject: [PATCH 4/4] chore: update devnet version --- mithril-test-lab/mithril-devnet/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mithril-test-lab/mithril-devnet/VERSION b/mithril-test-lab/mithril-devnet/VERSION index 72f9fa82020..28af839c0a9 100644 --- a/mithril-test-lab/mithril-devnet/VERSION +++ b/mithril-test-lab/mithril-devnet/VERSION @@ -1 +1 @@ -0.2.4 \ No newline at end of file +0.2.5 \ No newline at end of file