diff --git a/.github/workflows/migration-testing.yml b/.github/workflows/migration-testing.yml new file mode 100644 index 000000000..f083dcefb --- /dev/null +++ b/.github/workflows/migration-testing.yml @@ -0,0 +1,69 @@ +name: Migration Testing + +on: + workflow_dispatch: + pull_request: + branches: [main] + +jobs: + check: + strategy: + fail-fast: true + + name: Migration Testing + runs-on: [self-hosted, Linux, large, ephemeral] + steps: + - uses: actions/checkout@v3 + with: + submodules: recursive + + - name: Use Node.js [18.15] + uses: actions/setup-node@v3 + with: + node-version: 18.15 + cache: npm + + - name: Create .env file + run: cp local.env .env + + - name: Install dependencies + run: npm install + + - name: Upgrade @hashgraph/hedera-local to v2.25.0 + run: npm install @hashgraph/hedera-local@2.25.0 --save + + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 + with: + version: nightly + + - name: Start the local node with 0.48.1 + run: npx hedera start -d --full --network-tag=0.48.1 + timeout-minutes: 5 + + - name: Run @pre-migration tests + run: npx hardhat test --grep @pre-migration + timeout-minutes: 5 + + - name: Freeze the network + run: | + npx hardhat run scripts/freeze-network-node.js + sleep 30 + timeout-minutes: 5 + + - name: Stop docker containers (network node) + run: docker stop network-node + timeout-minutes: 5 + + - name: Run the local node with 0.49.7 + env: + NETWORK_NODE_IMAGE_TAG: 0.49.7 + NETWORK_NODE_LOGS_ROOT_PATH: ~/.local/share/hedera-local/network-logs/node + run: | + docker compose -f docker-compose-state-migration.yml up -d + working-directory: node_modules/@hashgraph/hedera-local/ + timeout-minutes: 5 + + - name: Run @post-migration tests + run: npx hardhat test --grep @post-migration + timeout-minutes: 5 diff --git a/scripts/freeze-network-node.js b/scripts/freeze-network-node.js index 865717b3d..7e67afe24 100644 --- a/scripts/freeze-network-node.js +++ b/scripts/freeze-network-node.js @@ -36,7 +36,7 @@ async function main() { '127.0.0.1:50211': '0.0.3', }).setOperator(OPERATOR_ID_A, OPERATOR_KEY_A); - const validStart = new Timestamp(Math.round(Date.now() / 1000), 0); // timestamp now + const validStart = new Timestamp(Math.round((Date.now() + 5000) / 1000), 0); // timestamp now + 5 sec const tx = new FreezeTransaction() .setStartTimestamp(validStart) .setFreezeType(new FreezeType(1)) // FreezeOnly