Run local tests (workflow_dispatch) #36
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Builds a local testnet and runs a set of tests | |
# | |
name: '[locally] Run local tests' | |
run-name: Run local tests (${{ github.event_name }}) | |
on: | |
schedule: | |
- cron: '10 2 * * *' | |
workflow_dispatch: | |
inputs: | |
target_branch: | |
description: 'Branch of go-ten to run against' | |
required: true | |
default: main | |
arguments: | |
description: 'Arguments to the pysys run' | |
required: true | |
default: '-e skip' | |
jobs: | |
test-run: | |
runs-on: [self-hosted, Linux, X64, ten-test-gh-runner-01] | |
steps: | |
- name: 'Check out ten-test' | |
uses: actions/checkout@v3 | |
with: | |
path: ./ten-test | |
- name: 'Check out go-ten code on schedule trigger' | |
if: ${{ github.event_name == 'schedule' }} | |
uses: actions/checkout@v3 | |
with: | |
repository: ten-protocol/go-ten | |
path: ./go-ten | |
- name: 'Check out go-ten code on workflow dispatch' | |
if: ${{ github.event_name == 'workflow_dispatch' }} | |
uses: actions/checkout@v3 | |
with: | |
repository: ten-protocol/go-ten | |
path: ./go-ten | |
ref: ${{ github.event.inputs.target_branch }} | |
- name: 'Docker clean containers and images before the test' | |
run: | | |
for i in `docker ps -a | awk '{ print $1 } ' | grep -v CONTAINER`; do docker stop $i && docker rm $i; done | |
docker system prune -af --volumes | |
for i in `docker volume ls --filter dangling=true -q`; do docker volume rm $i; done | |
- name: 'Build docker containers' | |
run: | | |
cd ${{ github.workspace }}/go-ten/testnet | |
./testnet-local-build_images.sh | |
- name: 'Start up testnet' | |
run: | | |
cd ${{ github.workspace }}/go-ten/ | |
go run ./testnet/launcher/cmd | |
echo "Run docker container log background processes" | |
docker logs -f `docker ps -aqf "name=validator-host"` > validator-host.out 2>&1 & | |
docker logs -f `docker ps -aqf "name=validator-enclave"` > validator-enclave.out 2>&1 & | |
docker logs -f `docker ps -aqf "name=sequencer-host"` > sequencer-host.out 2>&1 & | |
docker logs -f `docker ps -aqf "name=sequencer-enclave"` > sequencer-enclave.out 2>&1 & | |
docker logs -f `docker ps -aqf "name=eth2network"` > eth2network.out 2>&1 & | |
docker logs -f `docker ps -aqf "name=gateway"` > gateway.out 2>&1 & | |
- name: 'Build required artifacts for running tests' | |
run: | | |
cd ${{ github.workspace }}/ten-test | |
./get_artifacts.sh | |
ls -l ${{ github.workspace }}/ten-test/artifacts | |
- name: 'Do a persistence reset' | |
run: | | |
cd ${{ github.workspace }}/ten-test/admin | |
/usr/local/bin/pysys.py run -m ten.local persistence_reset | |
- name: 'Run tests on workflow dispatch' | |
if: ${{ github.event_name == 'workflow_dispatch' }} | |
run: | | |
cd ${{ github.workspace }}/ten-test/tests | |
/usr/local/bin/pysys.py run -m ten.local -r ${{ github.event.inputs.arguments }} | |
cd ${{ github.workspace }}/ten-test/admin | |
/usr/local/bin/pysys.py run -m ten.local -r graph_performance | |
- name: 'Run tests on schedule' | |
if: ${{ github.event_name == 'schedule' }} | |
run: | | |
cd ${{ github.workspace }}/ten-test/tests | |
/usr/local/bin/pysys.py run -m ten.local -r -e skip -e persistence | |
cd ${{ github.workspace }}/ten-test/admin | |
/usr/local/bin/pysys.py run -m ten.local -r graph_performance | |
- name: 'Collate pdf output' | |
if: always() | |
run: | | |
cd ${{ github.workspace }}/ten-test | |
pdftk $(find . -name \*.pdf | sort) cat output results_graphs.pdf || true | |
- name: 'Upload testcase output' | |
uses: actions/upload-artifact@v3 | |
if: failure() | |
with: | |
name: test-artifact | |
path: | | |
${{ github.workspace }}/ten-test/**/Output | |
!${{ github.workspace }}/ten-test/**/node_modules | |
retention-days: 1 | |
- name: 'Get the gateway logs' | |
if: failure() | |
run: | | |
cd ${{ github.workspace }}/go-ten/ | |
docker container cp `docker ps -aqf "name=gateway"`:/gateway_logs.log gateway_logs.out | |
- name: 'Upload container logs' | |
uses: actions/upload-artifact@v3 | |
if: failure() | |
continue-on-error: true | |
with: | |
name: container-artifact | |
path: | | |
${{ github.workspace }}/go-ten/*.out | |
retention-days: 1 | |
- name: 'Upload performance output' | |
uses: actions/upload-artifact@v3 | |
if: always() | |
with: | |
name: performance-artifact | |
path: | | |
${{ github.workspace }}/ten-test/results_graphs.pdf | |
if-no-files-found: ignore | |
retention-days: 1 | |
- name: 'Docker clean containers and images after the test' | |
if: always() | |
run: | | |
for i in `docker ps -a | awk '{ print $1 } ' | grep -v CONTAINER`; do docker stop $i && docker rm $i; done | |
docker system prune -af --volumes | |
for i in `docker volume ls --filter dangling=true -q`; do docker volume rm $i; done | |