Add synthetic orderbook #2218
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
name: Automated Tests and Linting | |
on: | |
push: | |
branches: [main] | |
pull_request: | |
branches: | |
- main | |
- v2.4 | |
workflow_dispatch: | |
env: | |
CI: true | |
PARSER_BROKEN: false # set to true if Solidity parsing is currently broken, this will skip Linting and Coverage | |
concurrency: | |
group: build-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
lint: | |
name: Lint | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: 18.19 | |
- uses: actions/checkout@v3 | |
- uses: actions/cache@v3 | |
id: cache | |
with: | |
path: | | |
node_modules | |
key: ${{ runner.os }}-node-${{ matrix.node }}-${{ hashFiles('yarn.lock') }} | |
- name: Install | |
run: yarn --frozen-lockfile | |
if: ${{ env.PARSER_BROKEN != 'true' }} | |
- name: lint | |
run: yarn workspaces run lint | |
if: ${{ env.PARSER_BROKEN != 'true' }} | |
# [CORE] | |
core-unit-test: | |
name: '[Core] Unit Tests w/ Coverage' | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node }} | |
- uses: actions/checkout@v3 | |
- uses: actions/cache@v3 | |
id: cache | |
with: | |
path: | | |
node_modules | |
key: ${{ runner.os }}-node-${{ matrix.node }}-${{ hashFiles('yarn.lock') }} | |
- name: Install | |
run: yarn --frozen-lockfile | |
- name: Compile | |
run: yarn workspaces run compile # compile all packages | |
- name: Run tests | |
env: | |
MOCHA_REPORTER: dot | |
MOCHA_RETRY_COUNT: 2 | |
run: | | |
yarn workspace @perennial/v2-core run ${{ env.PARSER_BROKEN != 'true' && 'coverage' || 'test' }} | |
- name: Upload lcov file | |
uses: actions/upload-artifact@v3 | |
with: | |
name: core_unit_test_coverage | |
path: ./packages/core/coverage/lcov.info | |
- name: '[Core] Unit Test Code Coverage Report' | |
uses: romeovs/[email protected] | |
with: | |
title: '[Core] Unit Test Coverage Report' | |
lcov-file: ./packages/core/coverage/lcov.info | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
delete-old-comments: true | |
if: ${{ github.event_name == 'pull_request' && env.PARSER_BROKEN != 'true' }} | |
core-integration-test: | |
name: '[Core] Integration Tests w/ Coverage' | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node }} | |
- uses: actions/checkout@v3 | |
- uses: actions/cache@v3 | |
id: cache | |
with: | |
path: | | |
node_modules | |
key: ${{ runner.os }}-node-${{ matrix.node }}-${{ hashFiles('yarn.lock') }} | |
- name: Install | |
run: yarn --frozen-lockfile | |
- name: Compile | |
run: yarn workspaces run compile # compile all packages | |
- name: Run tests | |
env: | |
MOCHA_REPORTER: dot | |
MOCHA_RETRY_COUNT: 2 | |
MAINNET_NODE_URL: ${{ secrets.MAINNET_NODE_URL }} | |
run: | | |
yarn workspace @perennial/v2-core run ${{ env.PARSER_BROKEN != 'true' && 'coverage:integration' || 'test:integration' }} | |
- name: Upload lcov file | |
uses: actions/upload-artifact@v3 | |
with: | |
name: core_integration_test_coverage | |
path: ./packages/core/coverage/lcov.info | |
- name: '[Core] Integration Test Code Coverage Report' | |
uses: romeovs/[email protected] | |
with: | |
title: '[Core] Integration Test Coverage Report' | |
lcov-file: ./packages/core/coverage/lcov.info | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
delete-old-comments: true | |
if: ${{ github.event_name == 'pull_request' && env.PARSER_BROKEN != 'true' }} | |
core-combined-test: | |
name: '[Core] Combined Tests w/ Coverage' | |
runs-on: ubuntu-latest | |
needs: [core-unit-test, core-integration-test] | |
steps: | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node }} | |
- uses: actions/checkout@v3 | |
- name: Download unit test coverage file | |
uses: actions/download-artifact@v3 | |
with: | |
name: core_unit_test_coverage | |
path: core_unit_test_coverage | |
- name: Download integration test coverage file | |
uses: actions/download-artifact@v3 | |
with: | |
name: core_integration_test_coverage | |
path: core_integration_test_coverage | |
- name: Install lcov | |
run: sudo apt-get update && sudo apt-get install lcov | |
- name: Combine unit and integration test coverage | |
run: lcov -a core_unit_test_coverage/lcov.info -a core_integration_test_coverage/lcov.info --output-file core_combined_coverage.info | |
- name: '[Core] Combined Test Code Coverage Report' | |
uses: romeovs/[email protected] | |
with: | |
title: '[Core] Combined Test Coverage Report' | |
lcov-file: core_combined_coverage.info | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
delete-old-comments: true | |
if: ${{ github.event_name == 'pull_request' && env.PARSER_BROKEN != 'true' }} | |
# [ORACLE] | |
oracle-unit-test: | |
name: '[Oracle] Unit Tests w/ Coverage' | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node }} | |
- uses: actions/checkout@v3 | |
- uses: actions/cache@v3 | |
id: cache | |
with: | |
path: | | |
node_modules | |
key: ${{ runner.os }}-node-${{ matrix.node }}-${{ hashFiles('yarn.lock') }} | |
- name: Install | |
run: yarn --frozen-lockfile | |
- name: Compile | |
run: yarn workspaces run compile # compile all packages | |
- name: Run tests | |
env: | |
MOCHA_REPORTER: dot | |
MOCHA_RETRY_COUNT: 2 | |
run: | | |
yarn workspace @perennial/v2-oracle run ${{ env.PARSER_BROKEN != 'true' && 'coverage' || 'test' }} | |
- name: Upload lcov file | |
uses: actions/upload-artifact@v3 | |
with: | |
name: oracle_unit_test_coverage | |
path: ./packages/oracle/coverage/lcov.info | |
oracle-integration-test: | |
name: '[Oracle] Integration Tests w/ Coverage' | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node }} | |
- uses: actions/checkout@v3 | |
- uses: actions/cache@v3 | |
id: cache | |
with: | |
path: | | |
node_modules | |
key: ${{ runner.os }}-node-${{ matrix.node }}-${{ hashFiles('yarn.lock') }} | |
- name: Install | |
run: yarn --frozen-lockfile | |
- name: Compile | |
run: yarn workspaces run compile # compile all packages | |
- name: Run tests | |
env: | |
MOCHA_REPORTER: dot | |
MOCHA_RETRY_COUNT: 2 | |
MAINNET_NODE_URL: ${{ secrets.MAINNET_NODE_URL }} | |
run: | | |
yarn workspace @perennial/v2-oracle run ${{ env.PARSER_BROKEN != 'true' && 'coverage:integration' || 'test:integration' }} | |
- name: Upload lcov file | |
uses: actions/upload-artifact@v3 | |
with: | |
name: oracle_integration_test_coverage | |
path: ./packages/oracle/coverage/lcov.info | |
oracle-integrationSepolia-test: | |
name: '[Oracle] Sepolia Integration Tests w/ Coverage' | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node }} | |
- uses: actions/checkout@v3 | |
- uses: actions/cache@v3 | |
id: cache | |
with: | |
path: | | |
node_modules | |
key: ${{ runner.os }}-node-${{ matrix.node }}-${{ hashFiles('yarn.lock') }} | |
- name: Install | |
run: yarn --frozen-lockfile | |
- name: Compile | |
run: yarn workspaces run compile # compile all packages | |
- name: Run tests | |
env: | |
MOCHA_REPORTER: dot | |
MOCHA_RETRY_COUNT: 2 | |
ARBITRUM_SEPOLIA_NODE_URL: ${{ secrets.ARBITRUM_SEPOLIA_NODE_URL }} | |
run: | | |
yarn workspace @perennial/v2-oracle run ${{ env.PARSER_BROKEN != 'true' && 'coverage:integrationSepolia' || 'test:integrationSepolia' }} | |
- name: Upload lcov file | |
uses: actions/upload-artifact@v3 | |
with: | |
name: oracle_sepolia_integration_test_coverage | |
path: ./packages/oracle/coverage/lcov.info | |
# [VAULT] | |
vault-unit-test: | |
name: '[Vault] Unit Tests w/ Coverage' | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node }} | |
- uses: actions/checkout@v3 | |
- uses: actions/cache@v3 | |
id: cache | |
with: | |
path: | | |
node_modules | |
key: ${{ runner.os }}-node-${{ matrix.node }}-${{ hashFiles('yarn.lock') }} | |
- name: Install | |
run: yarn --frozen-lockfile | |
- name: Compile | |
run: yarn workspaces run compile # compile all packages | |
- name: Run tests | |
env: | |
MOCHA_REPORTER: dot | |
MOCHA_RETRY_COUNT: 2 | |
run: | | |
yarn workspace @perennial/v2-vault run ${{ env.PARSER_BROKEN != 'true' && 'coverage' || 'test' }} | |
- name: Upload lcov file | |
uses: actions/upload-artifact@v3 | |
with: | |
name: vault_unit_test_coverage | |
path: ./packages/vault/coverage/lcov.info | |
vault-integration-test: | |
name: '[Vault] Integration Tests w/ Coverage' | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node }} | |
- uses: actions/checkout@v3 | |
- uses: actions/cache@v3 | |
id: cache | |
with: | |
path: | | |
node_modules | |
key: ${{ runner.os }}-node-${{ matrix.node }}-${{ hashFiles('yarn.lock') }} | |
- name: Install | |
run: yarn --frozen-lockfile | |
- name: Compile | |
run: yarn workspaces run compile # compile all packages | |
- name: Run tests | |
env: | |
MOCHA_REPORTER: dot | |
MOCHA_RETRY_COUNT: 2 | |
MAINNET_NODE_URL: ${{ secrets.MAINNET_NODE_URL }} | |
run: | | |
yarn workspace @perennial/v2-vault run ${{ env.PARSER_BROKEN != 'true' && 'coverage:integration' || 'test:integration' }} | |
- name: Upload lcov file | |
uses: actions/upload-artifact@v3 | |
with: | |
name: vault_integration_test_coverage | |
path: ./packages/vault/coverage/lcov.info | |
# [PERIPHERY] | |
periphery-unit-test: | |
name: '[Periphery] Unit Tests w/ Coverage' | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node }} | |
- uses: actions/checkout@v3 | |
- uses: actions/cache@v3 | |
id: cache | |
with: | |
path: | | |
node_modules | |
key: ${{ runner.os }}-node-${{ matrix.node }}-${{ hashFiles('yarn.lock') }} | |
- name: Install | |
run: yarn --frozen-lockfile | |
- name: Compile | |
run: yarn workspaces run compile # compile all packages | |
- name: Run tests | |
env: | |
MOCHA_REPORTER: dot | |
MOCHA_RETRY_COUNT: 2 | |
run: | | |
yarn workspace @perennial/v2-periphery run ${{ env.PARSER_BROKEN != 'true' && 'coverage' || 'test' }} | |
- name: Upload lcov file | |
uses: actions/upload-artifact@v3 | |
with: | |
name: periphery_unit_test_coverage | |
path: ./packages/periphery/coverage/lcov.info | |
periphery-integration-test: | |
name: '[Periphery] Mainnet Integration Tests w/ Coverage' | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node }} | |
- uses: actions/checkout@v3 | |
- uses: actions/cache@v3 | |
id: cache | |
with: | |
path: | | |
node_modules | |
key: ${{ runner.os }}-node-${{ matrix.node }}-${{ hashFiles('yarn.lock') }} | |
- name: Install | |
run: yarn --frozen-lockfile | |
- name: Compile | |
run: yarn workspaces run compile # compile all packages | |
- name: Run tests | |
env: | |
MOCHA_REPORTER: dot | |
MOCHA_RETRY_COUNT: 2 | |
MAINNET_NODE_URL: ${{ secrets.MAINNET_NODE_URL }} | |
run: | | |
yarn workspace @perennial/v2-periphery run ${{ env.PARSER_BROKEN != 'true' && 'coverage:integration' || 'test:integration' }} | |
- name: Upload lcov file | |
uses: actions/upload-artifact@v3 | |
with: | |
name: periphery_integration_test_coverage | |
path: ./packages/periphery/coverage/lcov.info | |
periphery-integrationL2-test: | |
name: '[Periphery] L2 Integration Tests w/ Coverage' | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node }} | |
- uses: actions/checkout@v3 | |
- uses: actions/cache@v3 | |
id: cache | |
with: | |
path: | | |
node_modules | |
key: ${{ runner.os }}-node-${{ matrix.node }}-${{ hashFiles('yarn.lock') }} | |
- name: Install | |
run: yarn --frozen-lockfile | |
- name: Compile | |
run: yarn workspaces run compile # compile all packages | |
- name: Run tests with coverage on Arbitrum | |
env: | |
MOCHA_REPORTER: dot | |
MOCHA_RETRY_COUNT: 2 | |
ARBITRUM_NODE_URL: ${{ secrets.ARBITRUM_NODE_URL }} | |
run: | | |
yarn workspace @perennial/v2-periphery run ${{ env.PARSER_BROKEN != 'true' && 'coverage:integrationArbitrum' || 'test:integrationArbitrum' }} | |
- name: Upload lcov file | |
uses: actions/upload-artifact@v3 | |
with: | |
name: periphery_arbitrum_integration_test_coverage | |
path: ./packages/periphery/coverage/lcov.info | |
- name: Run tests on Base | |
env: | |
MOCHA_REPORTER: dot | |
MOCHA_RETRY_COUNT: 2 | |
BASE_NODE_URL: ${{ secrets.BASE_NODE_URL }} | |
run: | | |
yarn workspace @perennial/v2-periphery run test:integrationBase | |
# [PERIPHERY UNIT COVERAGE] | |
periphery-unit-test-coverage: | |
name: 'Periphery Unit Tests Coverage' | |
runs-on: ubuntu-latest | |
needs: | |
[oracle-unit-test, vault-unit-test, periphery-unit-test] | |
steps: | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node }} | |
- uses: actions/checkout@v3 | |
- name: Download oracle unit test coverage file | |
uses: actions/download-artifact@v3 | |
with: | |
name: oracle_unit_test_coverage | |
path: oracle_unit_test_coverage | |
- name: Download vault unit test coverage file | |
uses: actions/download-artifact@v3 | |
with: | |
name: vault_unit_test_coverage | |
path: vault_unit_test_coverage | |
- name: Download periphery unit test coverage file | |
uses: actions/download-artifact@v3 | |
with: | |
name: periphery_unit_test_coverage | |
path: periphery_unit_test_coverage | |
- name: Install lcov | |
run: sudo apt-get update && sudo apt-get install lcov | |
- name: Combine unit test coverage | |
run: lcov -a oracle_unit_test_coverage/lcov.info | |
-a vault_unit_test_coverage/lcov.info | |
-a periphery_unit_test_coverage/lcov.info | |
--output-file periphery_unit_coverage.info | |
- name: Upload combined unit test lcov file | |
uses: actions/upload-artifact@v3 | |
with: | |
name: periphery_unit_coverage | |
path: periphery_unit_coverage.info | |
- name: 'Periphery Unit Test Code Coverage Report' | |
uses: romeovs/[email protected] | |
with: | |
title: '[Periphery] Unit Test Coverage Report' | |
lcov-file: periphery_unit_coverage.info | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
delete-old-comments: true | |
if: ${{ github.event_name == 'pull_request' && env.PARSER_BROKEN != 'true' }} | |
# [PERIPHERY INTEGRATION COVERAGE] | |
periphery-integration-test-coverage: | |
name: 'Periphery Integration Tests Coverage' | |
runs-on: ubuntu-latest | |
needs: | |
[ | |
oracle-integration-test, | |
oracle-integrationSepolia-test, | |
vault-integration-test, | |
periphery-integration-test, | |
] | |
steps: | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node }} | |
- uses: actions/checkout@v3 | |
- name: Download oracle integration test coverage file | |
uses: actions/download-artifact@v3 | |
with: | |
name: oracle_integration_test_coverage | |
path: oracle_integration_test_coverage | |
- name: Download oracle sepolia integration test coverage file | |
uses: actions/download-artifact@v3 | |
with: | |
name: oracle_sepolia_integration_test_coverage | |
path: oracle_sepolia_integration_test_coverage | |
- name: Download vault integration test coverage file | |
uses: actions/download-artifact@v3 | |
with: | |
name: vault_integration_test_coverage | |
path: vault_integration_test_coverage | |
- name: Download periphery integration test coverage file | |
uses: actions/download-artifact@v3 | |
with: | |
name: periphery_integration_test_coverage | |
path: periphery_integration_test_coverage | |
- name: Download periphery arbitrum integration test coverage file | |
uses: actions/download-artifact@v3 | |
with: | |
name: periphery_arbitrum_integration_test_coverage | |
path: periphery_arbitrum_integration_test_coverage | |
- name: Install lcov | |
run: sudo apt-get update && sudo apt-get install lcov | |
- name: Combine integration test coverage | |
run: lcov -a oracle_integration_test_coverage/lcov.info | |
-a oracle_sepolia_integration_test_coverage/lcov.info | |
-a vault_integration_test_coverage/lcov.info | |
-a periphery_integration_test_coverage/lcov.info | |
-a periphery_arbitrum_integration_test_coverage/lcov.info | |
--output-file periphery_integration_coverage.info | |
- name: Upload combined integration test lcov file | |
uses: actions/upload-artifact@v3 | |
with: | |
name: periphery_integration_coverage | |
path: periphery_integration_coverage.info | |
- name: 'Periphery Integration Test Code Coverage Report' | |
uses: romeovs/[email protected] | |
with: | |
title: '[Periphery] Integration Test Coverage Report' | |
lcov-file: periphery_integration_coverage.info | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
delete-old-comments: true | |
if: ${{ github.event_name == 'pull_request' && env.PARSER_BROKEN != 'true' }} | |
# [PERIPHERY COMBINED COVERAGE] | |
periphery-test-coverage: | |
name: 'Periphery Combined Tests Coverage' | |
runs-on: ubuntu-latest | |
needs: [periphery-unit-test-coverage, periphery-integration-test-coverage] | |
steps: | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node }} | |
- uses: actions/checkout@v3 | |
- name: Download periphery unit test coverage file | |
uses: actions/download-artifact@v3 | |
with: | |
name: periphery_unit_coverage | |
path: periphery_unit_coverage | |
- name: Download periphery integration test coverage file | |
uses: actions/download-artifact@v3 | |
with: | |
name: periphery_integration_coverage | |
path: periphery_integration_coverage | |
- name: Install lcov | |
run: sudo apt-get update && sudo apt-get install lcov | |
- name: Combine test coverage | |
run: lcov -a periphery_unit_coverage/periphery_unit_coverage.info -a periphery_integration_coverage/periphery_integration_coverage.info --output-file combined_coverage.info | |
- name: 'Periphery Combined Test Code Coverage Report' | |
uses: romeovs/[email protected] | |
with: | |
title: '[Periphery] Combined Test Coverage Report' | |
lcov-file: combined_coverage.info | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
delete-old-comments: true | |
if: ${{ github.event_name == 'pull_request' && env.PARSER_BROKEN != 'true' }} |