name: Websockets CI on: push: paths-ignore: - "**.md" pull_request: paths-ignore: - "**.md" jobs: websocket_tests: runs-on: ubuntu-20.04 if: github.event_name != 'push' || github.event.ref == 'refs/heads/master' || github.event.repository.full_name != 'vlang/v' timeout-minutes: 121 env: VFLAGS: -cc tcc -no-retry-compilation steps: - uses: actions/checkout@v3 - name: Install dependencies run: sudo apt-get install --quiet -y libssl-dev - name: Build v run: | echo $VFLAGS sudo ln -s $PWD/thirdparty/tcc/tcc.exe /usr/local/bin/tcc ## TODO: remove make -j4 ./v -g -o v cmd/v - name: v doctor run: ./v doctor - name: Run websockets tests run: ./v -g test vlib/net/websocket/ ## Autobahn integrations tests - name: Run autobahn services run: docker-compose -f ${{github.workspace}}/vlib/net/websocket/tests/autobahn/docker-compose.yml up -d - name: Wait for the service to start run: sleep 10s - name: Build client test run: docker exec autobahn_client "/src/v" "/src/vlib/net/websocket/tests/autobahn/autobahn_client.v" - name: Run client test run: docker exec autobahn_client "/src/vlib/net/websocket/tests/autobahn/autobahn_client" - name: Build client wss test run: docker exec autobahn_client "/src/v" "/src/vlib/net/websocket/tests/autobahn/autobahn_client_wss.v" - name: Run client wss test run: docker exec autobahn_client "/src/vlib/net/websocket/tests/autobahn/autobahn_client_wss" - name: Run server test run: docker exec autobahn_server "wstest" "-m" "fuzzingclient" "-s" "/config/fuzzingclient.json" - name: Copy reports run: docker cp autobahn_server:/reports ${{github.workspace}}/reports - name: Copy reports wss run: docker cp autobahn_server_wss:/reports ${{github.workspace}}/reports_wss - name: Test success run: docker exec autobahn_server "python" "/check_results.py" - name: Test success WSS run: docker exec autobahn_server_wss "python" "/check_results.py" - name: Publish all reports uses: actions/upload-artifact@v2 with: name: full report path: ${{github.workspace}}/reports - name: Publish report client uses: actions/upload-artifact@v2 with: name: client path: ${{github.workspace}}/reports/clients/index.html - name: Publish report server uses: actions/upload-artifact@v2 with: name: server path: ${{github.workspace}}/reports/servers/index.html - name: Publish all reports WSS uses: actions/upload-artifact@v2 with: name: full report wss path: ${{github.workspace}}/reports_wss - name: Publish report client wss uses: actions/upload-artifact@v2 with: name: client wss path: ${{github.workspace}}/reports_wss/clients/index.html