File: integration.yml

package info (click to toggle)
golang-github-lucas-clemente-quic-go 0.55.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 4,376 kB
  • sloc: sh: 54; makefile: 14
file content (88 lines) | stat: -rw-r--r-- 4,506 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
on: [push, pull_request]

jobs:
  integration:
    strategy:
      fail-fast: false
      matrix:
        os: [ "ubuntu" ]
        go: [ "1.24.x", "1.25.x" ]
        race: [ false ]
        use32bit: [ false ]
        include:
          - os: "ubuntu"
            go: "1.25.x"
            race: true
          - os: "ubuntu"
            go: "1.25.x"
            use32bit: true
          - os: "windows"
            go: "1.25.x"
            race: false
          - os: "macos"
            go: "1.25.x"
            race: false
    runs-on: ${{ fromJSON(vars[format('INTEGRATION_RUNNER_{0}', matrix.os)] || format('"{0}-latest"', matrix.os)) }}
    timeout-minutes: 30
    defaults:
      run:
        shell: bash # by default Windows uses PowerShell, which uses a different syntax for setting environment variables
    env:
      DEBUG: false # set this to true to export qlogs and save them as artifacts
      TIMESCALE_FACTOR: 3
    name: "Integration (${{ matrix.os }}, Go ${{ matrix.go }}${{ matrix.race && ', race' || '' }}${{ matrix.use32bit && ', 32-bit' || '' }})"
    steps:
      - uses: actions/checkout@v5
      - uses: actions/setup-go@v6
        with:
          go-version: ${{ matrix.go }}
      - name: Install go-junit-report
        run: go install github.com/jstemmer/go-junit-report/v2@v2.1.0
      - name: Set qlogger
        if: env.DEBUG == 'true'
        run: echo "QLOGFLAG= -qlog" >> $GITHUB_ENV
      - name: Enable race detector
        if: ${{ matrix.race }}
        run: echo "RACEFLAG= -race" >> $GITHUB_ENV
      - name: Enable 32-bit build 
        if: ${{ matrix.use32bit }}
        run: echo "GOARCH=386" >> $GITHUB_ENV
      - run: go version
      - name: Run tools tests
        run: go test ${{ env.RACEFLAG }} -v -timeout 30s -shuffle=on ./integrationtests/tools/... 2>&1 | go-junit-report -set-exit-code -iocopy -out report_tools.xml
      - name: Run version negotiation tests
        run: go test ${{ env.RACEFLAG }} -v -timeout 30s -shuffle=on ./integrationtests/versionnegotiation ${{ env.QLOGFLAG }} 2>&1 | go-junit-report -set-exit-code -iocopy -out report_versionnegotiation.xml
      - name: Run self tests, using QUIC v1
        if: success() || failure() # run this step even if the previous one failed
        run: go test ${{ env.RACEFLAG }} -v -timeout 5m -shuffle=on ./integrationtests/self -version=1 ${{ env.QLOGFLAG }} 2>&1 | go-junit-report -set-exit-code -iocopy -out report_self.xml
      - name: Run self tests, using QUIC v2
        if: ${{ !matrix.race && (success() || failure()) }} # run this step even if the previous one failed
        run: go test ${{ env.RACEFLAG }} -v -timeout 5m -shuffle=on ./integrationtests/self -version=2 ${{ env.QLOGFLAG }} 2>&1 | go-junit-report -set-exit-code -iocopy -out report_self_v2.xml
      - name: Run self tests, with GSO disabled
        if: ${{ matrix.os == 'ubuntu' && (success() || failure()) }} # run this step even if the previous one failed
        env:
          QUIC_GO_DISABLE_GSO: true
        run: go test ${{ env.RACEFLAG }} -v -timeout 5m -shuffle=on ./integrationtests/self -version=1 ${{ env.QLOGFLAG }} 2>&1 | go-junit-report -set-exit-code -iocopy -out report_self_nogso.xml
      - name: Run self tests, with ECN disabled
        if: ${{ !matrix.race && matrix.os == 'ubuntu' && (success() || failure()) }} # run this step even if the previous one failed
        env:
          QUIC_GO_DISABLE_ECN: true
        run: go test ${{ env.RACEFLAG }} -v -timeout 5m -shuffle=on ./integrationtests/self -version=1 ${{ env.QLOGFLAG }} 2>&1 | go-junit-report -set-exit-code -iocopy -out report_self_noecn.xml
      - name: Run benchmarks
        if: ${{ !matrix.race }}
        run: go test -v -run=^$ -timeout 5m -shuffle=on -bench=. ./integrationtests/self
      - name: save qlogs
        if: ${{ always() && env.DEBUG == 'true' }}
        uses: actions/upload-artifact@v4
        with:
          name: qlogs-${{ matrix.os }}-go${{ matrix.go }}-race${{ matrix.race }}${{ matrix.use32bit && '-32bit' || '' }}
          path: integrationtests/self/*.qlog
          retention-days: 7
      - name: Upload report to Codecov
        if: ${{ !cancelled() && !matrix.race && !matrix.use32bit }}
        uses: codecov/test-results-action@v1
        with:
          name: Unit tests
          files: report_tools.xml,report_versionnegotiation.xml,report_self.xml,report_self_v2.xml,report_self_nogso.xml,report_self_noecn.xml
          env_vars: OS,GO
          token: ${{ secrets.CODECOV_TOKEN }}