forked from microsoft/msquic
-
Notifications
You must be signed in to change notification settings - Fork 0
133 lines (129 loc) · 4.92 KB
/
wan-perf.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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
name: WAN Perf
on:
push:
branches:
- main
paths:
- .github/workflows/wan-perf.yml
- src/core/*
- src/platform/*
- src/perf/*
pull_request:
branches:
- main
paths:
- .github/workflows/wan-perf.yml
- src/core/*
- src/platform/*
- src/perf/*
- submodules/openssl/*
concurrency:
# Cancel any workflow currently in progress for the same PR.
# Allow running concurrently with any other commits.
group: wanperf-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: true
permissions: read-all
jobs:
build-perf:
permissions:
contents: read # for actions/checkout to fetch code
name: Build Perf
runs-on: windows-latest
steps:
- name: Checkout repository
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
- name: Prepare Machine
shell: pwsh
run: scripts/prepare-machine.ps1 -ForBuild -DisableTest
- name: Prepare Machine
shell: pwsh
run: scripts/build.ps1 -Config Release -DisableTest -DisableTools
- uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3
with:
name: bin
path: |
artifacts/bin
!artifacts/bin/**/*.ilk
!artifacts/bin/**/*.cer
!artifacts/bin/**/*.exp
!artifacts/bin/**/*.lastcodeanalysissucceeded
!artifacts/bin/**/*.pgd
!artifacts/bin/**/*.lib
wan-perf:
permissions:
contents: read # for actions/checkout to fetch code
name: Run Tests
runs-on: windows-2022
needs: build-perf
env:
seed: 41473a2e60b6958500ec0add7dcfb9 # TODO - Randomize?
iterations: 3
duration: 10000
pacing: 1
reorder: "(0,1000)"
delay: "(0,5,10)"
congestionControl: "(\"cubic\", \"bbr\")"
loss: "(0,1000,10000)"
strategy:
fail-fast: false
matrix:
rate: [10, 50, 100, 1000]
rtt: [5, 50, 200]
queueRatio: [0.2, 1, 5]
exclude:
- rate: 5
rtt: 5
queueRatio: 0.2 # Results in sub-packet limit
- rate: 1000
rtt: 500
queueRatio: 5 # Exceeds QueueLimitPackets limit of 100000
steps:
- name: Checkout repository
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
- name: Prepare Machine
shell: pwsh
run: scripts/prepare-machine.ps1 -ForTest -InstallDuoNic
- uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427
with:
name: bin
path: artifacts/bin
- name: Run WAN Perf (QUIC only)
if: ${{ github.event_name == 'pull_request' }}
shell: pwsh
run: scripts/emulated-performance.ps1 -Debug -Protocol QUIC -LogProfile Performance.Light -NoDateLogDir -NumIterations ${{ env.iterations }} -DurationMs ${{ env.duration }} -Pacing ${{ env.pacing }} -BottleneckMbps ${{ matrix.rate }} -RttMs ${{ matrix.rtt }} -BottleneckQueueRatio ${{ matrix.queueRatio }} -RandomLossDenominator ${{ env.loss }} -RandomReorderDenominator ${{ env.reorder }} -ReorderDelayDeltaMs ${{ env.delay }} -BaseRandomSeed ${{ env.seed }} -CongestionControl ${{ env.congestionControl }}
- name: Run WAN Perf (QUIC + TCP)
if: ${{ github.event_name != 'pull_request' }}
shell: pwsh
run: scripts/emulated-performance.ps1 -Debug -Protocol ('QUIC','TCPTLS') -LogProfile Performance.Light -NoDateLogDir -NumIterations ${{ env.iterations }} -DurationMs ${{ env.duration }} -Pacing ${{ env.pacing }} -BottleneckMbps ${{ matrix.rate }} -RttMs ${{ matrix.rtt }} -BottleneckQueueRatio ${{ matrix.queueRatio }} -RandomLossDenominator ${{ env.loss }} -RandomReorderDenominator ${{ env.reorder }} -ReorderDelayDeltaMs ${{ env.delay }} -BaseRandomSeed ${{ env.seed }} -CongestionControl ${{ env.congestionControl }}
- name: Upload Results
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3
with:
name: data
path: artifacts/PerfDataResults/windows/x64_Release_schannel/WAN/*.json
- name: Upload Logs
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3
with:
name: ${{ format('logs.{0}mbps.{1}ms', matrix.rate, matrix.rtt) }}
path: artifacts/logs/wanperf/*.etl
merge-data:
permissions: write-all
name: Merge Results
runs-on: windows-2022
needs: wan-perf
steps:
- name: Checkout repository
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
with:
fetch-depth: 0
- uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427
with:
name: data
path: artifacts/PerfDataResults/windows/x64_Release_schannel/WAN
- name: Merge Data Files
shell: pwsh
run: scripts/emulated-performance.ps1 -MergeDataFiles
- name: Upload CSV
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3
with:
name: csv
path: artifacts\PerfDataResults\windows\x64_Release_schannel\WAN\wan_data.csv