-
Notifications
You must be signed in to change notification settings - Fork 17
83 lines (75 loc) · 3.48 KB
/
datachannel_echo-test.yml
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
name: WebRTC Data Channel Interoperability Test
on:
push:
branches:
- master
pull_request:
branches:
- master
repository_dispatch:
types: [datachannel-test-command]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
# Job Description: Performs the Data Channel Test between each combination of the client and server for each library.
interop-tests:
runs-on: ubuntu-latest
strategy:
matrix:
server: ["libdatachannel", "sipsorcery", "werift"]
client: ["libdatachannel", "sipsorcery", "werift"]
services:
echo-test-server:
image: ghcr.io/sipsorcery/${{ matrix.server }}-webrtc-echo
credentials:
username: ${{ github.actor }}
password: ${{ secrets.CR_PAT }}
#ports:
# - 8080:8080
options: "--name echo-server"
steps:
- name: Set up result array
run: echo "RESULTS=[]" >> $GITHUB_ENV
- name: Data Channel test for server ${{ matrix.server }} and ${{ matrix.client }} client
id: check_connection
run: |
docker run --entrypoint "/client.sh" --network ${{ job.container.network }} ghcr.io/sipsorcery/${{ matrix.client }}-webrtc-echo "-s http://echo-server:8080/offer -t 1"
result=$?
echo "Check connection for ${{ matrix.server }} server and ${{ matrix.client }} client result $result."
echo "::set-output name=TEST_RESULT::$result"
continue-on-error: true
- name: Record result
run: |
echo "Result for ${{ matrix.server }} server and ${{ matrix.client }} client, outcome ${{ steps.check_connection.outcome }}, result ${{ steps.check_connection.outputs.TEST_RESULT }}."
echo "RESULTS+=['${{ matrix.server }}','${{ matrix.client }}','${{ steps.check_connection.outputs.TEST_RESULT }}']" >> $GITHUB_ENV
# Job Description: Collates the results of the interop tests into a mark down table.
collate:
runs-on: ubuntu-latest
needs: [interop-tests]
steps:
- uses: actions/checkout@v2
with:
ref: testresults
- name: Create results file from environment variable
run: |
echo "Collating results from ${{ env.RESULTS }}."
echo "| Server | Client | Test Result |" > DataChannel_Echo_test_results.md
echo "|--------|--------|-------------|" >> DataChannel_Echo_test_results.md
# Read from the RESULTS environment variable
echo "Collecting results..."
IFS=',' read -r -a results_array <<< "${{ env.RESULTS }}"
for result in "${results_array[@]}"; do
echo "| ${result[0]} | ${result[1]} | ${result[2]} |" >> DataChannel_Echo_test_results.md
done
cat DataChannel_Echo_test_results.md
- name: Commit the results to the git repository
if: github.event_name != 'pull_request'
run: |
git config user.name github-actions
git config user.email [email protected]
git pull
#git add DataChannel_Echo_test_results.md DataChannel_Echo_test_results.png
#git commit DataChannel_Echo_test_results.md DataChannel_Echo_test_results.png -m "Automated data channel echo test results."
#git add DataChannel_Echo_test_results.md
git commit DataChannel_Echo_test_results.md -m "Automated data channel echo test results."
git push