diff --git a/eng/pipelines/templates/jobs/archetype-sdk-tests.yml b/eng/pipelines/templates/jobs/archetype-sdk-tests.yml index e25859deb1b5..8767dc198574 100644 --- a/eng/pipelines/templates/jobs/archetype-sdk-tests.yml +++ b/eng/pipelines/templates/jobs/archetype-sdk-tests.yml @@ -1,5 +1,6 @@ parameters: PreSteps: [] + PostSteps: [] EnvVars: {} MaxParallel: 0 @@ -70,3 +71,5 @@ jobs: testRunTitle: "$(OSName) $(TestTargetFramework)" testResultsFormat: "VSTest" mergeTestResults: true + + - ${{ parameters.PostSteps }} diff --git a/sdk/core/Azure.Core/tests/TestFramework/TestRecording.cs b/sdk/core/Azure.Core/tests/TestFramework/TestRecording.cs index 8ffccc01435d..4b4edf4d3867 100644 --- a/sdk/core/Azure.Core/tests/TestFramework/TestRecording.cs +++ b/sdk/core/Azure.Core/tests/TestFramework/TestRecording.cs @@ -59,6 +59,7 @@ public TestRecording(RecordedTestMode mode, string sessionFile, RecordedTestSani private RecordSession _previousSession; + private static readonly Random s_random = new Random(); private Random _random; public Random Random @@ -70,7 +71,8 @@ public Random Random switch (Mode) { case RecordedTestMode.Live: - _random = new Random(); + // Generate random values across all instances in the current domain. + _random = s_random; break; case RecordedTestMode.Record: // Try get the seed from existing session diff --git a/sdk/keyvault/tests.yml b/sdk/keyvault/tests.yml index 083cfd528cd5..2fbe183c116e 100644 --- a/sdk/keyvault/tests.yml +++ b/sdk/keyvault/tests.yml @@ -10,7 +10,6 @@ resources: jobs: - template: ../../eng/pipelines/templates/jobs/archetype-sdk-tests.yml parameters: - MaxParallel: 1 ServiceDirectory: keyvault EnvVars: AZURE_TENANT_ID: $(aad-azure-sdk-test-tenant-id) @@ -18,3 +17,50 @@ jobs: AZURE_CLIENT_SECRET: $(net-keyvault-azure-client-secret) AZURE_KEYVAULT_URL: $(net-keyvault-azure-keyvault-url) AZURE_KEYVAULT_TEST_MODE: Live + + PreSteps: + - task: UsePythonVersion@0 + displayName: Use Python 3.x + inputs: + versionSpec: '3.x' + architecture: x64 + + - pwsh: | + az --version + az login --service-principal -u "$(net-keyvault-azure-client-id)" --password "$(net-keyvault-azure-client-secret)" --tenant "$(aad-azure-sdk-test-tenant-id)" + displayName: Log into azure-cli + + - pwsh: | + # Generate a name that should be <= 24 characters. + $name = 'adpnet{0}-{1}-{2}' -f $(Build.BuildId), @{Linux='lnx'; MacOS='mac'; Windows='win'}['$(OSName)'], @{net461='net461'; 'netcoreapp2.1'='core21'}['$(TestTargetFramework)'] + Write-Host "Generated name: $name" + + # Create name and URL variables for subsequent steps. + Write-Host "##vso[task.setvariable variable=net-keyvault-azure-keyvault-name]$name" + Write-Host "##vso[task.setvariable variable=net-keyvault-azure-keyvault-url]https://$name.vault.azure.net" + + # Also overwrite the environment variable in case this is evaluated too late. + Write-Host "##vso[task.setvariable variable=AZURE_KEYVAULT_URL]https://$name.vault.azure.net" + displayName: Generate resource name + + - pwsh: | + Write-Host "Creating resource group: $(net-keyvault-azure-keyvault-name)rg" + az group create --name "$(net-keyvault-azure-keyvault-name)rg" --location westus --tags ServiceDirectory=keyvault DeleteAfter="$([DateTime]::UtcNow.ToString('o'))" + az group wait --name "$(net-keyvault-azure-keyvault-name)rg" + + Write-Host "Creating key vault: $(net-keyvault-azure-keyvault-name)" + az keyvault create --name "$(net-keyvault-azure-keyvault-name)" --resource-group "$(net-keyvault-azure-keyvault-name)rg" --location westus --enable-soft-delete --sku premium + displayName: Create Key Vault + + - pwsh: > + az keyvault set-policy --name "$(net-keyvault-azure-keyvault-name)" --resource-group "$(net-keyvault-azure-keyvault-name)rg" --spn "$(net-keyvault-azure-client-id)" + --certificate-permissions backup create delete deleteissuers get getissuers import list listissuers managecontacts manageissuers purge recover restore setissuers update + --key-permissions backup create decrypt delete encrypt get import list purge recover restore sign unwrapKey update verify wrapKey + --secret-permissions backup delete get list purge recover restore set + displayName: Set Key Vault permissions + + PostSteps: + - pwsh: | + az group delete --name "$(net-keyvault-azure-keyvault-name)rg" --yes + displayName: Delete Key Vault + condition: always()