Skip to content

Commit

Permalink
ci: simplify test workflow (celestiaorg#1798)
Browse files Browse the repository at this point in the history
Closes celestiaorg#1439

## Description

1. Remove commented code
1. Remove split test files
1. Remove tparse
1. Remove race detector report
1. Remove concurrency and cancelling jobs

## Testing

1. test works:
https://github.com/rootulp/celestia-app/actions/runs/5028264091/jobs/9018769458
2. test-race works:
https://github.com/rootulp/celestia-app/actions/runs/5028264091/jobs/9018769731
3. test-coverage works:
https://app.codecov.io/github/celestiaorg/celestia-app/commit/eca8307e7edb9541bc2630373d7bb0f67ef876c8
and I expect the change -29.85% is because this now runs code coverage
for more packages

## FLUPs

If this is merged, can @MSevey please:
1. remove the required CI checks for the matrix tests (i.e. `test-race
(01)`)
2. add required CI checks for test, test-race, test-coverage
  • Loading branch information
rootulp authored May 22, 2023
1 parent 1b904aa commit ddaa261
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 233 deletions.
241 changes: 14 additions & 227 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -1,261 +1,48 @@
# test workflow runs unit tests and uploads a code coverage report. This
# workflow is run on pushes to main & every Pull Requests where a .go, .mod,
# .sum have been changed
name: test
on:
workflow_call:

env:
GO_VERSION: '1.20'

concurrency:
# do not cancel jobs from earlier commits for tags or the main branch
group: ${{ github.workflow }}-${{ !startsWith(github.ref, 'refs/tags/') &&
github.ref != 'refs/heads/main' }}
cancel-in-progress: true

jobs:
install-tparse:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- uses: actions/setup-go@v4
with:
go-version: ${{ env.GO_VERSION }}
- name: Display go version
run: go version
- name: install tparse
run: >
export GO111MODULE="on" &&
go install github.com/mfridman/[email protected]
- uses: actions/[email protected]
with:
path: ~/go/bin
key: ${{ runner.os }}-go-tparse-binary

# don't use cosmovisor until we have tests
# test-cosmovisor:
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v3
# - uses: actions/setup-go@v4
# with:
# go-version: ${{ env.GO_VERSION }}
# - name: Display go version
# run: go version
# - uses: technote-space/[email protected]
# id: git_diff
# with:
# PREFIX_FILTER: |
# cosmovisor
# PATTERNS: |
# **/**.go
# go.mod
# go.sum
# - name: Run cosmovisor tests
# run: cd cosmovisor; make
# if: env.GIT_DIFF
- name: Run unit tests
run: make test

split-test-files:
test-coverage:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Create a file with all the pkgs
run: go list ./... > pkgs.txt
- name: Split pkgs into 4 files
run: split -d -n l/4 --elide-empty-files pkgs.txt pkgs.txt.part.
# cache multiple
- uses: actions/upload-artifact@v3
with:
name: "${{ github.sha }}-00"
path: ./pkgs.txt.part.00
- uses: actions/upload-artifact@v3
with:
name: "${{ github.sha }}-01"
path: ./pkgs.txt.part.01
- uses: actions/upload-artifact@v3
with:
name: "${{ github.sha }}-02"
path: ./pkgs.txt.part.02
- uses: actions/upload-artifact@v3
with:
name: "${{ github.sha }}-03"
path: ./pkgs.txt.part.03

tests:
runs-on: ubuntu-latest
needs: split-test-files
strategy:
fail-fast: false
matrix:
part: ["00", "01", "02", "03"]
steps:
- uses: actions/checkout@v3
- uses: actions/setup-go@v4
with:
go-version: ${{ env.GO_VERSION }}
- uses: technote-space/[email protected]
with:
PATTERNS: |
**/**.go
go.mod
go.sum
- uses: actions/download-artifact@v3
with:
name: "${{ github.sha }}-${{ matrix.part }}"
if: env.GIT_DIFF
- name: test & coverage report creation
run: >
cat pkgs.txt.part.${{ matrix.part }} |
xargs go test -mod=readonly -timeout 30m
-coverprofile=${{ matrix.part }}profile.out
-covermode=atomic
if: env.GIT_DIFF
- uses: actions/upload-artifact@v3
with:
name: "${{ github.sha }}-${{ matrix.part }}-coverage"
path: ./${{ matrix.part }}profile.out

upload-coverage-report:
runs-on: ubuntu-latest
needs: tests
steps:
- uses: actions/checkout@v3
- uses: technote-space/[email protected]
with:
PATTERNS: |
**/**.go
go.mod
go.sum
- uses: actions/download-artifact@v3
with:
name: "${{ github.sha }}-00-coverage"
if: env.GIT_DIFF
- uses: actions/download-artifact@v3
with:
name: "${{ github.sha }}-01-coverage"
if: env.GIT_DIFF
- uses: actions/download-artifact@v3
with:
name: "${{ github.sha }}-02-coverage"
if: env.GIT_DIFF
- uses: actions/download-artifact@v3
with:
name: "${{ github.sha }}-03-coverage"
if: env.GIT_DIFF
- run: |
cat ./*profile.out | grep -v "mode: atomic" >> coverage.txt
if: env.GIT_DIFF
- name: filter out DONTCOVER
# yamllint disable
run: |
(find . -type f -name '*.go' | xargs grep -l 'DONTCOVER') > excludelist.txt
find . -type f -name '*.pb.*' >> excludelist.txt
find . -type f -path './tests/mocks/*.go' >> excludelist.txt
while IFS= read -r filename; do
# trim filename
trimmedname=$(echo $filename | xargs)
echo "Excluding ${trimmedname} from coverage report..."
sed -i.bak "/$(echo $trimmedname | sed 's/\//\\\//g')/d" coverage.txt
done < excludelist.txt
# yamllint enable
if: env.GIT_DIFF
- uses: codecov/codecov-action@v3
- name: Generate coverage.txt
run: make test-coverage

- name: Uploade coverage.txt
uses: codecov/[email protected]
with:
file: ./coverage.txt
if: env.GIT_DIFF

test-race:
runs-on: ubuntu-latest
needs: split-test-files
strategy:
fail-fast: false
matrix:
part: ["00", "01", "02", "03"]
steps:
- uses: actions/checkout@v3

- uses: actions/setup-go@v4
with:
go-version: ${{ env.GO_VERSION }}
- uses: technote-space/[email protected]
with:
PATTERNS: |
**/**.go
go.mod
go.sum
- uses: actions/download-artifact@v3
with:
name: "${{ github.sha }}-${{ matrix.part }}"
if: env.GIT_DIFF
- name: test & coverage report creation
run: >
cat pkgs.txt.part.${{ matrix.part }} |
xargs go test -mod=readonly -json -timeout 30m
-race -test.short > ${{ matrix.part }}-race-output.txt
if: env.GIT_DIFF
- uses: actions/upload-artifact@v3
with:
name: "${{ github.sha }}-${{ matrix.part }}-race-output"
path: ./${{ matrix.part }}-race-output.txt

race-detector-report:
runs-on: ubuntu-latest
needs: [test-race, install-tparse]
timeout-minutes: 5
steps:
- uses: actions/checkout@v3
- uses: technote-space/[email protected]
id: git_diff
with:
PATTERNS: |
**/**.go
go.mod
go.sum
- uses: actions/download-artifact@v3
with:
name: "${{ github.sha }}-00-race-output"
if: env.GIT_DIFF
- uses: actions/download-artifact@v3
with:
name: "${{ github.sha }}-01-race-output"
if: env.GIT_DIFF
- uses: actions/download-artifact@v3
with:
name: "${{ github.sha }}-02-race-output"
if: env.GIT_DIFF
- uses: actions/download-artifact@v3
with:
name: "${{ github.sha }}-03-race-output"
if: env.GIT_DIFF
- uses: actions/[email protected]
with:
path: ~/go/bin
key: ${{ runner.os }}-go-tparse-binary
if: env.GIT_DIFF
- name: Generate test report (go test -race)
run: cat ./*-race-output.txt | ~/go/bin/tparse
if: env.GIT_DIFF

# # todo(evan) add later
# liveness-test:
# runs-on: ubuntu-latest
# timeout-minutes: 10
# steps:
# - uses: actions/checkout@v3
# - uses: actions/setup-go@v4
# with:
# go-version: ${{ env.GO_VERSION }}
# - uses: technote-space/[email protected]
# id: git_diff
# with:
# PATTERNS: |
# **/**.go
# go.mod
# go.sum
# - name: start localnet
# run: |
# make clean build-simd-linux localnet-start
# if: env.GIT_DIFF
# - name: test liveness
# run: |
# ./contrib/localnet_liveness.sh 100 5 50 localhost
# if: env.GIT_DIFF
- name: Run unit tests in race mode
run: make test-race
9 changes: 3 additions & 6 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ ldflags += $(LDFLAGS)

BUILD_FLAGS := -ldflags '$(ldflags)'


## help: Get more info on make commands.
help: Makefile
@echo " Choose a command run in "$(PROJECTNAME)":"
Expand Down Expand Up @@ -49,8 +48,6 @@ mod-verify: mod
GO111MODULE=on go mod verify
.PHONY: mod-verify



## proto-gen: Generate protobuf files. Requires docker.
proto-gen:
@echo "--> Generating Protobuf files"
Expand Down Expand Up @@ -120,11 +117,11 @@ test-bench:
@go test -mod=readonly -bench=. ./...
.PHONY: test-bench

## test-cover: Generate test coverage.txt
test-cover:
## test-coverage: Generate test coverage.txt
test-coverage:
@echo "--> Generating coverage.txt"
@export VERSION=$(VERSION); bash -x scripts/test_cover.sh
.PHONY: test-cover
.PHONY: test-coverage

## adr-gen: Download the ADR template from the celestiaorg/.github repo. Ex. `make adr-gen`
adr-gen:
Expand Down
Empty file modified scripts/test_cover.sh
100644 → 100755
Empty file.

0 comments on commit ddaa261

Please sign in to comment.