-
Notifications
You must be signed in to change notification settings - Fork 243
Expand file tree
/
Copy pathhttpclient-scenarios.yml
More file actions
100 lines (90 loc) · 4.71 KB
/
httpclient-scenarios.yml
File metadata and controls
100 lines (90 loc) · 4.71 KB
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
# HttpClient scenarios
parameters:
- name: arguments
type: string
default: ''
- name: connection
type: string
default: ''
- name: condition
type: string
default: 'true'
- name: getScenarios
type: object
default:
- displayName: "GET"
arguments: --scenario httpclient-kestrel-get $(httpClientJobs) --variable useHttpMessageInvoker=true --property server=kestrel --property client=dotnetinvoker --property method=get --client.options.collectCounters true
- name: postScenarios
type: object
default:
- displayName: "POST"
arguments: --scenario httpclient-kestrel-post $(httpClientJobs) --variable useHttpMessageInvoker=true --property server=kestrel --property client=dotnetinvoker --property method=post --client.options.collectCounters true
- name: httpVersion
type: object
default:
- displayName: "HTTP/1.1"
arguments: --variable httpVersion=1.1 --variable useHttps=true --property httpversion=h1
- displayName: "HTTP/2.0"
arguments: --variable httpVersion=2.0 --variable useHttps=true --variable http20EnableMultipleConnections=false --property httpversion=h2
- displayName: "HTTP/2.0 (mult conn)"
arguments: --variable httpVersion=2.0 --variable useHttps=true --variable http20EnableMultipleConnections=true --property httpversion=h2multconn
- displayName: "HTTP/3.0"
arguments: --variable httpVersion=3.0 --variable useHttps=true --property httpversion=h3
- name: clientsxThreads
type: object
default:
- displayName: "Concurrency: 1x10"
arguments: --variable numberOfHttpClients=1 --variable concurrencyPerHttpClient=10 --property clientsxthreads=1x10
- displayName: "Concurrency: 1x100"
arguments: --variable numberOfHttpClients=1 --variable concurrencyPerHttpClient=100 --property clientsxthreads=1x100
- name: response
type: object
default:
- displayName: "Response: 256 B"
arguments: --variable responseSize=256 --property response=256b
- displayName: "Response: 8 KB"
arguments: --variable responseSize=8192 --property response=8kb
- name: requestContent
type: object
default:
- displayName: "Request Content: 8 KB"
arguments: --variable requestContentSize=8192 --property requestcontent=8kb
steps:
# GET scenarios
- ${{ each s in parameters.getScenarios }}:
- ${{ each version in parameters.httpVersion }}:
- ${{ each ct in parameters.clientsxThreads }}:
- ${{ each response in parameters.response }}:
- task: PublishToAzureServiceBus@1
condition: succeededOrFailed()
timeoutInMinutes: 10
displayName: ${{ version.displayName }} ${{ s.displayName }} ${{ response.displayName }} ${{ ct.displayName }}
inputs:
connectedServiceName: ${{ parameters.connection }}
waitForCompletion: true
useDataContractSerializer: "false"
messageBody: |
{
"condition": "(${{ parameters.condition }}) && ((new Date().getUTCHours() - 7 + 24) % 24 >= 13)",
"name": "crank",
"args": [ "--client.framework net9.0 --server.framework net9.0 --command-line-property --table HttpClientBenchmarks --sql SQL_CONNECTION_STRING --cert-tenant-id SQL_SERVER_TENANTID --cert-client-id SQL_SERVER_CLIENTID --cert-path SQL_SERVER_CERT_PATH --cert-sni --chart --session $(session) ${{ parameters.arguments }} --no-metadata --no-measurements ${{ s.arguments }} ${{ version.arguments }} ${{ ct.arguments }} ${{ response.arguments }}" ]
}
# POST scenarios
- ${{ each s in parameters.postScenarios }}:
- ${{ each version in parameters.httpVersion }}:
- ${{ each ct in parameters.clientsxThreads }}:
- ${{ each content in parameters.requestContent }}:
- task: PublishToAzureServiceBus@1
condition: succeededOrFailed()
timeoutInMinutes: 10
displayName: ${{ version.displayName }} ${{ s.displayName }} ${{ content.displayName }} ${{ ct.displayName }}
inputs:
connectedServiceName: ${{ parameters.connection }}
waitForCompletion: true
useDataContractSerializer: "false"
messageBody: |
{
"condition": "(${{ parameters.condition }}) && ((new Date().getUTCHours() - 7 + 24) % 24 >= 13)",
"name": "crank",
"args": [ "--client.framework net9.0 --server.framework net9.0 --command-line-property --table HttpClientBenchmarks --sql SQL_CONNECTION_STRING --cert-tenant-id SQL_SERVER_TENANTID --cert-client-id SQL_SERVER_CLIENTID --cert-path SQL_SERVER_CERT_PATH --cert-sni --chart --session $(session) ${{ parameters.arguments }} --no-metadata --no-measurements ${{ s.arguments }} ${{ version.arguments }} ${{ ct.arguments }} ${{ content.arguments }}" ]
}