Skip to content

Commit ca56c42

Browse files
[Service Bus] Add perf pipeline (Azure#23819)
* starter code * service-bus perf pipeline * checkpoint * Revert "checkpoint" This reverts commit 057e5e8. * test update * copy stress resource * Update sdk/servicebus/service-bus/perf.yml * body - message * Improve defaults in perf.yml * Fix typo in regex * Add receive-batch to tests * ["inherit", "inherit", "inherit", "ipc"] * close the sender too * Update sdk/test-utils/perf/src/multicore.ts * changelog * Revert "Update sdk/test-utils/perf/src/multicore.ts" This reverts commit 2717a00. * Revert "changelog" This reverts commit 2e3bdc2. * remove console.log * Revert "["inherit", "inherit", "inherit", "ipc"]" This reverts commit 829ea40. Co-authored-by: Mike Harder <mharder@microsoft.com>
1 parent 9d3364c commit ca56c42

File tree

7 files changed

+86
-8
lines changed

7 files changed

+86
-8
lines changed

sdk/servicebus/perf-tests/service-bus/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@ To test sending messages in batches
1313

1414
> `npm run perf-test:node -- BatchSendTest --warmup 2 --duration 7 --parallel 2`
1515
16-
> `npm run perf-test:node -- BatchSendTest --warmup 1 --duration 25 --iterations 2 --parallel 32 --size 10240 --numberOfMessages 10`
16+
> `npm run perf-test:node -- BatchSendTest --warmup 1 --duration 25 --iterations 2 --parallel 32 --size 10240 --batch-size 10`
1717
1818
To test `receiveMessages` - receiving messages in batches
1919

20-
> `npm run perf-test:node -- BatchReceiveTest --duration 5 --size 2000 --number-of-messages 10000 --size-in-bytes 2000 --max-message-count 50`
20+
> `npm run perf-test:node -- BatchReceiveTest --duration 5 --number-of-messages 10000 --message-size 2000 --max-message-count 50`
2121
2222
To test `subscribe` - receiving a stream of messages
2323

24-
> `npm run perf-test:node -- SubscribeTest --duration 5 --size 2000 --mcc 1000`
24+
> `npm run perf-test:node -- SubscribeTest --duration 5 --message-size 2000 --messages 10000 --mcc 1000`
2525
2626
_Note: For more default options, refer [Perf-Framework-Default-Options](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/test-utils/perf/README.md#keyconcepts)._

sdk/servicebus/perf-tests/service-bus/test/receiveBatch.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,14 @@ export class BatchReceiveTest extends ServiceBusTest<ReceiverOptions> {
2424
required: true,
2525
description: "Size of each message body in bytes",
2626
shortName: "size",
27-
longName: "size-in-bytes",
27+
longName: "message-size",
2828
defaultValue: 2000,
2929
},
3030
"max-message-count": {
3131
required: true,
3232
description: "Max number of messages to receive",
3333
shortName: "max-receive",
34+
longName: "max-message-count",
3435
defaultValue: 50,
3536
},
3637
};
@@ -86,6 +87,5 @@ export async function sendMessages(
8687
);
8788
await sender.sendMessages(currentBatch);
8889
count = count + currentBatch.count;
89-
console.log(`${count} messages sent so far`);
9090
}
9191
}

sdk/servicebus/perf-tests/service-bus/test/sendBatch.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ export class BatchSendTest extends ServiceBusTest<SendTestOptions> {
2525
required: true,
2626
description: "Number of messages per send",
2727
shortName: "num",
28-
longName: "numberOfMessages",
28+
longName: "batch-size",
2929
defaultValue: 10,
3030
},
3131
};

sdk/servicebus/perf-tests/service-bus/test/subscribe.spec.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ export class SubscribeTest extends EventPerfTest<ReceiverOptions> {
3232
required: true,
3333
description: "Size of each message body in bytes",
3434
shortName: "size",
35-
longName: "size-in-bytes",
35+
longName: "message-size",
3636
defaultValue: 2000,
3737
},
3838
"max-concurrent-calls": {
@@ -64,6 +64,7 @@ export class SubscribeTest extends EventPerfTest<ReceiverOptions> {
6464
} = this.parsedOptions;
6565

6666
await sendMessages(sender, numberOfMessages, messageBodySize);
67+
await sender.close();
6768
}
6869

6970
setup() {

sdk/servicebus/perf-tests/service-bus/tsconfig.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"extends": "../../../../tsconfig.package",
33
"compilerOptions": {
44
"module": "commonjs",
5-
"noEmit": true
5+
"outDir": "./dist-esm",
66
},
77
"compileOnSave": true,
88
"exclude": ["node_modules"],
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
@description('The base resource name.')
2+
param baseName string = resourceGroup().name
3+
4+
@description('The client OID to grant access to test resources.')
5+
param testApplicationOid string
6+
7+
var apiVersion = '2017-04-01'
8+
var location = resourceGroup().location
9+
var authorizationRuleName_var = '${baseName}/RootManageSharedAccessKey'
10+
11+
resource servicebus 'Microsoft.ServiceBus/namespaces@2018-01-01-preview' = {
12+
name: baseName
13+
location: location
14+
sku: {
15+
name: 'Standard'
16+
tier: 'Standard'
17+
}
18+
properties: {
19+
zoneRedundant: false
20+
}
21+
}
22+
23+
resource authorizationRuleName 'Microsoft.ServiceBus/namespaces/AuthorizationRules@2015-08-01' = {
24+
name: authorizationRuleName_var
25+
location: location
26+
properties: {
27+
rights: [
28+
'Listen'
29+
'Manage'
30+
'Send'
31+
]
32+
}
33+
dependsOn: [
34+
servicebus
35+
]
36+
}
37+
38+
output SERVICEBUS_CONNECTION_STRING string = listKeys(resourceId('Microsoft.ServiceBus/namespaces/authorizationRules', baseName, 'RootManageSharedAccessKey'), apiVersion).primaryConnectionString
39+
output SERVICEBUS_ENDPOINT string = replace(servicebus.properties.serviceBusEndpoint, ':443/', '')
40+
output testApplicationOid string = testApplicationOid
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
parameters:
2+
- name: operatingSystems
3+
displayName: OperatingSystems (list of operating systems to run)
4+
type: string
5+
default: 'Linux'
6+
- name: packageVersions
7+
displayName: PackageVersions (regex of package versions to run)
8+
type: string
9+
default: '7|source'
10+
- name: tests
11+
displayName: Tests (regex of tests to run)
12+
type: string
13+
default: '^(send-event-batch|subscribe|receive-batch)$'
14+
- name: arguments
15+
displayName: Arguments (regex of arguments to run)
16+
type: string
17+
default: '.*'
18+
- name: iterations
19+
displayName: Iterations (times to run each test)
20+
type: number
21+
default: '5'
22+
- name: additionalArguments
23+
displayName: AdditionalArguments (passed to PerfAutomation)
24+
type: string
25+
default: ' '
26+
27+
extends:
28+
template: /eng/pipelines/templates/jobs/perf.yml
29+
parameters:
30+
operatingSystems: ${{ parameters.operatingSystems }}
31+
serviceDirectory: servicebus/service-bus
32+
services: "^servicebus$"
33+
packageVersions: ${{ parameters.packageVersions }}
34+
tests: ${{ parameters.tests }}
35+
arguments: ${{ parameters.arguments }}
36+
iterations: ${{ parameters.iterations }}
37+
additionalArguments: ${{ parameters.additionalArguments }}

0 commit comments

Comments
 (0)