-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Showing
9 changed files
with
185 additions
and
0 deletions.
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
### Guide | ||
|
||
1. Build the app-config perf tests package `rush build -t perf-app-configuration`. | ||
2. Copy the `sample.env` file and name it as `.env`. | ||
3. Create a App Configuration resource and populate the `.env` file with `APPCONFIG_CONNECTION_STRING` variable. | ||
4. Run the tests as follows | ||
|
||
- list configuration settings | ||
- `npm run perf-test:node -- ListSettingsTest --warmup 2 --duration 7 --iterations 2 --parallel 2` |
47 changes: 47 additions & 0 deletions
47
sdk/appconfiguration/perf-tests/app-configuration/package.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
{ | ||
"name": "@azure-tests/perf-app-configuration", | ||
"version": "1.0.0", | ||
"description": "", | ||
"main": "", | ||
"keywords": [], | ||
"author": "", | ||
"license": "ISC", | ||
"dependencies": { | ||
"@azure/app-configuration": "^1.2.0-beta.2", | ||
"@azure/core-http": "^2.0.0", | ||
"@azure/test-utils-perfstress": "^1.0.0", | ||
"dotenv": "^8.2.0" | ||
}, | ||
"devDependencies": { | ||
"@types/uuid": "^8.0.0", | ||
"@types/node": "^8.0.0", | ||
"uuid": "^8.3.0", | ||
"tslib": "^2.2.0", | ||
"ts-node": "^9.0.0", | ||
"typescript": "~4.2.0" | ||
}, | ||
"private": true, | ||
"scripts": { | ||
"perf-test:node": "ts-node test/index.spec.ts", | ||
"audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit", | ||
"build": "tsc -p .", | ||
"build:samples": "echo skipped", | ||
"build:test": "echo skipped", | ||
"check-format": "prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", | ||
"clean": "rimraf dist dist-esm test-dist typings *.tgz *.log", | ||
"format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", | ||
"integration-test:browser": "echo skipped", | ||
"integration-test:node": "echo skipped", | ||
"integration-test": "echo skipped", | ||
"lint:fix": "eslint package.json src test --ext .ts --fix --fix-type [problem,suggestion]", | ||
"lint": "eslint package.json src test --ext .ts -f html -o app-config-perf-test-lintReport.html || exit 0", | ||
"pack": "npm pack 2>&1", | ||
"prebuild": "npm run clean", | ||
"unit-test:browser": "echo skipped", | ||
"unit-test:node": "echo skipped", | ||
"unit-test": "echo skipped", | ||
"test:browser": "echo skipped", | ||
"test:node": "echo skipped", | ||
"test": "echo skipped" | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
# This is the connection string for your app-configuration resource | ||
# You can get this from the Azure portal. | ||
APPCONFIG_CONNECTION_STRING=<app-configuration connection string goes here> |
15 changes: 15 additions & 0 deletions
15
sdk/appconfiguration/perf-tests/app-configuration/test/appConfigBase.spec.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
import { PerfStressTest, getEnvVar } from "@azure/test-utils-perfstress"; | ||
import { AppConfigurationClient } from "@azure/app-configuration"; | ||
// Expects the .env file at the same level | ||
import * as dotenv from "dotenv"; | ||
dotenv.config(); | ||
|
||
export abstract class AppConfigTest<TOptions> extends PerfStressTest<TOptions> { | ||
client: AppConfigurationClient; | ||
|
||
constructor() { | ||
super(); | ||
const connectionString = getEnvVar("APPCONFIG_CONNECTION_STRING"); | ||
this.client = new AppConfigurationClient(connectionString); | ||
} | ||
} |
8 changes: 8 additions & 0 deletions
8
sdk/appconfiguration/perf-tests/app-configuration/test/index.spec.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
import { PerfStressProgram, selectPerfStressTest } from "@azure/test-utils-perfstress"; | ||
import { ListSettingsTest } from "./listSettings.spec"; | ||
|
||
console.log("=== Starting the perfStress test ==="); | ||
|
||
const perfStressProgram = new PerfStressProgram(selectPerfStressTest([ListSettingsTest])); | ||
|
||
perfStressProgram.run(); |
65 changes: 65 additions & 0 deletions
65
sdk/appconfiguration/perf-tests/app-configuration/test/listSettings.spec.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
// Copyright (c) Microsoft Corporation. | ||
// Licensed under the MIT license. | ||
|
||
import { generateUuid } from "@azure/core-http"; | ||
import { PerfStressOptionDictionary, executeParallel } from "@azure/test-utils-perfstress"; | ||
import { AppConfigTest } from "./appConfigBase.spec"; | ||
|
||
interface ListTestOptions { | ||
/** | ||
* Number of settings to be created/listed in the test | ||
*/ | ||
count: number; | ||
} | ||
|
||
export class ListSettingsTest extends AppConfigTest<ListTestOptions> { | ||
static prefix = generateUuid(); | ||
public options: PerfStressOptionDictionary<ListTestOptions> = { | ||
count: { | ||
required: true, | ||
description: "Number of settings to be listed", | ||
longName: "count", | ||
defaultValue: 10 | ||
} | ||
}; | ||
|
||
public async globalSetup() { | ||
await executeParallel( | ||
async (_count: number, _index: number) => { | ||
await this.client.addConfigurationSetting({ | ||
key: ListSettingsTest.prefix + generateUuid(), | ||
value: "random" | ||
}); | ||
}, | ||
this.parsedOptions.count.value!, | ||
32 | ||
); | ||
} | ||
|
||
async runAsync(): Promise<void> { | ||
for await (const response of this.client | ||
.listConfigurationSettings({ keyFilter: ListSettingsTest.prefix + "*" }) | ||
.byPage()) { | ||
for (const _ of response.items) { | ||
} | ||
} | ||
} | ||
|
||
public async globalCleanup() { | ||
const keys: string[] = []; | ||
for await (const response of this.client | ||
.listConfigurationSettings({ keyFilter: ListSettingsTest.prefix + "*" }) | ||
.byPage()) { | ||
for (const setting of response.items) { | ||
keys.push(setting.key); | ||
} | ||
} | ||
await executeParallel( | ||
async (count: number, _: number) => { | ||
await this.client.deleteConfigurationSetting({ key: keys[count] }); | ||
}, | ||
this.parsedOptions.count.value!, | ||
32 | ||
); | ||
} | ||
} |
16 changes: 16 additions & 0 deletions
16
sdk/appconfiguration/perf-tests/app-configuration/tsconfig.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
{ | ||
"extends": "../../../../tsconfig.package", | ||
"compilerOptions": { | ||
"module": "CommonJS", | ||
"declarationDir": "./typings/latest", | ||
"lib": [ | ||
"ES6", | ||
"ESNext.AsyncIterable" | ||
], | ||
"noEmit": true | ||
}, | ||
"compileOnSave": true, | ||
"include": [ | ||
"./test/**/*.ts" | ||
] | ||
} |