| name: test_offline |
| |
| on: |
| push: |
| pull_request: |
| workflow_dispatch: |
| inputs: |
| test_linux: |
| description: 'Test on Linux' |
| type: boolean |
| default: true |
| |
| concurrency: |
| group: ${{ github.workflow }}-${{ github.ref || github.run_id }} |
| cancel-in-progress: true |
| |
| env: |
| GTEST_FILTER: "-*.*_Online" |
| |
| jobs: |
| ubuntu: |
| runs-on: ubuntu-latest |
| if: > |
| (github.event_name == 'push') || |
| (github.event_name == 'pull_request' && |
| github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name) || |
| (github.event_name == 'workflow_dispatch' && github.event.inputs.test_linux == 'true') |
| strategy: |
| matrix: |
| tls_backend: [openssl, no-tls] |
| name: ubuntu (${{ matrix.tls_backend }}) |
| steps: |
| - name: checkout |
| uses: actions/checkout@v4 |
| - name: install common libraries |
| run: | |
| sudo apt-get update |
| sudo apt-get install -y libcurl4-openssl-dev zlib1g-dev libbrotli-dev libzstd-dev |
| - name: install OpenSSL |
| if: matrix.tls_backend == 'openssl' |
| run: sudo apt-get install -y libssl-dev |
| - name: disable network |
| run: | |
| sudo iptables -A OUTPUT -o lo -j ACCEPT |
| sudo iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT |
| sudo iptables -A OUTPUT -j REJECT |
| sudo ip6tables -A OUTPUT -o lo -j ACCEPT |
| sudo ip6tables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT |
| sudo ip6tables -A OUTPUT -j REJECT |
| - name: build and run tests (OpenSSL) |
| if: matrix.tls_backend == 'openssl' |
| run: cd test && make test_split && make test_openssl_parallel |
| env: |
| LSAN_OPTIONS: suppressions=lsan_suppressions.txt |
| - name: build and run tests (No TLS) |
| if: matrix.tls_backend == 'no-tls' |
| run: cd test && make test_no_tls_parallel |
| - name: restore network |
| if: always() |
| run: | |
| sudo iptables -F OUTPUT |
| sudo ip6tables -F OUTPUT |