Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Perf Tests] Storage blob perf tests - track 1 and track 2 #12737

Merged
96 commits merged into from
Jan 21, 2021
Merged
Show file tree
Hide file tree
Changes from 90 commits
Commits
Show all changes
96 commits
Select commit Hold shift + click to select a range
d732bd6
fix nodefetch test
HarshaNalluru Nov 23, 2020
8859ebb
Add perf folder and download test
HarshaNalluru Nov 23, 2020
016d7e8
perfstress-test:node command and rollup setup - currently results in …
HarshaNalluru Nov 23, 2020
342ae51
formatting
HarshaNalluru Nov 23, 2020
9a40172
Update main entry in perf package
HarshaNalluru Nov 23, 2020
514c46f
Add "module": "commonjs"
HarshaNalluru Nov 23, 2020
3a998c0
fix dotenv path
HarshaNalluru Nov 23, 2020
f6d0176
revert ts-config change and update perfstress-test:node
HarshaNalluru Nov 23, 2020
0ddcea3
dotenv update
HarshaNalluru Nov 23, 2020
ab7868b
Revert "perfstress-test:node command and rollup setup - currently res…
HarshaNalluru Nov 23, 2020
1f8b1a2
separate folders for track 1 and track 2
HarshaNalluru Nov 24, 2020
38011a8
Update TOptionsNames to TOptions and changes to interfaces for better…
HarshaNalluru Nov 30, 2020
012c6d5
update tests with the new changes to the src code.. left some TODOs
HarshaNalluru Nov 30, 2020
f626cfb
update package.json cmd from rushx to npm run
HarshaNalluru Nov 30, 2020
367467b
download test updated - with the updated framework
HarshaNalluru Nov 30, 2020
9eebb8b
Add global cleanup
HarshaNalluru Nov 30, 2020
251caf8
minor update - no need for a new const blockBlobClient
HarshaNalluru Nov 30, 2020
f02c0c9
rest of the tests for storage-blob
HarshaNalluru Dec 1, 2020
74d258b
split storage blob tests to a separate PR
HarshaNalluru Dec 1, 2020
468b7cf
Act on TODOs
HarshaNalluru Dec 1, 2020
602256f
do not "extends DefaultPerfStressOptions" for the constructor
HarshaNalluru Dec 1, 2020
f2efb1c
PerfStressPolicyTest fix accordingly
HarshaNalluru Dec 1, 2020
539f37a
remove <{}> with defaults.. everywhere
HarshaNalluru Dec 1, 2020
cd03841
Merge branch 'master' of https://github.com/Azure/azure-sdk-for-js in…
HarshaNalluru Dec 2, 2020
04a52c1
Revert "split storage blob tests to a separate PR"
HarshaNalluru Dec 2, 2020
e5e5f93
update storage tests with the newest perf framework
HarshaNalluru Dec 2, 2020
b567cc8
formatting
HarshaNalluru Dec 2, 2020
3ce9ab9
options -> parsedOptions
HarshaNalluru Dec 2, 2020
46e563c
upload -> uploaded
HarshaNalluru Dec 2, 2020
6f28967
Guide to run the tests - track-2
HarshaNalluru Dec 2, 2020
5e016f0
new project for ttrack 1 tests
HarshaNalluru Dec 2, 2020
e502c85
Instructions to ru track 1 tests
HarshaNalluru Dec 2, 2020
7c63a8e
update path in instructions
HarshaNalluru Dec 2, 2020
e5c30ee
track 1 counterpart tests
HarshaNalluru Dec 2, 2020
5bcf4ee
formatting
HarshaNalluru Dec 2, 2020
745d14b
Merge branch 'master' of https://github.com/Azure/azure-sdk-for-js in…
HarshaNalluru Dec 2, 2020
3b5bf1a
exclude compiling track 1 tests
HarshaNalluru Dec 2, 2020
b829438
omit paths
HarshaNalluru Dec 2, 2020
08d0ab4
storage base test class
HarshaNalluru Dec 4, 2020
3115856
storage base test class
HarshaNalluru Dec 4, 2020
401cdf8
StorageBlobDownloadTest
HarshaNalluru Dec 4, 2020
a5fa0db
StorageBlobUploadTest
HarshaNalluru Dec 4, 2020
e3958a7
StorageBlobDownloadTest
HarshaNalluru Dec 4, 2020
b64483d
StorageBlobListTest
HarshaNalluru Dec 4, 2020
aacb068
StorageBlobUploadFileTest
HarshaNalluru Dec 4, 2020
1c7bb04
formatting
HarshaNalluru Dec 4, 2020
1042c16
use constructores than static variables
HarshaNalluru Dec 4, 2020
39237e4
formatting
HarshaNalluru Dec 4, 2020
4a5c3cd
use connection string instead of individual account name and key
HarshaNalluru Dec 4, 2020
c4a873d
10 -> 1024
HarshaNalluru Dec 4, 2020
e530a3a
list test fix
HarshaNalluru Dec 4, 2020
d2130a8
more feedback on stream to buffer and list setup
HarshaNalluru Dec 4, 2020
6e5cdc1
upload - per call
HarshaNalluru Dec 4, 2020
a4bb526
UPDATE README
HarshaNalluru Dec 4, 2020
83e75c4
Apply similar changes to track 1 too
HarshaNalluru Dec 4, 2020
9da352e
formatting
HarshaNalluru Dec 4, 2020
3beb783
remove console.logs
HarshaNalluru Dec 4, 2020
6901a4a
formatting
HarshaNalluru Dec 4, 2020
55d6bf0
STORAGE_CONNECTION_STRING
HarshaNalluru Dec 4, 2020
f0598f3
formatting
HarshaNalluru Dec 4, 2020
e0b2f6b
remove npm run build from perf step
HarshaNalluru Dec 7, 2020
736559c
sharedKeyCredential
HarshaNalluru Dec 8, 2020
502da1c
download using sas wit different packages
HarshaNalluru Dec 8, 2020
165f238
formatting
HarshaNalluru Dec 8, 2020
d260647
remove console.log
HarshaNalluru Dec 8, 2020
7885f0b
keepAlive and instantiate in constructor
HarshaNalluru Dec 8, 2020
d79d137
Merge branch 'master' of https://github.com/Azure/azure-sdk-for-js in…
HarshaNalluru Dec 14, 2020
e6132c5
Merge branch 'master' of https://github.com/Azure/azure-sdk-for-js in…
HarshaNalluru Dec 14, 2020
791bdc0
fix upload size for track 1
HarshaNalluru Dec 14, 2020
ca5928c
Math.random()
HarshaNalluru Dec 14, 2020
2715b2f
list test repro
HarshaNalluru Dec 15, 2020
2ca2931
make the listing test similar in track 1 and track 2
HarshaNalluru Dec 17, 2020
226052b
Merge branch 'master' of https://github.com/Azure/azure-sdk-for-js in…
HarshaNalluru Dec 17, 2020
6cc0544
executeParallel
HarshaNalluru Dec 17, 2020
673d9b6
list test with executeParallel - track 2
HarshaNalluru Dec 17, 2020
1674914
list test with executeParallel - track 1
HarshaNalluru Dec 17, 2020
cc1b00e
Merge branch 'harshan/perf/storage-investigate-list-test' into harsha…
HarshaNalluru Dec 18, 2020
bf2e3b4
Merge branch 'master' of https://github.com/Azure/azure-sdk-for-js in…
HarshaNalluru Dec 23, 2020
51e5318
reuse the same blob per parallel instance
HarshaNalluru Dec 23, 2020
e125167
default size = 10240
HarshaNalluru Dec 23, 2020
83b6514
reuse the WebResource object
HarshaNalluru Dec 23, 2020
cbe6755
request be reused in core-https test
HarshaNalluru Dec 23, 2020
601e333
1000 -> 32 parallel for bulk create
HarshaNalluru Dec 23, 2020
de5cfe2
reusing the upload buffer
HarshaNalluru Dec 23, 2020
bb7ce04
Perform own cleanup before base cleanup
HarshaNalluru Dec 23, 2020
75fd139
Import generateUuid
HarshaNalluru Dec 23, 2020
d8b91f6
getEnvVar - moved to perfstress package
HarshaNalluru Dec 23, 2020
1b1af73
Merge branch 'master' of https://github.com/Azure/azure-sdk-for-js in…
HarshaNalluru Dec 23, 2020
7a82bf8
Merge branch 'master' of https://github.com/Azure/azure-sdk-for-js in…
HarshaNalluru Dec 24, 2020
5885e90
streamToBuffer3 -> drainStream
HarshaNalluru Dec 24, 2020
adc50ed
Address feedback
HarshaNalluru Jan 8, 2021
acc079e
formatting
HarshaNalluru Jan 8, 2021
6e3aab5
Merge branch 'master' of https://github.com/Azure/azure-sdk-for-js in…
HarshaNalluru Jan 15, 2021
378e7c6
Use parsedOptions after intializing
HarshaNalluru Jan 15, 2021
1ea34d4
same for track 1
HarshaNalluru Jan 15, 2021
e880b6e
Elaborated name
HarshaNalluru Jan 18, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions eng/.docsettings.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ omitted_paths:
- sdk/schemaregistry/README.md
- sdk/storage/*/test/README.md
- sdk/storage/storage-internal-avro/*
- sdk/storage/*/test/perfstress/track-1/*
- sdk/storage/*/test/perfstress/track-2/*
- sdk/textanalytics/*/test/README.md
- sdk/**/samples/*
- sdk/**/samples-*/*
Expand Down
5 changes: 5 additions & 0 deletions sdk/storage/storage-blob/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@
"lint:fix": "eslint package.json api-extractor.json src test --ext .ts --fix",
"lint": "eslint package.json api-extractor.json src test --ext .ts -f html -o storage-blob-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 && npm run unit-test:browser",
"test:node": "npm run clean && npm run build:test && npm run unit-test:node",
Expand Down Expand Up @@ -129,16 +130,19 @@
"tslib": "^2.0.0"
},
"devDependencies": {
"@azure/core-https": "1.0.0-beta.1",
"@azure/dev-tool": "^1.0.0",
"@azure/eslint-plugin-azure-sdk": "^3.0.0",
"@azure/identity": "^1.1.0",
"@azure/test-utils-recorder": "^1.0.0",
"@azure/test-utils-perfstress": "^1.0.0",
"@microsoft/api-extractor": "7.7.11",
"@rollup/plugin-multi-entry": "^3.0.0",
"@rollup/plugin-replace": "^2.2.0",
"@rollup/plugin-json": "^4.0.0",
"@types/mocha": "^7.0.2",
"@types/node": "^8.0.0",
"@types/node-fetch": "^2.5.0",
"assert": "^1.4.1",
"cross-env": "^7.0.2",
"dotenv": "^8.2.0",
Expand All @@ -162,6 +166,7 @@
"karma-remap-istanbul": "^0.6.0",
"mocha": "^7.1.1",
"mocha-junit-reporter": "^1.18.0",
"node-fetch": "^2.6.0",
"nyc": "^14.0.0",
"prettier": "^1.16.4",
"puppeteer": "^3.3.0",
Expand Down
16 changes: 16 additions & 0 deletions sdk/storage/storage-blob/test/perfstress/track-1/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
### Guide

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 `storage-blob\perfstress\track-1` folder `cd sdk\storage\storage-blob\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 `storage-blob V10`.
7. Create a storage account and populate the .env file with `ACCOUNT_NAME` and `ACCOUNT_KEY` variables.
8. Run the tests as follows
- download
- `npm run perfstress-test:node -- StorageBlobDownloadTest --warmup 2 --duration 7 --iterations 2 --parallel 2`
- upload
- `npm run perfstress-test:node -- StorageBlobUploadTest --warmup 2 --duration 7 --iterations 2 --parallel 2`
- list blobs
- `npm run perfstress-test:node -- StorageBlobListTest --warmup 2 --duration 7 --iterations 2 --parallel 2`
48 changes: 48 additions & 0 deletions sdk/storage/storage-blob/test/perfstress/track-1/download.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.

import { generateUuid } from "@azure/core-http";
import { Aborter, BlobURL, BlockBlobURL } from "@azure/storage-blob";
import { PerfStressOptionDictionary, drainStream } from "@azure/test-utils-perfstress";
import { StorageBlobTest } from "./storageTest.spec";

interface StorageBlobDownloadTestOptions {
size: number;
}

export class StorageBlobDownloadTest extends StorageBlobTest<StorageBlobDownloadTestOptions> {
public options: PerfStressOptionDictionary<StorageBlobDownloadTestOptions> = {
size: {
required: true,
description: "Size in bytes",
shortName: "sz",
longName: "size",
defaultValue: 10240
}
};

static blobName = generateUuid();
blockBlobClient: BlockBlobURL;

constructor() {
super();
this.blockBlobClient = BlockBlobURL.fromBlobURL(
BlobURL.fromContainerURL(this.containerClient, StorageBlobDownloadTest.blobName)
);
}

public async globalSetup() {
await super.globalSetup();
// Create a blob
await this.blockBlobClient.upload(
Aborter.none,
Buffer.alloc(this.parsedOptions.size.value!),
this.parsedOptions.size.value!
);
}

async runAsync(): Promise<void> {
const downloadResponse = await this.blockBlobClient.download(Aborter.none, 0);
await drainStream(downloadResponse.readableStreamBody!);
}
}
15 changes: 15 additions & 0 deletions sdk/storage/storage-blob/test/perfstress/track-1/index.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.

import { PerfStressProgram, selectPerfStressTest } from "@azure/test-utils-perfstress";
import { StorageBlobDownloadTest } from "./download.spec";
import { StorageBlobUploadTest } from "./upload.spec";
import { StorageBlobListTest } from "./listBlobs.spec";

console.log("=== Starting the perfStress test ===");

const perfStressProgram = new PerfStressProgram(
selectPerfStressTest([StorageBlobDownloadTest, StorageBlobUploadTest, StorageBlobListTest])
);

perfStressProgram.run();
45 changes: 45 additions & 0 deletions sdk/storage/storage-blob/test/perfstress/track-1/listBlobs.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
import { generateUuid } from "@azure/core-http";
import { Aborter, BlockBlobURL } from "@azure/storage-blob";
import { executeParallel, PerfStressOptionDictionary } from "@azure/test-utils-perfstress";
import { StorageBlobTest } from "./storageTest.spec";

interface StorageBlobListTestOptions {
count: number;
}

export class StorageBlobListTest extends StorageBlobTest<StorageBlobListTestOptions> {
public options: PerfStressOptionDictionary<StorageBlobListTestOptions> = {
count: {
required: true,
description: "Number of blobs to be listed",
longName: "count",
defaultValue: 10
}
};

public async globalSetup() {
await super.globalSetup();
await executeParallel(
async (count: number, parallelIndex: number) => {
const blockBlobClient = BlockBlobURL.fromContainerURL(this.containerClient, generateUuid());
blockBlobClient.upload(Aborter.none, Buffer.alloc(0), 0);
console.log(`[` + parallelIndex + `] ` + count);
},
this.parsedOptions.count.value!,
32
);
}

async runAsync(): Promise<void> {
// List blobs
let marker = undefined;
do {
const segmentResponse = await this.containerClient.listBlobFlatSegment(Aborter.none, marker);
for (const _ of segmentResponse.segment.blobItems) {
}
marker = segmentResponse.nextMarker;
} while (marker);
}
}
18 changes: 18 additions & 0 deletions sdk/storage/storage-blob/test/perfstress/track-1/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"name": "track-1",
"version": "1.0.0",
"description": "",
"main": "index.js",
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@azure/storage-blob": "^10.5.0",
"@azure/test-utils-perfstress": "file:../../../../../test-utils/perfstress/azure-test-utils-perfstress-1.0.0.tgz",
mikeharder marked this conversation as resolved.
Show resolved Hide resolved
"@types/uuid": "^8.3.0",
"uuid": "^8.3.2"
},
"scripts": {
"perfstress-test:node": "ts-node index.spec.ts"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.

import { generateUuid } from "@azure/core-http";
import {
Aborter,
ContainerURL,
ServiceURL,
SharedKeyCredential,
StorageURL
} from "@azure/storage-blob";
import { PerfStressTest, getEnvVar } from "@azure/test-utils-perfstress";

// Expects the .env file at the same level as the "test" folder
import * as dotenv from "dotenv";
dotenv.config({ path: "../../../.env" });

export abstract class StorageBlobTest<TOptions> extends PerfStressTest<TOptions> {
blobServiceClient: ServiceURL;
containerClient: ContainerURL;
static containerName = generateUuid();

constructor() {
super();
const connectionString = getEnvVar("STORAGE_CONNECTION_STRING");
const accountName = getValueInConnString(connectionString, "AccountName");
const accountKey = getValueInConnString(connectionString, "AccountKey");

const sharedKeyCredential = new SharedKeyCredential(accountName, accountKey);
this.blobServiceClient = new ServiceURL(
`https://${accountName}.blob.core.windows.net`,
StorageURL.newPipeline(sharedKeyCredential)
);
this.containerClient = ContainerURL.fromServiceURL(
this.blobServiceClient,
StorageBlobTest.containerName
);
}

public async globalSetup() {
await this.containerClient.create(Aborter.none);
HarshaNalluru marked this conversation as resolved.
Show resolved Hide resolved
}

public async globalCleanup() {
await this.containerClient.delete(Aborter.none);
}
}

export function getValueInConnString(
HarshaNalluru marked this conversation as resolved.
Show resolved Hide resolved
connectionString: string,
argument: "AccountName" | "AccountKey"
) {
const elements = connectionString.split(";");
for (const element of elements) {
if (element.trim().startsWith(argument)) {
return element.trim().match(argument + "=(.*)")![1];
}
}
return "";
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"compilerOptions": {
"module": "commonjs"
}
}
38 changes: 38 additions & 0 deletions sdk/storage/storage-blob/test/perfstress/track-1/upload.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.

import { generateUuid } from "@azure/core-http";
import { Aborter, BlockBlobURL } from "@azure/storage-blob";
import { PerfStressOptionDictionary } from "@azure/test-utils-perfstress";

// Expects the .env file at the same level as the "test" folder
import * as dotenv from "dotenv";
import { StorageBlobTest } from "./storageTest.spec";
dotenv.config({ path: "../../../.env" });

interface StorageBlobUploadTestOptions {
size: number;
}

export class StorageBlobUploadTest extends StorageBlobTest<StorageBlobUploadTestOptions> {
blobName = "";
buffer = Buffer.alloc(this.parsedOptions.size.value!);
public options: PerfStressOptionDictionary<StorageBlobUploadTestOptions> = {
size: {
required: true,
description: "Size in bytes",
shortName: "sz",
longName: "size",
defaultValue: 10240
}
};

async setup() {
this.blobName = generateUuid();
}

async runAsync(): Promise<void> {
const blockBlobClient = BlockBlobURL.fromContainerURL(this.containerClient, this.blobName);
mikeharder marked this conversation as resolved.
Show resolved Hide resolved
await blockBlobClient.upload(Aborter.none, this.buffer, this.parsedOptions.size.value!);
}
}
23 changes: 23 additions & 0 deletions sdk/storage/storage-blob/test/perfstress/track-2/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
### Guide

1. Build the storage-blob package `rush build -t storage-blob`.
2. Navigate to `storage-blob` folder `cd sdk\storage\storage-blob\`.
3. Create a storage account and populate the .env file at `storage\storage-blob` folder with `STORAGE_CONNECTION_STRING` variables.
4. Run the tests as follows

- download
- `npm run perfstress-test:node -- StorageBlobDownloadTest --warmup 2 --duration 7 --iterations 2 --parallel 2`
- upload
- `npm run perfstress-test:node -- StorageBlobUploadTest --warmup 2 --duration 7 --iterations 2 --parallel 2`
- upload file
- `npm run perfstress-test:node -- StorageBlobUploadFileTest --warmup 2 --duration 7 --iterations 2 --parallel 2`
- list blobs
- `npm run perfstress-test:node -- StorageBlobListTest --warmup 2 --duration 7 --iterations 2 --parallel 2`
- download using sas with storage-blob
- `npm run perfstress-test:node -- StorageBlobDownloadWithSASTest --warmup 2 --duration 7 --iterations 2 --parallel 2`
- download using sas with node-fetch
- `npm run perfstress-test:node -- NodeFetchDownloadWithSASTest --warmup 2 --duration 7 --iterations 2 --parallel 2`
- download using sas with core-http
- `npm run perfstress-test:node -- CoreHTTPDownloadWithSASTest --warmup 2 --duration 7 --iterations 2 --parallel 2`
- download using sas with core-https
- `npm run perfstress-test:node -- CoreHTTPSDownloadWithSASTest --warmup 2 --duration 7 --iterations 2 --parallel 2`
35 changes: 35 additions & 0 deletions sdk/storage/storage-blob/test/perfstress/track-2/core-http.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.

import { StorageBlobDownloadWithSASTest } from "./dowloadWithSAS.spec";
import { ServiceClient, WebResource } from "@azure/core-http";
import { drainStream } from "@azure/test-utils-perfstress";

export class CoreHTTPDownloadWithSASTest extends StorageBlobDownloadWithSASTest {
client: ServiceClient;
webResource: WebResource;
constructor() {
super();
this.client = new ServiceClient();
this.webResource = new WebResource(
this.sasUrl,
undefined,
undefined,
undefined,
undefined,
true, // streamResponseBody
undefined,
undefined,
undefined,
undefined,
undefined,
undefined,
true // keepAlive
);
}

async runAsync(): Promise<void> {
const response = await this.client.sendRequest(this.webResource);
await drainStream(response.readableStreamBody!);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.

import { StorageBlobDownloadWithSASTest } from "./dowloadWithSAS.spec";
import { DefaultHttpsClient, createPipelineRequest, PipelineRequest } from "@azure/core-https";
import { drainStream } from "@azure/test-utils-perfstress";

export class CoreHTTPSDownloadWithSASTest extends StorageBlobDownloadWithSASTest {
client: DefaultHttpsClient;
request: PipelineRequest<any>;
constructor() {
super();
this.client = new DefaultHttpsClient();
this.request = createPipelineRequest({
url: this.sasUrl,
streamResponseBody: true,
keepAlive: true
});
}

async runAsync(): Promise<void> {
const response = await this.client.sendRequest(this.request);
await drainStream(response.readableStreamBody!);
}
}
Loading