github.com/quic-go/quic-go@v0.44.0/.github/workflows/integration.yml (about) 1 on: [push, pull_request] 2 3 jobs: 4 integration: 5 strategy: 6 fail-fast: false 7 matrix: 8 os: [ "ubuntu" ] 9 go: [ "1.21.x", "1.22.x" ] 10 include: 11 - os: "windows" 12 go: "1.21.x" 13 - os: "macos" 14 go: "1.21.x" 15 runs-on: ${{ fromJSON(vars[format('INTEGRATION_RUNNER_{0}', matrix.os)] || format('"{0}-latest"', matrix.os)) }} 16 defaults: 17 run: 18 shell: bash # by default Windows uses PowerShell, which uses a different syntax for setting environment variables 19 env: 20 DEBUG: false # set this to true to export qlogs and save them as artifacts 21 TIMESCALE_FACTOR: 3 22 name: Integration Tests (${{ matrix.os }}, Go ${{ matrix.go }}) 23 steps: 24 - uses: actions/checkout@v4 25 - uses: actions/setup-go@v5 26 with: 27 go-version: ${{ matrix.go }} 28 - run: go version 29 - name: set qlogger 30 if: env.DEBUG == 'true' 31 run: echo "QLOGFLAG= -qlog" >> $GITHUB_ENV 32 - name: Run other tests 33 run: | 34 go run github.com/onsi/ginkgo/v2/ginkgo -r -v -randomize-all -randomize-suites -trace -skip-package self,versionnegotiation integrationtests 35 go run github.com/onsi/ginkgo/v2/ginkgo -r -v -randomize-all -randomize-suites -trace integrationtests/versionnegotiation -- ${{ env.QLOGFLAG }} 36 - name: Run self tests, using QUIC v1 37 if: success() || failure() # run this step even if the previous one failed 38 run: go run github.com/onsi/ginkgo/v2/ginkgo -r -v -randomize-all -randomize-suites -trace integrationtests/self -- -version=1 ${{ env.QLOGFLAG }} 39 - name: Run self tests, using QUIC v2 40 if: success() || failure() # run this step even if the previous one failed 41 run: go run github.com/onsi/ginkgo/v2/ginkgo -r -v -randomize-all -randomize-suites -trace integrationtests/self -- -version=2 ${{ env.QLOGFLAG }} 42 - name: Run self tests, with GSO disabled 43 if: ${{ matrix.os == 'ubuntu' && (success() || failure()) }} # run this step even if the previous one failed 44 env: 45 QUIC_GO_DISABLE_GSO: true 46 run: go run github.com/onsi/ginkgo/v2/ginkgo -r -v -randomize-all -randomize-suites -trace integrationtests/self -- -version=1 ${{ env.QLOGFLAG }} 47 - name: Run self tests, with ECN disabled 48 if: ${{ matrix.os == 'ubuntu' && (success() || failure()) }} # run this step even if the previous one failed 49 env: 50 QUIC_GO_DISABLE_ECN: true 51 run: go run github.com/onsi/ginkgo/v2/ginkgo -r -v -randomize-all -randomize-suites -trace integrationtests/self -- -version=1 ${{ env.QLOGFLAG }} 52 - name: Run tests (32 bit) 53 if: ${{ matrix.os != 'macos' && (success() || failure()) }} # run this step even if the previous one failed 54 env: 55 GOARCH: 386 56 run: | 57 go run github.com/onsi/ginkgo/v2/ginkgo -r -v -randomize-all -randomize-suites -trace -skip-package self,versionnegotiation integrationtests 58 go run github.com/onsi/ginkgo/v2/ginkgo -r -v -randomize-all -randomize-suites -trace integrationtests/versionnegotiation -- ${{ env.QLOGFLAG }} 59 go run github.com/onsi/ginkgo/v2/ginkgo -r -v -randomize-all -randomize-suites -trace integrationtests/self -- ${{ env.QLOGFLAG }} 60 - name: Run benchmarks 61 run: go test -v -run=^$ -bench=. ./integrationtests/self 62 - name: save qlogs 63 if: ${{ always() && env.DEBUG == 'true' }} 64 uses: actions/upload-artifact@v4 65 with: 66 name: qlogs-${{ matrix.os }}-go${{ matrix.go }} 67 path: integrationtests/self/*.qlog 68 retention-days: 7