-
Notifications
You must be signed in to change notification settings - Fork 3.2k
[perf] Add pipeline template and storage pipelines #24894
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
Merged
Merged
Changes from 48 commits
Commits
Show all changes
52 commits
Select commit
Hold shift + click to select a range
543f359
Add sdk/storage/perf.yml
mikeharder 0e644e6
Checkout perf-automation branch
mikeharder d1e1f91
fetchDepth: 1
mikeharder 9170731
revert fetchDepth
mikeharder 91c130d
Create config.yml, run real tests
mikeharder 79e7456
Use python3.7
mikeharder 1d2128a
Debug logging
mikeharder 1f444a2
Fix build path
mikeharder c7dde69
Publish results.json
mikeharder 720a89a
Run 5 iterations of real-world tests
mikeharder ce7371a
Run GA packages to compare to main
mikeharder b741789
Add ResourceType parameter to TestResources.ps1 scripts
mikeharder a63b537
Add perf-resources.json
mikeharder edae583
Add ResourceType parameter
mikeharder d8c25ba
output env vars
mikeharder 0a04086
Deploy test resources
mikeharder 33571ee
Fix template path
mikeharder 94c6591
Fix template path
mikeharder 2541cdb
Fix parameter list
mikeharder 9653fad
Fix yaml parameter definitions
mikeharder 686ca75
Fix path to PSModule-Helpers.ps1
mikeharder b94d4d3
Revert path change
mikeharder 82d348c
Change checkout paths
mikeharder 7829eac
Run tests and remove test resources
mikeharder 02ba340
Use dedicated perf agent pool
mikeharder 92edf2f
Revert System.Debug
mikeharder 9104fdd
Print results
mikeharder 8ad36a2
Merge branch 'main' into feature/perf-automation
mikeharder cd6230d
Update eng/common
mikeharder 6bb810c
Remove JSON resources
mikeharder 4666592
Add perf template
mikeharder 6456b02
Add pipeline for storage-blob
mikeharder 6e34f4a
Set PythonVersion to 3.7
mikeharder 9d7fc0c
Fix indentation
mikeharder 077a9a4
Add pipeline for file-share
mikeharder f1a01cc
Remove old perf pipeline
mikeharder f5dba20
Add pipeline for datalake
mikeharder 0c80401
Merge branch 'main' into feature/perf-automation
mikeharder 8623511
Update default package versions
mikeharder 103f48e
Merge branch 'main' into feature/perf-automation
mikeharder 7607709
Merge branch 'main' into feature/perf-automation
mikeharder 79f0695
Merge branch 'main' into feature/perf-automation
mikeharder df2b4b2
Print results.csv and results.json separately
mikeharder 5a8851c
Merge branch 'main' into feature/perf-automation
mikeharder 91cc8bc
Add EndpointSuffix to connection string
mikeharder 1c202d4
Merge branch 'main' into feature/perf-automation
mikeharder f14da8c
Use main branch of azure-sdk-tools
mikeharder 1911d8a
Restore sdk/storage/test-resources.json
mikeharder 3c32e8b
Merge branch 'main' into feature/perf-automation
mikeharder 50ea1c6
Merge branch 'main' into feature/perf-automation
mikeharder 2a4dd37
Merge branch 'main' into feature/perf-automation
mikeharder 26c0909
Import globals.yml, use absolute paths
mikeharder File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or 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,116 @@ | ||
| parameters: | ||
| - name: serviceDirectory | ||
| type: string | ||
| default: '' | ||
| - name: services | ||
| type: string | ||
| default: '' | ||
| - name: packageVersions | ||
| type: string | ||
| default: '.*' | ||
| - name: tests | ||
| type: string | ||
| default: '' | ||
| - name: arguments | ||
| type: string | ||
| default: '' | ||
| - name: iterations | ||
| type: number | ||
| default: '5' | ||
| - name: envVars | ||
| type: object | ||
| default: {} | ||
| - name: additionalArguments | ||
| type: string | ||
| default: '' | ||
|
|
||
| variables: | ||
| - name: NugetSecurityAnalysisWarningLevel | ||
| value: 'none' | ||
| - name: skipComponentGovernanceDetection | ||
| value: 'true' | ||
| - name: DisableDockerDetector | ||
| value: 'true' | ||
| - name: Pool | ||
| value: 'azsdk-pool-mms-ubuntu-2004-perf' | ||
| - name: OSVmImage | ||
| value: 'MMSUbuntu20.04' | ||
| - name: PythonVersion | ||
| value: '3.7' | ||
|
|
||
| resources: | ||
| repositories: | ||
| - repository: azure-sdk-tools | ||
| type: github | ||
| endpoint: Azure | ||
| name: Azure/azure-sdk-tools | ||
|
|
||
| jobs: | ||
| - job: Perf | ||
| timeoutInMinutes: 360 | ||
| pool: | ||
| name: $(Pool) | ||
| vmImage: $(OSVmImage) | ||
| steps: | ||
| - checkout: self | ||
| path: s | ||
|
|
||
| - checkout: azure-sdk-tools | ||
| path: s/azure-sdk-tools | ||
|
|
||
| - template: /eng/common/pipelines/templates/steps/verify-agent-os.yml | ||
| parameters: | ||
| AgentImage: $(OSVmImage) | ||
|
|
||
| - task: UsePythonVersion@0 | ||
| displayName: "Use Python $(PythonVersion)" | ||
| inputs: | ||
| versionSpec: $(PythonVersion) | ||
|
|
||
| - template: ../../../common/TestResources/deploy-test-resources.yml | ||
mikeharder marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| parameters: | ||
| ServiceDirectory: ${{ parameters.serviceDirectory }} | ||
| Location: westus | ||
| ResourceType: perf | ||
|
|
||
| - pwsh: | | ||
| set-content -path config.yml -value "WorkingDirectories:" | ||
| add-content -path config.yml -value " Python: $(Agent.BuildDirectory)/s" | ||
| workingDirectory: azure-sdk-tools/tools/perf-automation/Azure.Sdk.Tools.PerfAutomation | ||
| displayName: Create config.yml | ||
|
|
||
| - script: >- | ||
| dotnet run -- run | ||
| --no-sync | ||
| --languages python | ||
| --services "${{ parameters.services }}" | ||
| --package-versions "${{ parameters.packageVersions }}" | ||
| --tests "${{ parameters.tests }}" | ||
| --arguments "${{ parameters.arguments }}" | ||
| --iterations ${{ parameters.iterations }} | ||
| ${{ parameters.additionalArguments }} | ||
| workingDirectory: azure-sdk-tools/tools/perf-automation/Azure.Sdk.Tools.PerfAutomation | ||
| env: | ||
| ${{ each var in parameters.EnvVars }}: | ||
| ${{ var.key }}: ${{ var.value }} | ||
| displayName: Run perf tests | ||
|
|
||
| - pwsh: | | ||
| get-content results.csv | ||
| workingDirectory: azure-sdk-tools/tools/perf-automation/Azure.Sdk.Tools.PerfAutomation/results | ||
| displayName: Print results.csv | ||
|
|
||
| - pwsh: | | ||
| get-content results.json | ||
| workingDirectory: azure-sdk-tools/tools/perf-automation/Azure.Sdk.Tools.PerfAutomation/results | ||
| displayName: Print results.json | ||
|
|
||
| - template: ../../../common/TestResources/remove-test-resources.yml | ||
mikeharder marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| parameters: | ||
| ServiceDirectory: ${{ parameters.serviceDirectory }} | ||
| ResourceType: perf | ||
|
|
||
| - task: PublishPipelineArtifact@1 | ||
| inputs: | ||
| targetPath: azure-sdk-tools/tools/perf-automation/Azure.Sdk.Tools.PerfAutomation/results | ||
| artifactName: results | ||
This file contains hidden or 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,21 @@ | ||
| param baseName string = resourceGroup().name | ||
| param location string = resourceGroup().location | ||
|
|
||
| resource storageAccount 'Microsoft.Storage/storageAccounts@2019-06-01' = { | ||
| name: '${baseName}blob' | ||
| location: location | ||
| kind: 'BlockBlobStorage' | ||
| sku: { | ||
| name: 'Premium_LRS' | ||
| } | ||
| } | ||
|
|
||
| var name = storageAccount.name | ||
| var key = storageAccount.listKeys().keys[0].value | ||
| var connectionString = 'DefaultEndpointsProtocol=https;AccountName=${name};AccountKey=${key}' | ||
|
|
||
| output AZURE_STORAGE_ACCOUNT_NAME string = name | ||
| output AZURE_STORAGE_ACCOUNT_KEY string = key | ||
| output AZURE_STORAGE_CONNECTION_STRING string = connectionString | ||
| output STANDARD_STORAGE_CONNECTION_STRING string = connectionString | ||
| output STORAGE_CONNECTION_STRING string = connectionString |
This file contains hidden or 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,32 @@ | ||
| parameters: | ||
| - name: packageVersions | ||
| displayName: PackageVersions (regex of package versions to run) | ||
| type: string | ||
| default: '12|source' | ||
| - name: tests | ||
| displayName: Tests (regex of tests to run) | ||
| type: string | ||
| default: '^(download|upload|list-blobs)$' | ||
| - name: arguments | ||
| displayName: Arguments (regex of arguments to run) | ||
| type: string | ||
| default: '(10240)|(10485760)|(1073741824)|(5 )|(500 )|(50000 )' | ||
| - name: iterations | ||
| displayName: Iterations (times to run each test) | ||
| type: number | ||
| default: '5' | ||
| - name: additionalArguments | ||
| displayName: AdditionalArguments (passed to PerfAutomation) | ||
| type: string | ||
| default: ' ' | ||
|
|
||
| extends: | ||
| template: ../../../eng/pipelines/templates/jobs/perf.yml | ||
mikeharder marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| parameters: | ||
| serviceDirectory: storage/azure-storage-blob | ||
| services: "^storage-blob$" | ||
| packageVersions: ${{ parameters.packageVersions }} | ||
| tests: ${{ parameters.tests }} | ||
| arguments: ${{ parameters.arguments }} | ||
| iterations: ${{ parameters.iterations }} | ||
| additionalArguments: ${{ parameters.additionalArguments }} | ||
30 changes: 30 additions & 0 deletions
30
sdk/storage/azure-storage-file-datalake/perf-resources.bicep
This file contains hidden or 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,30 @@ | ||
| param baseName string = resourceGroup().name | ||
| param location string = resourceGroup().location | ||
|
|
||
| resource storageAccount 'Microsoft.Storage/storageAccounts@2019-06-01' = { | ||
| name: '${baseName}dlake' | ||
| location: location | ||
| kind: 'BlockBlobStorage' | ||
| sku: { | ||
| name: 'Premium_LRS' | ||
| } | ||
| properties: { | ||
| isHnsEnabled: true | ||
| } | ||
| } | ||
|
|
||
| var name = storageAccount.name | ||
| var key = storageAccount.listKeys().keys[0].value | ||
|
|
||
| // EndpointSuffix is required by azure-storage-file-datalake 12.7.0 and earlier (fixed in #24779) | ||
| var connectionString = 'DefaultEndpointsProtocol=https;AccountName=${name};AccountKey=${key};EndpointSuffix=core.windows.net' | ||
|
|
||
| // .NET | ||
| output DATALAKE_STORAGE_ACCOUNT_NAME string = name | ||
| output DATALAKE_STORAGE_ACCOUNT_KEY string = key | ||
|
|
||
| // Java, JS | ||
| output STORAGE_CONNECTION_STRING string = connectionString | ||
|
|
||
| // Python | ||
| output AZURE_STORAGE_CONNECTION_STRING string = connectionString |
This file contains hidden or 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,32 @@ | ||
| parameters: | ||
| - name: packageVersions | ||
| displayName: PackageVersions (regex of package versions to run) | ||
| type: string | ||
| default: '12|source' | ||
| - name: tests | ||
| displayName: Tests (regex of tests to run) | ||
| type: string | ||
| default: '^(download|upload)$' | ||
| - name: arguments | ||
| displayName: Arguments (regex of arguments to run) | ||
| type: string | ||
| default: '(10240)|(10485760)|(1073741824)' | ||
| - name: iterations | ||
| displayName: Iterations (times to run each test) | ||
| type: number | ||
| default: '5' | ||
| - name: additionalArguments | ||
| displayName: AdditionalArguments (passed to PerfAutomation) | ||
| type: string | ||
| default: ' ' | ||
|
|
||
| extends: | ||
| template: ../../../eng/pipelines/templates/jobs/perf.yml | ||
mikeharder marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| parameters: | ||
| serviceDirectory: storage/azure-storage-file-datalake | ||
| services: "^storage-file-datalake$" | ||
| packageVersions: ${{ parameters.packageVersions }} | ||
| tests: ${{ parameters.tests }} | ||
| arguments: ${{ parameters.arguments }} | ||
| iterations: ${{ parameters.iterations }} | ||
| additionalArguments: ${{ parameters.additionalArguments }} | ||
This file contains hidden or 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,30 @@ | ||
| param baseName string = resourceGroup().name | ||
| param location string = resourceGroup().location | ||
|
|
||
| resource storageAccount 'Microsoft.Storage/storageAccounts@2019-06-01' = { | ||
| name: '${baseName}files' | ||
| location: location | ||
| kind: 'FileStorage' | ||
| sku: { | ||
| name: 'Premium_LRS' | ||
| } | ||
|
|
||
| resource service 'fileServices' = { | ||
| name: 'default' | ||
| properties: { | ||
| shareDeleteRetentionPolicy: { | ||
| enabled: false | ||
| } | ||
| } | ||
| } | ||
| } | ||
|
|
||
| var name = storageAccount.name | ||
| var key = storageAccount.listKeys().keys[0].value | ||
| var connectionString = 'DefaultEndpointsProtocol=https;AccountName=${name};AccountKey=${key}' | ||
|
|
||
| output AZURE_STORAGE_ACCOUNT_NAME string = name | ||
| output AZURE_STORAGE_ACCOUNT_KEY string = key | ||
| output AZURE_STORAGE_CONNECTION_STRING string = connectionString | ||
| output STANDARD_STORAGE_CONNECTION_STRING string = connectionString | ||
| output STORAGE_CONNECTION_STRING string = connectionString |
This file contains hidden or 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,32 @@ | ||
| parameters: | ||
| - name: packageVersions | ||
| displayName: PackageVersions (regex of package versions to run) | ||
| type: string | ||
| default: '12|source' | ||
| - name: tests | ||
| displayName: Tests (regex of tests to run) | ||
| type: string | ||
| default: '^(download|upload)$' | ||
| - name: arguments | ||
| displayName: Arguments (regex of arguments to run) | ||
| type: string | ||
| default: '(10240)|(10485760)|(1073741824)' | ||
| - name: iterations | ||
| displayName: Iterations (times to run each test) | ||
| type: number | ||
| default: '5' | ||
| - name: additionalArguments | ||
| displayName: AdditionalArguments (passed to PerfAutomation) | ||
| type: string | ||
| default: ' ' | ||
|
|
||
| extends: | ||
| template: ../../../eng/pipelines/templates/jobs/perf.yml | ||
mikeharder marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| parameters: | ||
| serviceDirectory: storage/azure-storage-file-share | ||
| services: "^storage-file-share$" | ||
| packageVersions: ${{ parameters.packageVersions }} | ||
| tests: ${{ parameters.tests }} | ||
| arguments: ${{ parameters.arguments }} | ||
| iterations: ${{ parameters.iterations }} | ||
| additionalArguments: ${{ parameters.additionalArguments }} | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.