From 834bbf6debff277b359973245f039eb4b723d59c Mon Sep 17 00:00:00 2001 From: HarshaNalluru Date: Fri, 18 Dec 2020 17:45:26 -0800 Subject: [PATCH 01/20] new command in package.json --- sdk/servicebus/service-bus/package.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sdk/servicebus/service-bus/package.json b/sdk/servicebus/service-bus/package.json index 949cbdf0eaa9..700ec1029cc2 100644 --- a/sdk/servicebus/service-bus/package.json +++ b/sdk/servicebus/service-bus/package.json @@ -67,6 +67,7 @@ "lint:fix": "eslint package.json api-extractor.json src test --ext .ts --fix --fix-type [problem,suggestion]", "lint": "eslint package.json api-extractor.json src test --ext .ts -f html -o service-bus-lintReport.html || exit 0", "pack": "npm pack 2>&1", + "perfstress-test:node": "cross-env TS_NODE_COMPILER_OPTIONS=\"{\\\"module\\\": \\\"commonjs\\\"}\" ts-node test/perfstress/track-2/index.spec.ts", "prebuild": "npm run clean", "test:browser": "npm run clean && npm run build:test:browser && npm run integration-test:browser", "test:node": "npm run clean && npm run build:test:node && npm run integration-test:node", @@ -116,6 +117,7 @@ "@azure/dev-tool": "^1.0.0", "@azure/eslint-plugin-azure-sdk": "^3.0.0", "@azure/identity": "^1.1.0", + "@azure/test-utils-perfstress": "^1.0.0", "@microsoft/api-extractor": "7.7.11", "@rollup/plugin-commonjs": "11.0.2", "@rollup/plugin-inject": "^4.0.0", From 8978ad1dea70b1e7473a2ac80720543ed346addf Mon Sep 17 00:00:00 2001 From: HarshaNalluru Date: Fri, 18 Dec 2020 17:46:02 -0800 Subject: [PATCH 02/20] index file for track 2 perf test --- .../test/perf-with-framework/track-2/index.spec.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 sdk/servicebus/service-bus/test/perf-with-framework/track-2/index.spec.ts diff --git a/sdk/servicebus/service-bus/test/perf-with-framework/track-2/index.spec.ts b/sdk/servicebus/service-bus/test/perf-with-framework/track-2/index.spec.ts new file mode 100644 index 000000000000..69215d62677c --- /dev/null +++ b/sdk/servicebus/service-bus/test/perf-with-framework/track-2/index.spec.ts @@ -0,0 +1,10 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { PerfStressProgram, selectPerfStressTest } from "@azure/test-utils-perfstress"; + +console.log("=== Starting the perfStress test ==="); + +const perfStressProgram = new PerfStressProgram(selectPerfStressTest([])); + +perfStressProgram.run(); From a4e2bc01496bc3623212cb6c02ffb34062dae006 Mon Sep 17 00:00:00 2001 From: HarshaNalluru Date: Fri, 18 Dec 2020 17:46:14 -0800 Subject: [PATCH 03/20] readme --- .../test/perf-with-framework/track-2/README.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 sdk/servicebus/service-bus/test/perf-with-framework/track-2/README.md diff --git a/sdk/servicebus/service-bus/test/perf-with-framework/track-2/README.md b/sdk/servicebus/service-bus/test/perf-with-framework/track-2/README.md new file mode 100644 index 000000000000..258a34810be6 --- /dev/null +++ b/sdk/servicebus/service-bus/test/perf-with-framework/track-2/README.md @@ -0,0 +1,9 @@ +### Guide + +1. Build the service-bus package `rush build -t service-bus`. +2. Navigate to `service-bus` folder `cd sdk\servicebus\service-bus\`. +3. Create a service-bus namespace and populate the .env file at `servicebus\service-bus` folder with `SERVICEBUS_CONNECTION_STRING` variables. +4. Run the tests as follows + + - send + - `npm run perfstress-test:node -- ServiceBusSendTest --warmup 2 --duration 7 --iterations 2 --parallel 2` From 8a9dcb9539a072b7e1eac09e419ff1241ef4463e Mon Sep 17 00:00:00 2001 From: HarshaNalluru Date: Fri, 18 Dec 2020 17:46:36 -0800 Subject: [PATCH 04/20] send test - draft --- .../perf-with-framework/track-2/send.spec.ts | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 sdk/servicebus/service-bus/test/perf-with-framework/track-2/send.spec.ts diff --git a/sdk/servicebus/service-bus/test/perf-with-framework/track-2/send.spec.ts b/sdk/servicebus/service-bus/test/perf-with-framework/track-2/send.spec.ts new file mode 100644 index 000000000000..008fe97a15a8 --- /dev/null +++ b/sdk/servicebus/service-bus/test/perf-with-framework/track-2/send.spec.ts @@ -0,0 +1,41 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { PerfStressTest } from "@azure/test-utils-perfstress"; + +// Expects the .env file at the same level as the "test" folder +import * as dotenv from "dotenv"; +dotenv.config(); +interface SendTestOptions { + numberOfMessagesPerSend: number; + messageSize: number; +} +export abstract class StorageBlobTest extends PerfStressTest { + blobServiceClient: BlobServiceClient; + containerClient: ContainerClient; + sharedKeyCredential: StorageSharedKeyCredential; + static containerName = `newcontainer${new Date().getTime()}`; + + constructor() { + super(); + const connectionString = StorageBlobTest.getEnvVar("SERVICEBUS_CONNECTION_STRING"); + this.blobServiceClient = BlobServiceClient.fromConnectionString(connectionString); + this.containerClient = this.blobServiceClient.getContainerClient(StorageBlobTest.containerName); + } + + public async globalSetup() { + await this.containerClient.create(); + } + + public async globalCleanup() { + await this.containerClient.delete(); + } + + static getEnvVar(name: string) { + const val = process.env[name]; + if (!val) { + throw `Environment variable ${name} is not defined.`; + } + return val; + } +} From a9a19b7f5f07675117adc48a2ee1fe4c90d620cb Mon Sep 17 00:00:00 2001 From: HarshaNalluru Date: Mon, 21 Dec 2020 14:00:41 -0800 Subject: [PATCH 05/20] Add command in package.json --- sdk/servicebus/service-bus/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/servicebus/service-bus/package.json b/sdk/servicebus/service-bus/package.json index 700ec1029cc2..ad345a28e1fa 100644 --- a/sdk/servicebus/service-bus/package.json +++ b/sdk/servicebus/service-bus/package.json @@ -67,7 +67,7 @@ "lint:fix": "eslint package.json api-extractor.json src test --ext .ts --fix --fix-type [problem,suggestion]", "lint": "eslint package.json api-extractor.json src test --ext .ts -f html -o service-bus-lintReport.html || exit 0", "pack": "npm pack 2>&1", - "perfstress-test:node": "cross-env TS_NODE_COMPILER_OPTIONS=\"{\\\"module\\\": \\\"commonjs\\\"}\" ts-node test/perfstress/track-2/index.spec.ts", + "perfstress-test:node": "cross-env TS_NODE_COMPILER_OPTIONS=\"{\\\"module\\\": \\\"commonjs\\\"}\" ts-node test/perf-with-framework/track-2/index.spec.ts", "prebuild": "npm run clean", "test:browser": "npm run clean && npm run build:test:browser && npm run integration-test:browser", "test:node": "npm run clean && npm run build:test:node && npm run integration-test:node", From bdc6374c6c8dd6d95206bdef837b7a218566ed2a Mon Sep 17 00:00:00 2001 From: HarshaNalluru Date: Mon, 21 Dec 2020 14:01:18 -0800 Subject: [PATCH 06/20] readme --- .../service-bus/test/perf-with-framework/track-2/README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sdk/servicebus/service-bus/test/perf-with-framework/track-2/README.md b/sdk/servicebus/service-bus/test/perf-with-framework/track-2/README.md index 258a34810be6..61ff03c5b66d 100644 --- a/sdk/servicebus/service-bus/test/perf-with-framework/track-2/README.md +++ b/sdk/servicebus/service-bus/test/perf-with-framework/track-2/README.md @@ -5,5 +5,7 @@ 3. Create a service-bus namespace and populate the .env file at `servicebus\service-bus` folder with `SERVICEBUS_CONNECTION_STRING` variables. 4. Run the tests as follows - - send - - `npm run perfstress-test:node -- ServiceBusSendTest --warmup 2 --duration 7 --iterations 2 --parallel 2` + - simple send + - `npm run perfstress-test:node -- SimpleSendTest --warmup 2 --duration 7 --iterations 2 --parallel 2` + - batch send + - `npm run perfstress-test:node -- BatchSendTest --warmup 2 --duration 7 --parallel 2` From 94f41b2ac4ea5b0a395035601d2f9636854ec16a Mon Sep 17 00:00:00 2001 From: HarshaNalluru Date: Mon, 21 Dec 2020 14:01:34 -0800 Subject: [PATCH 07/20] ServiceBusTest base --- .../track-2/sbBase.spec.ts | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 sdk/servicebus/service-bus/test/perf-with-framework/track-2/sbBase.spec.ts diff --git a/sdk/servicebus/service-bus/test/perf-with-framework/track-2/sbBase.spec.ts b/sdk/servicebus/service-bus/test/perf-with-framework/track-2/sbBase.spec.ts new file mode 100644 index 000000000000..3dbf8df6cb53 --- /dev/null +++ b/sdk/servicebus/service-bus/test/perf-with-framework/track-2/sbBase.spec.ts @@ -0,0 +1,41 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { PerfStressTest } from "@azure/test-utils-perfstress"; +import { ServiceBusAdministrationClient, ServiceBusClient } from "../../../src"; + +// Expects the .env file at the same level as the "test" folder +import * as dotenv from "dotenv"; +dotenv.config(); + +const connectionString = getEnvVar("SERVICEBUS_CONNECTION_STRING"); +const sbClient = new ServiceBusClient(connectionString); + +export abstract class ServiceBusTest extends PerfStressTest { + sbClient: ServiceBusClient; + sbAdminClient: ServiceBusAdministrationClient; + static queueName = `newqueue-${Math.ceil(Math.random() * 1000)}`; + + constructor() { + super(); + this.sbClient = sbClient; + this.sbAdminClient = new ServiceBusAdministrationClient(connectionString); + } + + public async globalSetup() { + await this.sbAdminClient.createQueue(ServiceBusTest.queueName); + } + + public async globalCleanup() { + await this.sbAdminClient.deleteQueue(ServiceBusTest.queueName); + await this.sbClient.close(); + } +} + +function getEnvVar(name: string) { + const val = process.env[name]; + if (!val) { + throw `Environment variable ${name} is not defined.`; + } + return val; +} From 16000be78ea8906963a50adbcf7ac163234af0de Mon Sep 17 00:00:00 2001 From: HarshaNalluru Date: Mon, 21 Dec 2020 14:02:08 -0800 Subject: [PATCH 08/20] index file --- .../test/perf-with-framework/track-2/index.spec.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/sdk/servicebus/service-bus/test/perf-with-framework/track-2/index.spec.ts b/sdk/servicebus/service-bus/test/perf-with-framework/track-2/index.spec.ts index 69215d62677c..902429aad28c 100644 --- a/sdk/servicebus/service-bus/test/perf-with-framework/track-2/index.spec.ts +++ b/sdk/servicebus/service-bus/test/perf-with-framework/track-2/index.spec.ts @@ -2,9 +2,13 @@ // Licensed under the MIT license. import { PerfStressProgram, selectPerfStressTest } from "@azure/test-utils-perfstress"; +import { SimpleSendTest } from "./send.spec"; +import { BatchSendTest } from "./sendBatch.spec"; console.log("=== Starting the perfStress test ==="); -const perfStressProgram = new PerfStressProgram(selectPerfStressTest([])); +const perfStressProgram = new PerfStressProgram( + selectPerfStressTest([SimpleSendTest, BatchSendTest]) +); perfStressProgram.run(); From 105798da3032c566b17e212b5f3bfce52c959844 Mon Sep 17 00:00:00 2001 From: HarshaNalluru Date: Mon, 21 Dec 2020 14:02:51 -0800 Subject: [PATCH 09/20] send tests implemented --- .../perf-with-framework/track-2/send.spec.ts | 51 +++++++++---------- .../track-2/sendBatch.spec.ts | 46 +++++++++++++++++ 2 files changed, 69 insertions(+), 28 deletions(-) create mode 100644 sdk/servicebus/service-bus/test/perf-with-framework/track-2/sendBatch.spec.ts diff --git a/sdk/servicebus/service-bus/test/perf-with-framework/track-2/send.spec.ts b/sdk/servicebus/service-bus/test/perf-with-framework/track-2/send.spec.ts index 008fe97a15a8..a254d7565c3e 100644 --- a/sdk/servicebus/service-bus/test/perf-with-framework/track-2/send.spec.ts +++ b/sdk/servicebus/service-bus/test/perf-with-framework/track-2/send.spec.ts @@ -1,41 +1,36 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import { PerfStressTest } from "@azure/test-utils-perfstress"; +import { PerfStressOptionDictionary } from "@azure/test-utils-perfstress"; +import { ServiceBusMessage, ServiceBusSender } from "../../../src"; +import { ServiceBusTest } from "./sbBase.spec"; -// Expects the .env file at the same level as the "test" folder -import * as dotenv from "dotenv"; -dotenv.config(); interface SendTestOptions { - numberOfMessagesPerSend: number; - messageSize: number; + messageBodySize: number; } -export abstract class StorageBlobTest extends PerfStressTest { - blobServiceClient: BlobServiceClient; - containerClient: ContainerClient; - sharedKeyCredential: StorageSharedKeyCredential; - static containerName = `newcontainer${new Date().getTime()}`; + +export class SimpleSendTest extends ServiceBusTest { + sender: ServiceBusSender; + sbMessage: ServiceBusMessage; + public options: PerfStressOptionDictionary = { + messageBodySize: { + required: true, + description: "Size in bytes", + shortName: "sz", + longName: "size", + defaultValue: 1024 + } + }; constructor() { super(); - const connectionString = StorageBlobTest.getEnvVar("SERVICEBUS_CONNECTION_STRING"); - this.blobServiceClient = BlobServiceClient.fromConnectionString(connectionString); - this.containerClient = this.blobServiceClient.getContainerClient(StorageBlobTest.containerName); - } - - public async globalSetup() { - await this.containerClient.create(); + this.sender = this.sbClient.createSender(SimpleSendTest.queueName); + this.sbMessage = { + body: Buffer.alloc(this.parsedOptions.messageBodySize.value!) + }; } - public async globalCleanup() { - await this.containerClient.delete(); - } - - static getEnvVar(name: string) { - const val = process.env[name]; - if (!val) { - throw `Environment variable ${name} is not defined.`; - } - return val; + async runAsync(): Promise { + await this.sender.sendMessages(this.sbMessage); } } diff --git a/sdk/servicebus/service-bus/test/perf-with-framework/track-2/sendBatch.spec.ts b/sdk/servicebus/service-bus/test/perf-with-framework/track-2/sendBatch.spec.ts new file mode 100644 index 000000000000..935cd166c832 --- /dev/null +++ b/sdk/servicebus/service-bus/test/perf-with-framework/track-2/sendBatch.spec.ts @@ -0,0 +1,46 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { PerfStressOptionDictionary } from "@azure/test-utils-perfstress"; +import { ServiceBusMessage, ServiceBusSender } from "../../../src"; +import { ServiceBusTest } from "./sbBase.spec"; + +interface SendTestOptions { + messageBodySize: number; + numberOfMessages: number; +} + +export class BatchSendTest extends ServiceBusTest { + sender: ServiceBusSender; + sbMessage: ServiceBusMessage; + public options: PerfStressOptionDictionary = { + messageBodySize: { + required: true, + description: "Size in bytes", + shortName: "sz", + longName: "size", + defaultValue: 1024 + }, + numberOfMessages: { + required: true, + description: "Number of messages per send", + shortName: "num", + longName: "numberOfMessages", + defaultValue: 10 + } + }; + + constructor() { + super(); + this.sender = this.sbClient.createSender(BatchSendTest.queueName); + this.sbMessage = { + body: Buffer.alloc(this.parsedOptions.messageBodySize.value!) + }; + } + + async runAsync(): Promise { + await this.sender.sendMessages( + new Array(this.parsedOptions.numberOfMessages.value!).fill(this.sbMessage) + ); + } +} From 58d975e40241d07dc858ebf1f749cab13fdc1fa4 Mon Sep 17 00:00:00 2001 From: HarshaNalluru Date: Tue, 22 Dec 2020 15:30:54 -0800 Subject: [PATCH 10/20] update index file --- .../perf-with-framework/track-2/index.spec.ts | 5 +-- .../perf-with-framework/track-2/send.spec.ts | 36 ------------------- 2 files changed, 1 insertion(+), 40 deletions(-) delete mode 100644 sdk/servicebus/service-bus/test/perf-with-framework/track-2/send.spec.ts diff --git a/sdk/servicebus/service-bus/test/perf-with-framework/track-2/index.spec.ts b/sdk/servicebus/service-bus/test/perf-with-framework/track-2/index.spec.ts index 902429aad28c..a186da32216a 100644 --- a/sdk/servicebus/service-bus/test/perf-with-framework/track-2/index.spec.ts +++ b/sdk/servicebus/service-bus/test/perf-with-framework/track-2/index.spec.ts @@ -2,13 +2,10 @@ // Licensed under the MIT license. import { PerfStressProgram, selectPerfStressTest } from "@azure/test-utils-perfstress"; -import { SimpleSendTest } from "./send.spec"; import { BatchSendTest } from "./sendBatch.spec"; console.log("=== Starting the perfStress test ==="); -const perfStressProgram = new PerfStressProgram( - selectPerfStressTest([SimpleSendTest, BatchSendTest]) -); +const perfStressProgram = new PerfStressProgram(selectPerfStressTest([BatchSendTest])); perfStressProgram.run(); diff --git a/sdk/servicebus/service-bus/test/perf-with-framework/track-2/send.spec.ts b/sdk/servicebus/service-bus/test/perf-with-framework/track-2/send.spec.ts deleted file mode 100644 index a254d7565c3e..000000000000 --- a/sdk/servicebus/service-bus/test/perf-with-framework/track-2/send.spec.ts +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. - -import { PerfStressOptionDictionary } from "@azure/test-utils-perfstress"; -import { ServiceBusMessage, ServiceBusSender } from "../../../src"; -import { ServiceBusTest } from "./sbBase.spec"; - -interface SendTestOptions { - messageBodySize: number; -} - -export class SimpleSendTest extends ServiceBusTest { - sender: ServiceBusSender; - sbMessage: ServiceBusMessage; - public options: PerfStressOptionDictionary = { - messageBodySize: { - required: true, - description: "Size in bytes", - shortName: "sz", - longName: "size", - defaultValue: 1024 - } - }; - - constructor() { - super(); - this.sender = this.sbClient.createSender(SimpleSendTest.queueName); - this.sbMessage = { - body: Buffer.alloc(this.parsedOptions.messageBodySize.value!) - }; - } - - async runAsync(): Promise { - await this.sender.sendMessages(this.sbMessage); - } -} From 2d26744a64ca356484815edd2d6fc10b1005695d Mon Sep 17 00:00:00 2001 From: HarshaNalluru Date: Wed, 23 Dec 2020 16:40:09 -0800 Subject: [PATCH 11/20] perf folder reorganize --- .../azure-sb-package/receive.ts | 0 .../azure-sb-package/send.ts | 0 .../rhea-promise/receive.ts | 0 .../rhea-promise/send.ts | 0 .../service-bus-v1/package.json | 0 .../service-bus-v1/receive.ts | 0 .../service-bus-v1/receiveBatch.ts | 0 .../service-bus-v1/send.ts | 0 .../service-bus-v7/package.json | 0 .../service-bus-v7/receive.ts | 0 .../service-bus-v7/receiveBatch.ts | 0 .../service-bus-v7/send.ts | 0 .../test/{perf => perf-js-libs}/tsconfig.json | 0 .../track-2 => perf/track-1}/README.md | 0 .../track-2 => perf/track-1}/index.spec.ts | 0 .../track-2 => perf/track-1}/sbBase.spec.ts | 0 .../track-1}/sendBatch.spec.ts | 0 .../service-bus/test/perf/track-2/README.md | 11 +++++ .../test/perf/track-2/index.spec.ts | 11 +++++ .../test/perf/track-2/sbBase.spec.ts | 41 +++++++++++++++++ .../test/perf/track-2/sendBatch.spec.ts | 46 +++++++++++++++++++ sdk/servicebus/service-bus/tsconfig.json | 2 +- 22 files changed, 110 insertions(+), 1 deletion(-) rename sdk/servicebus/service-bus/test/{perf => perf-js-libs}/azure-sb-package/receive.ts (100%) rename sdk/servicebus/service-bus/test/{perf => perf-js-libs}/azure-sb-package/send.ts (100%) rename sdk/servicebus/service-bus/test/{perf => perf-js-libs}/rhea-promise/receive.ts (100%) rename sdk/servicebus/service-bus/test/{perf => perf-js-libs}/rhea-promise/send.ts (100%) rename sdk/servicebus/service-bus/test/{perf => perf-js-libs}/service-bus-v1/package.json (100%) rename sdk/servicebus/service-bus/test/{perf => perf-js-libs}/service-bus-v1/receive.ts (100%) rename sdk/servicebus/service-bus/test/{perf => perf-js-libs}/service-bus-v1/receiveBatch.ts (100%) rename sdk/servicebus/service-bus/test/{perf => perf-js-libs}/service-bus-v1/send.ts (100%) rename sdk/servicebus/service-bus/test/{perf => perf-js-libs}/service-bus-v7/package.json (100%) rename sdk/servicebus/service-bus/test/{perf => perf-js-libs}/service-bus-v7/receive.ts (100%) rename sdk/servicebus/service-bus/test/{perf => perf-js-libs}/service-bus-v7/receiveBatch.ts (100%) rename sdk/servicebus/service-bus/test/{perf => perf-js-libs}/service-bus-v7/send.ts (100%) rename sdk/servicebus/service-bus/test/{perf => perf-js-libs}/tsconfig.json (100%) rename sdk/servicebus/service-bus/test/{perf-with-framework/track-2 => perf/track-1}/README.md (100%) rename sdk/servicebus/service-bus/test/{perf-with-framework/track-2 => perf/track-1}/index.spec.ts (100%) rename sdk/servicebus/service-bus/test/{perf-with-framework/track-2 => perf/track-1}/sbBase.spec.ts (100%) rename sdk/servicebus/service-bus/test/{perf-with-framework/track-2 => perf/track-1}/sendBatch.spec.ts (100%) create mode 100644 sdk/servicebus/service-bus/test/perf/track-2/README.md create mode 100644 sdk/servicebus/service-bus/test/perf/track-2/index.spec.ts create mode 100644 sdk/servicebus/service-bus/test/perf/track-2/sbBase.spec.ts create mode 100644 sdk/servicebus/service-bus/test/perf/track-2/sendBatch.spec.ts diff --git a/sdk/servicebus/service-bus/test/perf/azure-sb-package/receive.ts b/sdk/servicebus/service-bus/test/perf-js-libs/azure-sb-package/receive.ts similarity index 100% rename from sdk/servicebus/service-bus/test/perf/azure-sb-package/receive.ts rename to sdk/servicebus/service-bus/test/perf-js-libs/azure-sb-package/receive.ts diff --git a/sdk/servicebus/service-bus/test/perf/azure-sb-package/send.ts b/sdk/servicebus/service-bus/test/perf-js-libs/azure-sb-package/send.ts similarity index 100% rename from sdk/servicebus/service-bus/test/perf/azure-sb-package/send.ts rename to sdk/servicebus/service-bus/test/perf-js-libs/azure-sb-package/send.ts diff --git a/sdk/servicebus/service-bus/test/perf/rhea-promise/receive.ts b/sdk/servicebus/service-bus/test/perf-js-libs/rhea-promise/receive.ts similarity index 100% rename from sdk/servicebus/service-bus/test/perf/rhea-promise/receive.ts rename to sdk/servicebus/service-bus/test/perf-js-libs/rhea-promise/receive.ts diff --git a/sdk/servicebus/service-bus/test/perf/rhea-promise/send.ts b/sdk/servicebus/service-bus/test/perf-js-libs/rhea-promise/send.ts similarity index 100% rename from sdk/servicebus/service-bus/test/perf/rhea-promise/send.ts rename to sdk/servicebus/service-bus/test/perf-js-libs/rhea-promise/send.ts diff --git a/sdk/servicebus/service-bus/test/perf/service-bus-v1/package.json b/sdk/servicebus/service-bus/test/perf-js-libs/service-bus-v1/package.json similarity index 100% rename from sdk/servicebus/service-bus/test/perf/service-bus-v1/package.json rename to sdk/servicebus/service-bus/test/perf-js-libs/service-bus-v1/package.json diff --git a/sdk/servicebus/service-bus/test/perf/service-bus-v1/receive.ts b/sdk/servicebus/service-bus/test/perf-js-libs/service-bus-v1/receive.ts similarity index 100% rename from sdk/servicebus/service-bus/test/perf/service-bus-v1/receive.ts rename to sdk/servicebus/service-bus/test/perf-js-libs/service-bus-v1/receive.ts diff --git a/sdk/servicebus/service-bus/test/perf/service-bus-v1/receiveBatch.ts b/sdk/servicebus/service-bus/test/perf-js-libs/service-bus-v1/receiveBatch.ts similarity index 100% rename from sdk/servicebus/service-bus/test/perf/service-bus-v1/receiveBatch.ts rename to sdk/servicebus/service-bus/test/perf-js-libs/service-bus-v1/receiveBatch.ts diff --git a/sdk/servicebus/service-bus/test/perf/service-bus-v1/send.ts b/sdk/servicebus/service-bus/test/perf-js-libs/service-bus-v1/send.ts similarity index 100% rename from sdk/servicebus/service-bus/test/perf/service-bus-v1/send.ts rename to sdk/servicebus/service-bus/test/perf-js-libs/service-bus-v1/send.ts diff --git a/sdk/servicebus/service-bus/test/perf/service-bus-v7/package.json b/sdk/servicebus/service-bus/test/perf-js-libs/service-bus-v7/package.json similarity index 100% rename from sdk/servicebus/service-bus/test/perf/service-bus-v7/package.json rename to sdk/servicebus/service-bus/test/perf-js-libs/service-bus-v7/package.json diff --git a/sdk/servicebus/service-bus/test/perf/service-bus-v7/receive.ts b/sdk/servicebus/service-bus/test/perf-js-libs/service-bus-v7/receive.ts similarity index 100% rename from sdk/servicebus/service-bus/test/perf/service-bus-v7/receive.ts rename to sdk/servicebus/service-bus/test/perf-js-libs/service-bus-v7/receive.ts diff --git a/sdk/servicebus/service-bus/test/perf/service-bus-v7/receiveBatch.ts b/sdk/servicebus/service-bus/test/perf-js-libs/service-bus-v7/receiveBatch.ts similarity index 100% rename from sdk/servicebus/service-bus/test/perf/service-bus-v7/receiveBatch.ts rename to sdk/servicebus/service-bus/test/perf-js-libs/service-bus-v7/receiveBatch.ts diff --git a/sdk/servicebus/service-bus/test/perf/service-bus-v7/send.ts b/sdk/servicebus/service-bus/test/perf-js-libs/service-bus-v7/send.ts similarity index 100% rename from sdk/servicebus/service-bus/test/perf/service-bus-v7/send.ts rename to sdk/servicebus/service-bus/test/perf-js-libs/service-bus-v7/send.ts diff --git a/sdk/servicebus/service-bus/test/perf/tsconfig.json b/sdk/servicebus/service-bus/test/perf-js-libs/tsconfig.json similarity index 100% rename from sdk/servicebus/service-bus/test/perf/tsconfig.json rename to sdk/servicebus/service-bus/test/perf-js-libs/tsconfig.json diff --git a/sdk/servicebus/service-bus/test/perf-with-framework/track-2/README.md b/sdk/servicebus/service-bus/test/perf/track-1/README.md similarity index 100% rename from sdk/servicebus/service-bus/test/perf-with-framework/track-2/README.md rename to sdk/servicebus/service-bus/test/perf/track-1/README.md diff --git a/sdk/servicebus/service-bus/test/perf-with-framework/track-2/index.spec.ts b/sdk/servicebus/service-bus/test/perf/track-1/index.spec.ts similarity index 100% rename from sdk/servicebus/service-bus/test/perf-with-framework/track-2/index.spec.ts rename to sdk/servicebus/service-bus/test/perf/track-1/index.spec.ts diff --git a/sdk/servicebus/service-bus/test/perf-with-framework/track-2/sbBase.spec.ts b/sdk/servicebus/service-bus/test/perf/track-1/sbBase.spec.ts similarity index 100% rename from sdk/servicebus/service-bus/test/perf-with-framework/track-2/sbBase.spec.ts rename to sdk/servicebus/service-bus/test/perf/track-1/sbBase.spec.ts diff --git a/sdk/servicebus/service-bus/test/perf-with-framework/track-2/sendBatch.spec.ts b/sdk/servicebus/service-bus/test/perf/track-1/sendBatch.spec.ts similarity index 100% rename from sdk/servicebus/service-bus/test/perf-with-framework/track-2/sendBatch.spec.ts rename to sdk/servicebus/service-bus/test/perf/track-1/sendBatch.spec.ts diff --git a/sdk/servicebus/service-bus/test/perf/track-2/README.md b/sdk/servicebus/service-bus/test/perf/track-2/README.md new file mode 100644 index 000000000000..61ff03c5b66d --- /dev/null +++ b/sdk/servicebus/service-bus/test/perf/track-2/README.md @@ -0,0 +1,11 @@ +### Guide + +1. Build the service-bus package `rush build -t service-bus`. +2. Navigate to `service-bus` folder `cd sdk\servicebus\service-bus\`. +3. Create a service-bus namespace and populate the .env file at `servicebus\service-bus` folder with `SERVICEBUS_CONNECTION_STRING` variables. +4. Run the tests as follows + + - simple send + - `npm run perfstress-test:node -- SimpleSendTest --warmup 2 --duration 7 --iterations 2 --parallel 2` + - batch send + - `npm run perfstress-test:node -- BatchSendTest --warmup 2 --duration 7 --parallel 2` diff --git a/sdk/servicebus/service-bus/test/perf/track-2/index.spec.ts b/sdk/servicebus/service-bus/test/perf/track-2/index.spec.ts new file mode 100644 index 000000000000..a186da32216a --- /dev/null +++ b/sdk/servicebus/service-bus/test/perf/track-2/index.spec.ts @@ -0,0 +1,11 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { PerfStressProgram, selectPerfStressTest } from "@azure/test-utils-perfstress"; +import { BatchSendTest } from "./sendBatch.spec"; + +console.log("=== Starting the perfStress test ==="); + +const perfStressProgram = new PerfStressProgram(selectPerfStressTest([BatchSendTest])); + +perfStressProgram.run(); diff --git a/sdk/servicebus/service-bus/test/perf/track-2/sbBase.spec.ts b/sdk/servicebus/service-bus/test/perf/track-2/sbBase.spec.ts new file mode 100644 index 000000000000..3dbf8df6cb53 --- /dev/null +++ b/sdk/servicebus/service-bus/test/perf/track-2/sbBase.spec.ts @@ -0,0 +1,41 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { PerfStressTest } from "@azure/test-utils-perfstress"; +import { ServiceBusAdministrationClient, ServiceBusClient } from "../../../src"; + +// Expects the .env file at the same level as the "test" folder +import * as dotenv from "dotenv"; +dotenv.config(); + +const connectionString = getEnvVar("SERVICEBUS_CONNECTION_STRING"); +const sbClient = new ServiceBusClient(connectionString); + +export abstract class ServiceBusTest extends PerfStressTest { + sbClient: ServiceBusClient; + sbAdminClient: ServiceBusAdministrationClient; + static queueName = `newqueue-${Math.ceil(Math.random() * 1000)}`; + + constructor() { + super(); + this.sbClient = sbClient; + this.sbAdminClient = new ServiceBusAdministrationClient(connectionString); + } + + public async globalSetup() { + await this.sbAdminClient.createQueue(ServiceBusTest.queueName); + } + + public async globalCleanup() { + await this.sbAdminClient.deleteQueue(ServiceBusTest.queueName); + await this.sbClient.close(); + } +} + +function getEnvVar(name: string) { + const val = process.env[name]; + if (!val) { + throw `Environment variable ${name} is not defined.`; + } + return val; +} diff --git a/sdk/servicebus/service-bus/test/perf/track-2/sendBatch.spec.ts b/sdk/servicebus/service-bus/test/perf/track-2/sendBatch.spec.ts new file mode 100644 index 000000000000..935cd166c832 --- /dev/null +++ b/sdk/servicebus/service-bus/test/perf/track-2/sendBatch.spec.ts @@ -0,0 +1,46 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { PerfStressOptionDictionary } from "@azure/test-utils-perfstress"; +import { ServiceBusMessage, ServiceBusSender } from "../../../src"; +import { ServiceBusTest } from "./sbBase.spec"; + +interface SendTestOptions { + messageBodySize: number; + numberOfMessages: number; +} + +export class BatchSendTest extends ServiceBusTest { + sender: ServiceBusSender; + sbMessage: ServiceBusMessage; + public options: PerfStressOptionDictionary = { + messageBodySize: { + required: true, + description: "Size in bytes", + shortName: "sz", + longName: "size", + defaultValue: 1024 + }, + numberOfMessages: { + required: true, + description: "Number of messages per send", + shortName: "num", + longName: "numberOfMessages", + defaultValue: 10 + } + }; + + constructor() { + super(); + this.sender = this.sbClient.createSender(BatchSendTest.queueName); + this.sbMessage = { + body: Buffer.alloc(this.parsedOptions.messageBodySize.value!) + }; + } + + async runAsync(): Promise { + await this.sender.sendMessages( + new Array(this.parsedOptions.numberOfMessages.value!).fill(this.sbMessage) + ); + } +} diff --git a/sdk/servicebus/service-bus/tsconfig.json b/sdk/servicebus/service-bus/tsconfig.json index ef6c2969f1c0..57a51daf3611 100644 --- a/sdk/servicebus/service-bus/tsconfig.json +++ b/sdk/servicebus/service-bus/tsconfig.json @@ -10,7 +10,7 @@ "node_modules", "./types/**/*.d.ts", "./samples/**/*.ts", - "test/perf/*", + "test/perf-js-libs/*", "test/stress*" ], "include": ["./src/**/*.ts", "./test/**/*.ts"] From c01e6cf10208143e754dc02922fb0a2805b88866 Mon Sep 17 00:00:00 2001 From: HarshaNalluru Date: Wed, 23 Dec 2020 17:03:03 -0800 Subject: [PATCH 12/20] send track 1 with framework --- .../service-bus/test/perf/track-1/README.md | 15 ++++++++------- .../service-bus/test/perf/track-1/package.json | 16 ++++++++++++++++ .../service-bus/test/perf/track-1/sbBase.spec.ts | 15 ++++----------- .../test/perf/track-1/sendBatch.spec.ts | 10 +++++----- 4 files changed, 33 insertions(+), 23 deletions(-) create mode 100644 sdk/servicebus/service-bus/test/perf/track-1/package.json diff --git a/sdk/servicebus/service-bus/test/perf/track-1/README.md b/sdk/servicebus/service-bus/test/perf/track-1/README.md index 61ff03c5b66d..e13f2a950288 100644 --- a/sdk/servicebus/service-bus/test/perf/track-1/README.md +++ b/sdk/servicebus/service-bus/test/perf/track-1/README.md @@ -1,11 +1,12 @@ ### Guide -1. Build the service-bus package `rush build -t service-bus`. -2. Navigate to `service-bus` folder `cd sdk\servicebus\service-bus\`. -3. Create a service-bus namespace and populate the .env file at `servicebus\service-bus` folder with `SERVICEBUS_CONNECTION_STRING` variables. -4. Run the tests as follows - - - simple send - - `npm run perfstress-test:node -- SimpleSendTest --warmup 2 --duration 7 --iterations 2 --parallel 2` +1. Navigate to `test-utils\perfstress` folder `cd sdk\test-utils\perfstress\` +2. Build the package `rush update && rush build -t test-utils-perfstress` +3. Pack the perf package `rushx pack` +4. Navigate to `service-bus\perf\track-1` folder `cd sdk\servicebus\service-bus\perfstress\track-1`. +5. Install the perf package `npm i ..\..\..\..\..\test-utils\perfstress\azure-test-utils-perfstress-1.0.0.tgz` +6. Run `npm install` to get `service-bus V1`. +7. Create a service-bus namespace and populate the .env file at `servicebus\service-bus` folder with `SERVICEBUS_CONNECTION_STRING` and `QUEUE_NAME` variables. +8. Run the tests as follows - batch send - `npm run perfstress-test:node -- BatchSendTest --warmup 2 --duration 7 --parallel 2` diff --git a/sdk/servicebus/service-bus/test/perf/track-1/package.json b/sdk/servicebus/service-bus/test/perf/track-1/package.json new file mode 100644 index 000000000000..d9020730d8fd --- /dev/null +++ b/sdk/servicebus/service-bus/test/perf/track-1/package.json @@ -0,0 +1,16 @@ +{ + "name": "track-1", + "version": "1.0.0", + "description": "1. Build the service-bus package `rush build -t service-bus`. 2. Navigate to `service-bus` folder `cd sdk\\servicebus\\service-bus\\`. 3. Create a service-bus namespace and populate the .env file at `servicebus\\service-bus` folder with `SERVICEBUS_CONNECTION_STRING` variables. 4. Run the tests as follows", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "@azure/service-bus": "^1.1.10", + "@azure/test-utils-perfstress": "file:../../../../../test-utils/perfstress/azure-test-utils-perfstress-1.0.0.tgz" + } +} diff --git a/sdk/servicebus/service-bus/test/perf/track-1/sbBase.spec.ts b/sdk/servicebus/service-bus/test/perf/track-1/sbBase.spec.ts index 3dbf8df6cb53..4340c62baf07 100644 --- a/sdk/servicebus/service-bus/test/perf/track-1/sbBase.spec.ts +++ b/sdk/servicebus/service-bus/test/perf/track-1/sbBase.spec.ts @@ -2,32 +2,25 @@ // Licensed under the MIT license. import { PerfStressTest } from "@azure/test-utils-perfstress"; -import { ServiceBusAdministrationClient, ServiceBusClient } from "../../../src"; +import { ServiceBusClient } from "@azure/service-bus"; // Expects the .env file at the same level as the "test" folder import * as dotenv from "dotenv"; -dotenv.config(); +dotenv.config({ path: "../../../.env" }); const connectionString = getEnvVar("SERVICEBUS_CONNECTION_STRING"); -const sbClient = new ServiceBusClient(connectionString); +const sbClient = ServiceBusClient.createFromConnectionString(connectionString); export abstract class ServiceBusTest extends PerfStressTest { sbClient: ServiceBusClient; - sbAdminClient: ServiceBusAdministrationClient; - static queueName = `newqueue-${Math.ceil(Math.random() * 1000)}`; + static queueName = getEnvVar("QUEUE_NAME"); constructor() { super(); this.sbClient = sbClient; - this.sbAdminClient = new ServiceBusAdministrationClient(connectionString); - } - - public async globalSetup() { - await this.sbAdminClient.createQueue(ServiceBusTest.queueName); } public async globalCleanup() { - await this.sbAdminClient.deleteQueue(ServiceBusTest.queueName); await this.sbClient.close(); } } diff --git a/sdk/servicebus/service-bus/test/perf/track-1/sendBatch.spec.ts b/sdk/servicebus/service-bus/test/perf/track-1/sendBatch.spec.ts index 935cd166c832..8e7f4f608046 100644 --- a/sdk/servicebus/service-bus/test/perf/track-1/sendBatch.spec.ts +++ b/sdk/servicebus/service-bus/test/perf/track-1/sendBatch.spec.ts @@ -2,7 +2,7 @@ // Licensed under the MIT license. import { PerfStressOptionDictionary } from "@azure/test-utils-perfstress"; -import { ServiceBusMessage, ServiceBusSender } from "../../../src"; +import { SendableMessageInfo, Sender } from "@azure/service-bus"; import { ServiceBusTest } from "./sbBase.spec"; interface SendTestOptions { @@ -11,8 +11,8 @@ interface SendTestOptions { } export class BatchSendTest extends ServiceBusTest { - sender: ServiceBusSender; - sbMessage: ServiceBusMessage; + sender: Sender; + sbMessage: SendableMessageInfo; public options: PerfStressOptionDictionary = { messageBodySize: { required: true, @@ -32,14 +32,14 @@ export class BatchSendTest extends ServiceBusTest { constructor() { super(); - this.sender = this.sbClient.createSender(BatchSendTest.queueName); + this.sender = this.sbClient.createQueueClient(BatchSendTest.queueName).createSender(); this.sbMessage = { body: Buffer.alloc(this.parsedOptions.messageBodySize.value!) }; } async runAsync(): Promise { - await this.sender.sendMessages( + await this.sender.sendBatch( new Array(this.parsedOptions.numberOfMessages.value!).fill(this.sbMessage) ); } From 9616c50ac618d55790e805ef9704a1304a053e43 Mon Sep 17 00:00:00 2001 From: HarshaNalluru Date: Wed, 23 Dec 2020 17:07:35 -0800 Subject: [PATCH 13/20] fix package.jsons and readmes --- sdk/servicebus/service-bus/package.json | 2 +- sdk/servicebus/service-bus/test/perf/track-1/README.md | 4 ++-- sdk/servicebus/service-bus/test/perf/track-1/package.json | 6 +++--- sdk/servicebus/service-bus/test/perf/track-1/tsconfig.json | 5 +++++ sdk/servicebus/service-bus/test/perf/track-2/README.md | 4 ++-- 5 files changed, 13 insertions(+), 8 deletions(-) create mode 100644 sdk/servicebus/service-bus/test/perf/track-1/tsconfig.json diff --git a/sdk/servicebus/service-bus/package.json b/sdk/servicebus/service-bus/package.json index df391687232e..fa11e9e41f86 100644 --- a/sdk/servicebus/service-bus/package.json +++ b/sdk/servicebus/service-bus/package.json @@ -67,7 +67,7 @@ "lint:fix": "eslint package.json api-extractor.json src test --ext .ts --fix --fix-type [problem,suggestion]", "lint": "eslint package.json api-extractor.json src test --ext .ts -f html -o service-bus-lintReport.html || exit 0", "pack": "npm pack 2>&1", - "perfstress-test:node": "cross-env TS_NODE_COMPILER_OPTIONS=\"{\\\"module\\\": \\\"commonjs\\\"}\" ts-node test/perf-with-framework/track-2/index.spec.ts", + "perf-test:node": "cross-env TS_NODE_COMPILER_OPTIONS=\"{\\\"module\\\": \\\"commonjs\\\"}\" ts-node test/perf/track-2/index.spec.ts", "prebuild": "npm run clean", "test:browser": "npm run clean && npm run build:test:browser && npm run integration-test:browser", "test:node": "npm run clean && npm run build:test:node && npm run integration-test:node", diff --git a/sdk/servicebus/service-bus/test/perf/track-1/README.md b/sdk/servicebus/service-bus/test/perf/track-1/README.md index e13f2a950288..9e541e65c763 100644 --- a/sdk/servicebus/service-bus/test/perf/track-1/README.md +++ b/sdk/servicebus/service-bus/test/perf/track-1/README.md @@ -3,10 +3,10 @@ 1. Navigate to `test-utils\perfstress` folder `cd sdk\test-utils\perfstress\` 2. Build the package `rush update && rush build -t test-utils-perfstress` 3. Pack the perf package `rushx pack` -4. Navigate to `service-bus\perf\track-1` folder `cd sdk\servicebus\service-bus\perfstress\track-1`. +4. Navigate to `service-bus\perf\track-1` folder `cd sdk\servicebus\service-bus\perf\track-1`. 5. Install the perf package `npm i ..\..\..\..\..\test-utils\perfstress\azure-test-utils-perfstress-1.0.0.tgz` 6. Run `npm install` to get `service-bus V1`. 7. Create a service-bus namespace and populate the .env file at `servicebus\service-bus` folder with `SERVICEBUS_CONNECTION_STRING` and `QUEUE_NAME` variables. 8. Run the tests as follows - batch send - - `npm run perfstress-test:node -- BatchSendTest --warmup 2 --duration 7 --parallel 2` + - `npm run perf-test:node -- BatchSendTest --warmup 2 --duration 7 --parallel 2` diff --git a/sdk/servicebus/service-bus/test/perf/track-1/package.json b/sdk/servicebus/service-bus/test/perf/track-1/package.json index d9020730d8fd..b4b78364ca45 100644 --- a/sdk/servicebus/service-bus/test/perf/track-1/package.json +++ b/sdk/servicebus/service-bus/test/perf/track-1/package.json @@ -3,14 +3,14 @@ "version": "1.0.0", "description": "1. Build the service-bus package `rush build -t service-bus`. 2. Navigate to `service-bus` folder `cd sdk\\servicebus\\service-bus\\`. 3. Create a service-bus namespace and populate the .env file at `servicebus\\service-bus` folder with `SERVICEBUS_CONNECTION_STRING` variables. 4. Run the tests as follows", "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "@azure/service-bus": "^1.1.10", "@azure/test-utils-perfstress": "file:../../../../../test-utils/perfstress/azure-test-utils-perfstress-1.0.0.tgz" + }, + "scripts": { + "perf-test:node": "ts-node index.spec.ts" } } diff --git a/sdk/servicebus/service-bus/test/perf/track-1/tsconfig.json b/sdk/servicebus/service-bus/test/perf/track-1/tsconfig.json new file mode 100644 index 000000000000..391488ab17f4 --- /dev/null +++ b/sdk/servicebus/service-bus/test/perf/track-1/tsconfig.json @@ -0,0 +1,5 @@ +{ + "compilerOptions": { + "module": "commonjs" + } +} diff --git a/sdk/servicebus/service-bus/test/perf/track-2/README.md b/sdk/servicebus/service-bus/test/perf/track-2/README.md index 61ff03c5b66d..74d0d1124710 100644 --- a/sdk/servicebus/service-bus/test/perf/track-2/README.md +++ b/sdk/servicebus/service-bus/test/perf/track-2/README.md @@ -6,6 +6,6 @@ 4. Run the tests as follows - simple send - - `npm run perfstress-test:node -- SimpleSendTest --warmup 2 --duration 7 --iterations 2 --parallel 2` + - `npm run perf-test:node -- SimpleSendTest --warmup 2 --duration 7 --iterations 2 --parallel 2` - batch send - - `npm run perfstress-test:node -- BatchSendTest --warmup 2 --duration 7 --parallel 2` + - `npm run perf-test:node -- BatchSendTest --warmup 2 --duration 7 --parallel 2` From 7b2d768ad3f3cd209e45069c86c0cbf7c7061edf Mon Sep 17 00:00:00 2001 From: HarshaNalluru Date: Wed, 23 Dec 2020 17:21:53 -0800 Subject: [PATCH 14/20] omit paths --- eng/.docsettings.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/.docsettings.yml b/eng/.docsettings.yml index e98092b75d38..ab7f63cfa5b9 100644 --- a/eng/.docsettings.yml +++ b/eng/.docsettings.yml @@ -16,7 +16,7 @@ omitted_paths: - sdk/search/*/test/README.md - sdk/servicebus/*/test/README.md - sdk/servicebus/README.md - - sdk/servicebus/service-bus/test/perf/service-bus-* + - sdk/servicebus/service-bus/test/perf-js-libs/service-bus-* - sdk/servicebus/service-bus/test/stress/* - sdk/schemaregistry/README.md - sdk/storage/*/test/README.md From 38006be0012d197df933c6deae4395b2e3b3dbc6 Mon Sep 17 00:00:00 2001 From: HarshaNalluru Date: Wed, 23 Dec 2020 17:23:56 -0800 Subject: [PATCH 15/20] ts-config --- sdk/servicebus/service-bus/tsconfig.json | 1 + 1 file changed, 1 insertion(+) diff --git a/sdk/servicebus/service-bus/tsconfig.json b/sdk/servicebus/service-bus/tsconfig.json index 57a51daf3611..ff7453fcc8c3 100644 --- a/sdk/servicebus/service-bus/tsconfig.json +++ b/sdk/servicebus/service-bus/tsconfig.json @@ -11,6 +11,7 @@ "./types/**/*.d.ts", "./samples/**/*.ts", "test/perf-js-libs/*", + "test/perf/track-1", "test/stress*" ], "include": ["./src/**/*.ts", "./test/**/*.ts"] From eefe2e7f85660ff1ac281f5efacc9ac7f0c5391e Mon Sep 17 00:00:00 2001 From: HarshaNalluru Date: Wed, 23 Dec 2020 17:38:28 -0800 Subject: [PATCH 16/20] fix rollup config --- sdk/servicebus/service-bus/rollup.base.config.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/sdk/servicebus/service-bus/rollup.base.config.js b/sdk/servicebus/service-bus/rollup.base.config.js index e584691da98e..04eea2ee008f 100644 --- a/sdk/servicebus/service-bus/rollup.base.config.js +++ b/sdk/servicebus/service-bus/rollup.base.config.js @@ -66,8 +66,12 @@ export function nodeConfig({ test = false, production = false } = {}) { }; if (test) { - // entry point is every test file - baseConfig.input = "dist-esm/test/**/*.spec.js"; + // entry point is every test file + baseConfig.input = [ + "dist-esm/service-bus/test/internal/*.spec.js", + "dist-esm/service-bus/test/node/*.spec.js", + "dist-esm/service-bus/test/*.spec.js" + ]; baseConfig.plugins.unshift(multiEntry({ exports: false })); // different output file From d70f1a0f88471502f85e42fedd6d9bca1746159a Mon Sep 17 00:00:00 2001 From: HarshaNalluru Date: Wed, 23 Dec 2020 17:39:21 -0800 Subject: [PATCH 17/20] formatting --- sdk/servicebus/service-bus/rollup.base.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/servicebus/service-bus/rollup.base.config.js b/sdk/servicebus/service-bus/rollup.base.config.js index 04eea2ee008f..96b557f743d3 100644 --- a/sdk/servicebus/service-bus/rollup.base.config.js +++ b/sdk/servicebus/service-bus/rollup.base.config.js @@ -66,7 +66,7 @@ export function nodeConfig({ test = false, production = false } = {}) { }; if (test) { - // entry point is every test file + // entry point is every test file baseConfig.input = [ "dist-esm/service-bus/test/internal/*.spec.js", "dist-esm/service-bus/test/node/*.spec.js", From 334e5eff924006b24b39900cd29c9c6d9bde5fec Mon Sep 17 00:00:00 2001 From: HarshaNalluru Date: Wed, 23 Dec 2020 17:48:54 -0800 Subject: [PATCH 18/20] ignore paths --- eng/.docsettings.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/eng/.docsettings.yml b/eng/.docsettings.yml index ab7f63cfa5b9..ebd515dfa3b5 100644 --- a/eng/.docsettings.yml +++ b/eng/.docsettings.yml @@ -17,6 +17,7 @@ omitted_paths: - sdk/servicebus/*/test/README.md - sdk/servicebus/README.md - sdk/servicebus/service-bus/test/perf-js-libs/service-bus-* + - sdk/servicebus/service-bus/test/perf/** - sdk/servicebus/service-bus/test/stress/* - sdk/schemaregistry/README.md - sdk/storage/*/test/README.md From 2cee791f2359421fc28598e79bf4a245e863351c Mon Sep 17 00:00:00 2001 From: HarshaNalluru Date: Wed, 23 Dec 2020 18:03:48 -0800 Subject: [PATCH 19/20] getenvvar --- .../service-bus/test/perf/track-1/sbBase.spec.ts | 10 +--------- .../service-bus/test/perf/track-2/sbBase.spec.ts | 10 +--------- 2 files changed, 2 insertions(+), 18 deletions(-) diff --git a/sdk/servicebus/service-bus/test/perf/track-1/sbBase.spec.ts b/sdk/servicebus/service-bus/test/perf/track-1/sbBase.spec.ts index 4340c62baf07..fa106c3aa22f 100644 --- a/sdk/servicebus/service-bus/test/perf/track-1/sbBase.spec.ts +++ b/sdk/servicebus/service-bus/test/perf/track-1/sbBase.spec.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import { PerfStressTest } from "@azure/test-utils-perfstress"; +import { PerfStressTest, getEnvVar } from "@azure/test-utils-perfstress"; import { ServiceBusClient } from "@azure/service-bus"; // Expects the .env file at the same level as the "test" folder @@ -24,11 +24,3 @@ export abstract class ServiceBusTest extends PerfStressTest await this.sbClient.close(); } } - -function getEnvVar(name: string) { - const val = process.env[name]; - if (!val) { - throw `Environment variable ${name} is not defined.`; - } - return val; -} diff --git a/sdk/servicebus/service-bus/test/perf/track-2/sbBase.spec.ts b/sdk/servicebus/service-bus/test/perf/track-2/sbBase.spec.ts index 3dbf8df6cb53..d427c9b58c53 100644 --- a/sdk/servicebus/service-bus/test/perf/track-2/sbBase.spec.ts +++ b/sdk/servicebus/service-bus/test/perf/track-2/sbBase.spec.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import { PerfStressTest } from "@azure/test-utils-perfstress"; +import { PerfStressTest, getEnvVar } from "@azure/test-utils-perfstress"; import { ServiceBusAdministrationClient, ServiceBusClient } from "../../../src"; // Expects the .env file at the same level as the "test" folder @@ -31,11 +31,3 @@ export abstract class ServiceBusTest extends PerfStressTest await this.sbClient.close(); } } - -function getEnvVar(name: string) { - const val = process.env[name]; - if (!val) { - throw `Environment variable ${name} is not defined.`; - } - return val; -} From e34bc0c29b54a3984c6e86f4c126242d14941edf Mon Sep 17 00:00:00 2001 From: HarshaNalluru Date: Mon, 18 Jan 2021 11:57:26 -0800 Subject: [PATCH 20/20] address feedback --- .../service-bus/test/perf/track-1/sendBatch.spec.ts | 9 ++++----- .../service-bus/test/perf/track-2/sbBase.spec.ts | 7 +++---- .../service-bus/test/perf/track-2/sendBatch.spec.ts | 9 ++++----- 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/sdk/servicebus/service-bus/test/perf/track-1/sendBatch.spec.ts b/sdk/servicebus/service-bus/test/perf/track-1/sendBatch.spec.ts index 8e7f4f608046..acdd3fbf780c 100644 --- a/sdk/servicebus/service-bus/test/perf/track-1/sendBatch.spec.ts +++ b/sdk/servicebus/service-bus/test/perf/track-1/sendBatch.spec.ts @@ -12,7 +12,7 @@ interface SendTestOptions { export class BatchSendTest extends ServiceBusTest { sender: Sender; - sbMessage: SendableMessageInfo; + batch: SendableMessageInfo[]; public options: PerfStressOptionDictionary = { messageBodySize: { required: true, @@ -33,14 +33,13 @@ export class BatchSendTest extends ServiceBusTest { constructor() { super(); this.sender = this.sbClient.createQueueClient(BatchSendTest.queueName).createSender(); - this.sbMessage = { + const sbMessage = { body: Buffer.alloc(this.parsedOptions.messageBodySize.value!) }; + this.batch = new Array(this.parsedOptions.numberOfMessages.value!).fill(sbMessage); } async runAsync(): Promise { - await this.sender.sendBatch( - new Array(this.parsedOptions.numberOfMessages.value!).fill(this.sbMessage) - ); + await this.sender.sendBatch(this.batch); } } diff --git a/sdk/servicebus/service-bus/test/perf/track-2/sbBase.spec.ts b/sdk/servicebus/service-bus/test/perf/track-2/sbBase.spec.ts index d427c9b58c53..262ac0801e16 100644 --- a/sdk/servicebus/service-bus/test/perf/track-2/sbBase.spec.ts +++ b/sdk/servicebus/service-bus/test/perf/track-2/sbBase.spec.ts @@ -13,21 +13,20 @@ const sbClient = new ServiceBusClient(connectionString); export abstract class ServiceBusTest extends PerfStressTest { sbClient: ServiceBusClient; - sbAdminClient: ServiceBusAdministrationClient; + static sbAdminClient = new ServiceBusAdministrationClient(connectionString); static queueName = `newqueue-${Math.ceil(Math.random() * 1000)}`; constructor() { super(); this.sbClient = sbClient; - this.sbAdminClient = new ServiceBusAdministrationClient(connectionString); } public async globalSetup() { - await this.sbAdminClient.createQueue(ServiceBusTest.queueName); + await ServiceBusTest.sbAdminClient.createQueue(ServiceBusTest.queueName); } public async globalCleanup() { - await this.sbAdminClient.deleteQueue(ServiceBusTest.queueName); + await ServiceBusTest.sbAdminClient.deleteQueue(ServiceBusTest.queueName); await this.sbClient.close(); } } diff --git a/sdk/servicebus/service-bus/test/perf/track-2/sendBatch.spec.ts b/sdk/servicebus/service-bus/test/perf/track-2/sendBatch.spec.ts index 935cd166c832..b3a56c7cf7c5 100644 --- a/sdk/servicebus/service-bus/test/perf/track-2/sendBatch.spec.ts +++ b/sdk/servicebus/service-bus/test/perf/track-2/sendBatch.spec.ts @@ -12,7 +12,7 @@ interface SendTestOptions { export class BatchSendTest extends ServiceBusTest { sender: ServiceBusSender; - sbMessage: ServiceBusMessage; + batch: ServiceBusMessage[]; public options: PerfStressOptionDictionary = { messageBodySize: { required: true, @@ -33,14 +33,13 @@ export class BatchSendTest extends ServiceBusTest { constructor() { super(); this.sender = this.sbClient.createSender(BatchSendTest.queueName); - this.sbMessage = { + const sbMessage = { body: Buffer.alloc(this.parsedOptions.messageBodySize.value!) }; + this.batch = new Array(this.parsedOptions.numberOfMessages.value!).fill(sbMessage); } async runAsync(): Promise { - await this.sender.sendMessages( - new Array(this.parsedOptions.numberOfMessages.value!).fill(this.sbMessage) - ); + await this.sender.sendMessages(this.batch); } }