github.com/Psiphon-Labs/psiphon-tunnel-core@v2.0.28+incompatible/.github/workflows/tests.yml (about)

     1  name: CI
     2  
     3  on:
     4    workflow_dispatch:
     5    push:
     6      branches:
     7        - master
     8        - staging-client
     9        - staging-server
    10  
    11  jobs:
    12    run_tests:
    13  
    14      strategy:
    15        fail-fast: false
    16        matrix:
    17          os: [ "ubuntu" ]
    18          go: [ "1.17.13" ]
    19          test-type: [ "detector", "coverage", "memory" ]
    20  
    21      runs-on: ${{ matrix.os }}-latest
    22  
    23      name: psiphon-tunnel-core ${{ matrix.test-type }} tests on ${{ matrix.os}}, Go ${{ matrix.go }}
    24  
    25      permissions:
    26        checks: write
    27        contents: read
    28  
    29      env:
    30        GOPATH: ${{ github.workspace }}/go
    31        GO111MODULE: off
    32  
    33      steps:
    34  
    35        - name: Clone repository
    36          uses: actions/checkout@v2
    37          with:
    38            path: ${{ github.workspace }}/go/src/github.com/Psiphon-Labs/psiphon-tunnel-core
    39  
    40        - name: Install Go
    41          uses: actions/setup-go@v2
    42          with:
    43            go-version: ${{ matrix.go }}
    44  
    45        - name: Install networking components
    46          run: |
    47            sudo apt-get update
    48            sudo apt-get install libnetfilter-queue-dev
    49            sudo apt-get install conntrack
    50  
    51        - name: Install coverage tools
    52          if: ${{ matrix.test-type == 'coverage' }}
    53          run: |
    54            go get github.com/axw/gocov/gocov
    55            go get github.com/modocache/gover
    56            go get github.com/mattn/goveralls
    57            go get golang.org/x/tools/cmd/cover
    58  
    59        - name: Check environment
    60          run: |
    61            echo "GitHub workspace: $GITHUB_WORKSPACE"
    62            echo "Working directory: `pwd`"
    63            echo "GOROOT: $GOROOT"
    64            echo "GOPATH: $GOPATH"
    65            echo "Go version: `go version`"
    66  
    67        - name: Pave config files
    68          env:
    69            CONTROLLER_TEST_CONFIG: ${{ secrets.CONTROLLER_TEST_CONFIG }}
    70          run: |
    71            cd ${{ github.workspace }}/go/src/github.com/Psiphon-Labs/psiphon-tunnel-core
    72            echo "$CONTROLLER_TEST_CONFIG" > ./psiphon/controller_test.config
    73  
    74        # TODO: fix and re-enable test
    75        # sudo -E env "PATH=$PATH" go test -v -race ./psiphon/common/tun
    76        - name: Run tests with data race detector
    77          if: ${{ matrix.test-type == 'detector' }}
    78          run: |
    79            cd ${{ github.workspace }}/go/src/github.com/Psiphon-Labs/psiphon-tunnel-core
    80            go test -v -race ./psiphon/common
    81            go test -v -race ./psiphon/common/accesscontrol
    82            go test -v -race ./psiphon/common/crypto/ssh
    83            go test -v -race ./psiphon/common/fragmentor
    84            go test -v -race ./psiphon/common/monotime
    85            go test -v -race ./psiphon/common/obfuscator
    86            go test -v -race ./psiphon/common/osl
    87            sudo -E env "PATH=$PATH" go test -v -race -tags "PSIPHON_RUN_PACKET_MANIPULATOR_TEST" ./psiphon/common/packetman
    88            go test -v -race ./psiphon/common/parameters
    89            go test -v -race ./psiphon/common/protocol
    90            go test -v -race ./psiphon/common/quic
    91            go test -v -race ./psiphon/common/resolver
    92            go test -v -race ./psiphon/common/tactics
    93            go test -v -race ./psiphon/common/transforms
    94            go test -v -race ./psiphon/common/values
    95            go test -v -race ./psiphon/common/wildcard
    96            go test -v -race ./psiphon/transferstats
    97            sudo -E env "PATH=$PATH" go test -v -race -tags "PSIPHON_RUN_PACKET_MANIPULATOR_TEST" ./psiphon/server
    98            go test -v -race ./psiphon/server/psinet
    99            go test -v -race ./psiphon
   100            go test -v -race ./ClientLibrary/clientlib
   101            go test -v -race ./Server/logging/analysis
   102  
   103        # TODO: fix and re-enable test
   104        # sudo -E env "PATH=$PATH" go test -v -covermode=count -coverprofile=tun.coverprofile ./psiphon/common/tun
   105        - name: Run tests with coverage
   106          env:
   107            COVERALLS_TOKEN: ${{ secrets.GITHUB_TOKEN }}
   108          if: ${{ matrix.test-type == 'coverage' && github.repository == 'Psiphon-Labs/psiphon-tunnel-core' }}
   109          run: |
   110            cd ${{ github.workspace }}/go/src/github.com/Psiphon-Labs/psiphon-tunnel-core
   111            go test -v -covermode=count -coverprofile=common.coverprofile ./psiphon/common
   112            go test -v -covermode=count -coverprofile=accesscontrol.coverprofile ./psiphon/common/accesscontrol
   113            go test -v -covermode=count -coverprofile=ssh.coverprofile ./psiphon/common/crypto/ssh
   114            go test -v -covermode=count -coverprofile=fragmentor.coverprofile ./psiphon/common/fragmentor
   115            go test -v -covermode=count -coverprofile=monotime.coverprofile ./psiphon/common/monotime
   116            go test -v -covermode=count -coverprofile=obfuscator.coverprofile ./psiphon/common/obfuscator
   117            go test -v -covermode=count -coverprofile=osl.coverprofile ./psiphon/common/osl
   118            sudo -E env "PATH=$PATH" go test -v -covermode=count -coverprofile=packetman.coverprofile -tags "PSIPHON_RUN_PACKET_MANIPULATOR_TEST" ./psiphon/common/packetman
   119            go test -v -covermode=count -coverprofile=parameters.coverprofile ./psiphon/common/parameters
   120            go test -v -covermode=count -coverprofile=protocol.coverprofile ./psiphon/common/protocol
   121            go test -v -covermode=count -coverprofile=quic.coverprofile ./psiphon/common/quic
   122            go test -v -covermode=count -coverprofile=resolver.coverprofile ./psiphon/common/resolver
   123            go test -v -covermode=count -coverprofile=tactics.coverprofile ./psiphon/common/tactics
   124            go test -v -covermode=count -coverprofile=transforms.coverprofile ./psiphon/common/transforms
   125            go test -v -covermode=count -coverprofile=values.coverprofile ./psiphon/common/values
   126            go test -v -covermode=count -coverprofile=wildcard.coverprofile ./psiphon/common/wildcard
   127            go test -v -covermode=count -coverprofile=transferstats.coverprofile ./psiphon/transferstats
   128            sudo -E env "PATH=$PATH" go test -v -covermode=count -coverprofile=server.coverprofile -tags "PSIPHON_RUN_PACKET_MANIPULATOR_TEST" ./psiphon/server
   129            go test -v -covermode=count -coverprofile=psinet.coverprofile ./psiphon/server/psinet
   130            go test -v -covermode=count -coverprofile=psiphon.coverprofile ./psiphon
   131            go test -v -covermode=count -coverprofile=clientlib.coverprofile ./ClientLibrary/clientlib
   132            go test -v -covermode=count -coverprofile=analysis.coverprofile ./Server/logging/analysis
   133            $GOPATH/bin/gover
   134            $GOPATH/bin/goveralls -coverprofile=gover.coverprofile -service=github -repotoken "$COVERALLS_TOKEN"
   135  
   136        - name: Run memory tests
   137          if: ${{ matrix.test-type == 'memory' }}
   138          run: |
   139            cd ${{ github.workspace }}/go/src/github.com/Psiphon-Labs/psiphon-tunnel-core
   140            go test -v ./psiphon/memory_test -run TestReconnectTunnel
   141            go test -v ./psiphon/memory_test -run TestRestartController