diff --git a/.github/workflows/clean-artifacts.yml b/.github/workflows/clean-artifacts.yml new file mode 100644 index 0000000000..edebe53a8d --- /dev/null +++ b/.github/workflows/clean-artifacts.yml @@ -0,0 +1,17 @@ +name: Remove old artifacts + +on: + schedule: + # Every day at 1am + - cron: '0 1 * * *' + +jobs: + remove-old-artifacts: + runs-on: ubuntu-latest + timeout-minutes: 10 + + steps: + - name: Remove old artifacts + uses: c-hive/gha-remove-artifacts@v1 + with: + age: '7 days' diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 937f683e82..16b6abe454 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -11,6 +11,7 @@ jobs: golangci: name: golangci-lint runs-on: ubuntu-latest + timeout-minutes: 6 steps: - uses: actions/checkout@v2 - uses: technote-space/get-diff-action@v1 diff --git a/.github/workflows/proto.yml b/.github/workflows/proto.yml index 40d48e200f..b355da087d 100644 --- a/.github/workflows/proto.yml +++ b/.github/workflows/proto.yml @@ -8,6 +8,7 @@ on: jobs: lint: runs-on: ubuntu-latest + timeout-minutes: 5 steps: - uses: actions/checkout@master - name: lint diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2e78a807ae..85040ee3dd 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,5 +1,5 @@ -name: Uint-Tests / Code Coverage -# Uint-Tests / Code Coverage workflow runs unit tests and uploads a code coverage report +name: Tests / Code Coverage +# Tests / Code Coverage workflow runs unit tests and uploads a code coverage report # This workflow is run on pushes to master & every Pull Requests where a .go, .mod, .sum have been changed on: pull_request: @@ -15,10 +15,37 @@ jobs: GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" if: "!startsWith(github.ref, 'refs/tags/') && github.ref != 'refs/heads/master'" - test-coverage-upload: + split-test-files: runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Create a file with all the pkgs + run: go list ./... > pkgs.txt + - name: Split pkgs into 4 files + run: split -n l/4 --additional-suffix=.txt ./pkgs.txt + # cache multiple + - uses: actions/upload-artifact@v2 + with: + name: '${{ github.sha }}-aa' + path: ./xaa.txt + - uses: actions/upload-artifact@v2 + with: + name: '${{ github.sha }}-ab' + path: ./xab.txt + - uses: actions/upload-artifact@v2 + with: + name: '${{ github.sha }}-ac' + path: ./xac.txt + - uses: actions/upload-artifact@v2 + with: + name: '${{ github.sha }}-ad' + path: ./xad.txt + + test-coverage-run-1: + runs-on: ubuntu-latest + needs: split-test-files + timeout-minutes: 10 steps: - - uses: actions/setup-go@v2-beta - uses: actions/checkout@v2 - uses: technote-space/get-diff-action@v1 id: git_diff @@ -26,14 +53,14 @@ jobs: SUFFIX_FILTER: | .go .mod - .sum - - name: build - run: | - make build + .sum + - uses: actions/download-artifact@v2 + with: + name: '${{ github.sha }}-aa' if: "env.GIT_DIFF != ''" - name: test & coverage report creation run: | - go test ./... -mod=readonly -timeout 12m -race -coverprofile=coverage.txt -covermode=atomic -tags='ledger test_ledger_mock' + cat xaa.txt | xargs go test -mod=readonly -timeout 8m -race -coverprofile=coverage.txt -covermode=atomic -tags='ledger test_ledger_mock' if: "env.GIT_DIFF != ''" - name: filter out DONTCOVER run: | @@ -48,12 +75,127 @@ jobs: if: "env.GIT_DIFF != ''" - uses: codecov/codecov-action@v1 with: - file: ./coverage.txt # optional - fail_ci_if_error: true + file: ./coverage.txt + fail_ci_if_error: true + if: "env.GIT_DIFF != ''" + + test-coverage-run-2: + runs-on: ubuntu-latest + needs: split-test-files + timeout-minutes: 10 + steps: + - uses: actions/checkout@v2 + - uses: technote-space/get-diff-action@v1 + id: git_diff + with: + SUFFIX_FILTER: | + .go + .mod + .sum + - uses: actions/download-artifact@v2 + with: + name: '${{ github.sha }}-ab' if: "env.GIT_DIFF != ''" + - name: test & coverage report creation + run: | + cat xab.txt | xargs go test -mod=readonly -timeout 6m -race -coverprofile=coverage.txt -covermode=atomic -tags='ledger test_ledger_mock' + if: "env.GIT_DIFF != ''" + - name: filter out DONTCOVER + run: | + excludelist="$(find ./ -type f -name '*.go' | xargs grep -l 'DONTCOVER')" + excludelist+=" $(find ./ -type f -name '*.pb.go')" + excludelist+=" $(find ./ -type f -path './tests/mocks/*.go')" + for filename in ${excludelist}; do + filename=$(echo $filename | sed 's/^./github.com\/cosmos\/cosmos-sdk/g') + echo "Excluding ${filename} from coverage report..." + sed -i.bak "/$(echo $filename | sed 's/\//\\\//g')/d" coverage.txt + done + if: "env.GIT_DIFF != ''" + - uses: codecov/codecov-action@v1 + with: + file: ./coverage.txt + fail_ci_if_error: true + if: "env.GIT_DIFF != ''" + + test-coverage-run-3: + runs-on: ubuntu-latest + needs: split-test-files + timeout-minutes: 10 + steps: + - uses: actions/checkout@v2 + - uses: technote-space/get-diff-action@v1 + id: git_diff + with: + SUFFIX_FILTER: | + .go + .mod + .sum + - uses: actions/download-artifact@v2 + with: + name: '${{ github.sha }}-ac' + if: "env.GIT_DIFF != ''" + - name: test & coverage report creation + run: | + cat xac.txt | xargs go test -mod=readonly -timeout 6m -race -coverprofile=coverage.txt -covermode=atomic -tags='ledger test_ledger_mock' + if: "env.GIT_DIFF != ''" + - name: filter out DONTCOVER + run: | + excludelist="$(find ./ -type f -name '*.go' | xargs grep -l 'DONTCOVER')" + excludelist+=" $(find ./ -type f -name '*.pb.go')" + excludelist+=" $(find ./ -type f -path './tests/mocks/*.go')" + for filename in ${excludelist}; do + filename=$(echo $filename | sed 's/^./github.com\/cosmos\/cosmos-sdk/g') + echo "Excluding ${filename} from coverage report..." + sed -i.bak "/$(echo $filename | sed 's/\//\\\//g')/d" coverage.txt + done + if: "env.GIT_DIFF != ''" + - uses: codecov/codecov-action@v1 + with: + file: ./coverage.txt + fail_ci_if_error: true + if: "env.GIT_DIFF != ''" + + test-coverage-run-4: + runs-on: ubuntu-latest + needs: split-test-files + timeout-minutes: 10 + steps: + - uses: actions/checkout@v2 + - uses: technote-space/get-diff-action@v1 + id: git_diff + with: + SUFFIX_FILTER: | + .go + .mod + .sum + - uses: actions/download-artifact@v2 + with: + name: '${{ github.sha }}-ad' + if: "env.GIT_DIFF != ''" + - name: test & coverage report creation + run: | + cat xad.txt | xargs go test -mod=readonly -timeout 6m -race -coverprofile=coverage.txt -covermode=atomic -tags='ledger test_ledger_mock' + if: "env.GIT_DIFF != ''" + - name: filter out DONTCOVER + run: | + excludelist="$(find ./ -type f -name '*.go' | xargs grep -l 'DONTCOVER')" + excludelist+=" $(find ./ -type f -name '*.pb.go')" + excludelist+=" $(find ./ -type f -path './tests/mocks/*.go')" + for filename in ${excludelist}; do + filename=$(echo $filename | sed 's/^./github.com\/cosmos\/cosmos-sdk/g') + echo "Excluding ${filename} from coverage report..." + sed -i.bak "/$(echo $filename | sed 's/\//\\\//g')/d" coverage.txt + done + if: "env.GIT_DIFF != ''" + - uses: codecov/codecov-action@v1 + with: + file: ./coverage.txt + fail_ci_if_error: true + if: "env.GIT_DIFF != ''" integration-tests: runs-on: ubuntu-latest + timeout-minutes: 10 steps: - uses: actions/checkout@v2 - uses: technote-space/get-diff-action@v1 diff --git a/types/simulation/account_test.go b/types/simulation/account_test.go index 62a4b7ac8f..85034a0d24 100644 --- a/types/simulation/account_test.go +++ b/types/simulation/account_test.go @@ -20,8 +20,8 @@ func TestRandomAccounts(t *testing.T) { want int }{ {"0-accounts", 0, 0}, - {"0-accounts", 1, 1}, - {"0-accounts", 1_000, 1_000}, + {"1-accounts", 1, 1}, + {"100-accounts", 100, 100}, } for _, tt := range tests { tt := tt diff --git a/types/simulation/rand_util_test.go b/types/simulation/rand_util_test.go index 09de644d17..d68db7c6ab 100644 --- a/types/simulation/rand_util_test.go +++ b/types/simulation/rand_util_test.go @@ -43,7 +43,7 @@ func TestRandStringOfLength(t *testing.T) { }{ {"0-size", 0, 0}, {"10-size", 10, 10}, - {"10-size", 1_000_000_000, 1_000_000_000}, + {"1_000_000-size", 1_000_000, 1_000_000}, } for _, tt := range tests { tt := tt