diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9913f654c..45f1c47fb 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,7 +12,6 @@ permissions: checks: write jobs: - installer-cosmovisor: name: "Installer - Cosmovisor mode" runs-on: ubuntu-20.04 @@ -165,145 +164,141 @@ jobs: name: report-integration.xml path: report-integration.xml - # NOTE: This job is disabled since upgrade tests from v0.6.x to v1.x.x are not needed until next major release. - # upgrade-tests: - # name: "Upgrade Tests" - # runs-on: ubuntu-20.04 - # steps: - # - uses: actions/checkout@v4 - - # # Preparations - - # - name: Download old node binary (mainnet-latest) - # run: | - # mkdir -p ${{ env.RUNNER_BIN_DIR }} - # wget -c https://github.com/cheqd/cheqd-node/releases/download/v"${LEGACY_VERSION}"/cheqd-noded-"${LEGACY_VERSION}"-linux-amd64.tar.gz - # tar -xvf cheqd-noded-"${LEGACY_VERSION}"-linux-amd64.tar.gz -C ${{ env.RUNNER_BIN_DIR }} - # sudo chmod +x ${{ env.RUNNER_BIN_DIR }}/cheqd-noded - # env: - # LEGACY_VERSION: 1.4.5 - - # - name: Login to GitHub Container Registry - # uses: docker/login-action@v3 - # with: - # registry: ghcr.io - # username: ${{ github.actor }} - # password: ${{ secrets.GITHUB_TOKEN }} - - # - uses: actions/setup-go@v5 - # with: - # go-version-file: ./go.mod - # cache: true - - # - name: Install ginkgo - # working-directory: ./.. - # run: go install github.com/onsi/ginkgo/v2/ginkgo@latest - - # - name: Download new version of the Docker image (build-latest) - # uses: actions/download-artifact@v4 - # with: - # name: cheqd-node-build.tar - - # - name: Load node Docker image - # run: docker load -i cheqd-node-build.tar - - # # Run tests - # - name: Setting up network with old binary inside (mainnet version) - # working-directory: ./tests/upgrade/integration - # run: | - # bash scripts/old_binary_setup.sh - - # - name: Run pre-upgrade tests - # working-directory: ./tests/upgrade/integration/v2 - # run: | - # ginkgo -r --race --tags upgrade_integration --focus-file pre_test.go --keep-going --trace --junit-report ../../../../report-pre-upgrade.xml - - # - name: Upload pre-upgrade tests result - # uses: actions/upload-artifact@v4 - # with: - # name: report-pre-upgrade.xml - # path: report-pre-upgrade.xml - - # - name: Restart network using new node version (build-latest) - # working-directory: ./tests/upgrade/integration - # run: | - # bash scripts/upgrade.sh - - # - name: Verifying docker processes - # working-directory: ./tests/upgrade/integration - # run: | - # docker ps -a - - # - name: Run post-upgrade tests - # working-directory: ./tests/upgrade/integration/v2 - # run: | - # ginkgo -r --race --tags upgrade_integration --focus-file post_test.go --keep-going --trace --junit-report ../../../../report-post-upgrade.xml - - # - name: Upload post-upgrade tests result - # uses: actions/upload-artifact@v4 - # with: - # name: report-post-upgrade.xml - # path: report-post-upgrade.xml - - # - name: Download binary artifact (build-latest) - # uses: actions/download-artifact@v4 - # id: download - # with: - # name: cheqd-noded - # path: ${{ env.RUNNER_BIN_DIR }} - - # - name: Restore binary permissions - # run: sudo chmod +x ${{ env.RUNNER_BIN_DIR }}/cheqd-noded - - # - name: Run integration tests on upgraded network - # working-directory: ./tests/integration - # run: | - # ginkgo -r --tags integration --race --randomize-suites --keep-going --trace --junit-report ../../report-upgraded-integration.xml - - # - name: Upload post-upgrade integration tests result - # uses: actions/upload-artifact@v4 - # with: - # name: report-upgraded-integration.xml - # path: report-upgraded-integration.xml - - # - name: Show logs on failure - # if: failure() - # working-directory: ./docker/localnet - # run: docker compose --env-file build-latest.env logs --tail --follow - - # - name: Submit governance fee parameter change proposals - # working-directory: ./tests/upgrade/integration/v2 - # run: | - # ginkgo -r --race --tags upgrade_integration --focus-file param_change_proposal_test.go --keep-going --trace --junit-report ../../../../report-pricing-proposal.xml - - # - name: Upload pricing proposal tests result - # uses: actions/upload-artifact@v4 - # with: - # name: report-pricing-proposal.xml - # path: report-pricing-proposal.xml - - # - name: Run pricing integration tests after successful param change proposal - # working-directory: ./tests/integration - # run: | - # ginkgo -r --tags integration --race --randomize-suites --keep-going --trace --skip-file cli_diddoc_test.go --skip-file cli_diddoc_negative_test.go --skip-file cli_resource_test.go --skip-file cli_resource_negative_test.go --junit-report ../../report-pricing-change.xml - - # - name: Upload pricing change tests result - # uses: actions/upload-artifact@v4 - # with: - # name: report-pricing-change.xml - # path: report-pricing-change.xml - - # - name: Cleanup after tests - # working-directory: ./tests/upgrade/integration - # run: | - # bash scripts/cleanup.sh + upgrade-tests: + name: "Upgrade Tests" + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v4 + + - name: Download old node binary (mainnet-latest) + run: | + mkdir -p ${{ env.RUNNER_BIN_DIR }} + wget -c https://github.com/cheqd/cheqd-node/releases/download/v"${LEGACY_VERSION}"/cheqd-noded-"${LEGACY_VERSION}"-linux-amd64.tar.gz + tar -xvf cheqd-noded-"${LEGACY_VERSION}"-linux-amd64.tar.gz -C ${{ env.RUNNER_BIN_DIR }} + sudo chmod +x ${{ env.RUNNER_BIN_DIR }}/cheqd-noded + env: + LEGACY_VERSION: 2.0.1 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - uses: actions/setup-go@v5 + with: + go-version-file: ./go.mod + cache: true + + - name: Install ginkgo + working-directory: ./.. + run: go install github.com/onsi/ginkgo/v2/ginkgo@latest + + - name: Download new version of the Docker image (build-latest) + uses: actions/download-artifact@v4 + with: + name: cheqd-node-build.tar + + - name: Load node Docker image + run: docker load -i cheqd-node-build.tar + + - name: Setting up network with old binary inside (mainnet version) + working-directory: ./tests/upgrade/integration + run: | + bash scripts/old_binary_setup.sh + + - name: Run pre-upgrade tests + working-directory: ./tests/upgrade/integration/v3 + run: | + ginkgo -r --race --tags upgrade_integration --focus-file pre_test.go --keep-going --trace --junit-report ../../../../report-pre-upgrade.xml + + - name: Upload pre-upgrade tests result + uses: actions/upload-artifact@v4 + with: + name: report-pre-upgrade.xml + path: report-pre-upgrade.xml + + - name: Restart network using new node version (build-latest) + working-directory: ./tests/upgrade/integration + run: | + bash scripts/upgrade.sh + + - name: Verifying docker processes + working-directory: ./tests/upgrade/integration + run: | + docker ps -a + + - name: Run post-upgrade tests + working-directory: ./tests/upgrade/integration/v3 + run: | + ginkgo -r --race --tags upgrade_integration --focus-file post_test.go --keep-going --trace --junit-report ../../../../report-post-upgrade.xml + + - name: Upload post-upgrade tests result + uses: actions/upload-artifact@v4 + with: + name: report-post-upgrade.xml + path: report-post-upgrade.xml + + - name: Download binary artifact (build-latest) + uses: actions/download-artifact@v4 + id: download + with: + name: cheqd-noded + path: ${{ env.RUNNER_BIN_DIR }} + + - name: Restore binary permissions + run: sudo chmod +x ${{ env.RUNNER_BIN_DIR }}/cheqd-noded + + - name: Run integration tests on upgraded network + working-directory: ./tests/integration + run: | + ginkgo -r --tags integration --race --randomize-suites --keep-going --trace --junit-report ../../report-upgraded-integration.xml + + - name: Upload post-upgrade integration tests result + uses: actions/upload-artifact@v4 + with: + name: report-upgraded-integration.xml + path: report-upgraded-integration.xml + + - name: Show logs on failure + if: failure() + working-directory: ./docker/localnet + run: docker compose --env-file build-latest.env logs --tail --follow + + - name: Submit governance fee parameter change proposals + working-directory: ./tests/upgrade/integration/v2 + run: | + ginkgo -r --race --tags upgrade_integration --focus-file param_change_proposal_test.go --keep-going --trace --junit-report ../../../../report-pricing-proposal.xml + + - name: Upload pricing proposal tests result + uses: actions/upload-artifact@v4 + with: + name: report-pricing-proposal.xml + path: report-pricing-proposal.xml + + - name: Run pricing integration tests after successful param change proposal + working-directory: ./tests/integration + run: | + ginkgo -r --tags integration --race --randomize-suites --keep-going --trace --skip-file cli_diddoc_test.go --skip-file cli_diddoc_negative_test.go --skip-file cli_resource_test.go --skip-file cli_resource_negative_test.go --junit-report ../../report-pricing-change.xml + + - name: Upload pricing change tests result + uses: actions/upload-artifact@v4 + with: + name: report-pricing-change.xml + path: report-pricing-change.xml + + - name: Cleanup after tests + working-directory: ./tests/upgrade/integration + run: | + bash scripts/cleanup.sh report-results: name: "Report" runs-on: ubuntu-20.04 # NOTE: If not next major release, only unit and integration tests are necessary, otherwise all tests are needed. - needs: [unit-tests, integration-tests] - # needs: [unit-tests, integration-tests, upgrade-tests] + # needs: [unit-tests, integration-tests] + needs: [unit-tests, integration-tests, upgrade-tests] if: always() steps: @@ -319,41 +314,39 @@ jobs: with: name: report-integration.xml - # - name: Download pre-upgrade test Report - # uses: actions/download-artifact@v4 - # with: - # name: report-pre-upgrade.xml - - # - name: Download post-upgrade test Report - # uses: actions/download-artifact@v4 - # with: - # name: report-post-upgrade.xml - - # - name: Download upgraded integration test Report - # uses: actions/download-artifact@v4 - # with: - # name: report-upgraded-integration.xml + - name: Download pre-upgrade test Report + uses: actions/download-artifact@v4 + with: + name: report-pre-upgrade.xml - # - name: Download pricing proposal test Report - # uses: actions/download-artifact@v4 - # with: - # name: report-pricing-proposal.xml + - name: Download post-upgrade test Report + uses: actions/download-artifact@v4 + with: + name: report-post-upgrade.xml - # - name: Download pricing change test Report - # uses: actions/download-artifact@v4 - # with: - # name: report-pricing-change.xml + - name: Download upgraded integration test Report + uses: actions/download-artifact@v4 + with: + name: report-upgraded-integration.xml + - name: Download pricing proposal test Report + uses: actions/download-artifact@v4 + with: + name: report-pricing-proposal.xml + - name: Download pricing change test Report + uses: actions/download-artifact@v4 + with: + name: report-pricing-change.xml - name: Combine test results run: | - # python ./.github/scripts/xml_combine.py report-unit.xml report-integration.xml + python ./.github/scripts/xml_combine.py report-unit.xml report-integration.xml report-pre-upgrade.xml report-post-upgrade.xml report-upgraded-integration.xml report-pricing-proposal.xml report-pricing-change.xml > report.xml # run: | # python ./.github/scripts/xml_combine.py report-unit.xml report-integration.xml > report.xml - uses: mikepenz/action-junit-report@v4 with: - report_paths: 'report.xml' + report_paths: "report.xml" check_name: "" - suite_regex: '*' + suite_regex: "*" include_passed: true detailed_summary: true diff --git a/app/app.go b/app/app.go index 45f28c833..3d1573d66 100644 --- a/app/app.go +++ b/app/app.go @@ -1131,6 +1131,7 @@ func (app *App) RegisterUpgradeHandlers() { if err != nil { return migrations, err } + SetExplicitModuleAccountPermissions(ctx, app.AccountKeeper) err = ConfigureFeeMarketModule(ctx, app.FeeMarketKeeper) if err != nil { return migrations, err @@ -1151,6 +1152,7 @@ func (app *App) setupUpgradeStoreLoaders() { storeUpgrades := storetypes.StoreUpgrades{ Added: []string{ feemarkettypes.StoreKey, + feeabstypes.StoreKey, }, } // configure store loader that checks if version == upgradeHeight and applies store upgrades @@ -1186,3 +1188,21 @@ func ConfigureFeeMarketModule(ctx sdk.Context, keeper *feemarketkeeper.Keeper) e func (app *App) Configurator() module.Configurator { return app.configurator } + +func SetExplicitModuleAccountPermissions(ctx sdk.Context, accountKeeper authkeeper.AccountKeeper) { + // Get the module account using the account name + moduleAcc := accountKeeper.GetModuleAccount(ctx, didtypes.ModuleName) + // Ensure the account exists + if moduleAcc == nil { + panic("module account not found") + } + // Update the permissions (replace with the actual permissions) + newPermissions := []string{authtypes.Minter, authtypes.Burner} // Example permissions + // Cast the account to the concrete type that has permissions + if macc, ok := moduleAcc.(*authtypes.ModuleAccount); ok { + macc.Permissions = newPermissions + accountKeeper.SetModuleAccount(ctx, macc) // Update the account in the keeper + } else { + panic("failed to cast module account to *ModuleAccount") + } +} diff --git a/docker/localnet/docker-compose.yml b/docker/localnet/docker-compose.yml index 255b52dce..759f58450 100644 --- a/docker/localnet/docker-compose.yml +++ b/docker/localnet/docker-compose.yml @@ -276,4 +276,4 @@ volumes: validator-2-data: validator-3-data: seed-0-data: - observer-0-data: + observer-0-data: \ No newline at end of file diff --git a/docker/localnet/gen-network-config-old-binary.sh b/docker/localnet/gen-network-config-old-binary.sh index 2c14ded29..5fe1b7bf4 100644 --- a/docker/localnet/gen-network-config-old-binary.sh +++ b/docker/localnet/gen-network-config-old-binary.sh @@ -139,7 +139,7 @@ function configure_genesis() { mv "${GENESIS_TMP}" "${GENESIS}" # supplied added tokens - # jq '.app_state.bank.supply += [{"denom": "ncheq", "amount": "420004000000000200"}]' "$GENESIS" > "$GENESIS_TMP" && mv "${GENESIS_TMP}" "${GENESIS}" + jq '.app_state.bank.supply += [{"denom": "ncheq", "amount": "420004000000000200"}]' "$GENESIS" > "$GENESIS_TMP" && mv "${GENESIS_TMP}" "${GENESIS}" } @@ -186,6 +186,13 @@ configure_genesis "${TMP_NODE_HOME}" "${TMP_NODE_MONIKER}" mkdir "${TMP_NODE_HOME}/config/gentx" +mnemonics=( + "mix around destroy web fever address comfort vendor tank sudden abstract cabin acoustic attitude peasant hospital vendor harsh void current shield couple barrel suspect" + "useful case library girl narrow plate knee side supreme base horror fence tent glass leaf okay budget chalk patch forum coil crunch employ need" + "slight oblige answer vault project symbol dismiss match match honey forum wood resist exotic inner close foil notice onion acquire sausage boost acquire produce" + "prefer spring subject mimic shadow biology connect option east dirt security surge thrive kiwi nothing pulse holiday license hub pitch motion sunny pelican birth" +) + # Adding genesis validators for ((i=0 ; i