From a9acc89a06394902cb6cc2d5ed83e4a5b106a8bf Mon Sep 17 00:00:00 2001 From: Wes Haggard Date: Fri, 26 Sep 2025 11:16:52 -0700 Subject: [PATCH 01/17] Refactor build step to use add DevOps logging --- eng/pipelines/templates/steps/build.yml | 34 +++++++++++++++---------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/eng/pipelines/templates/steps/build.yml b/eng/pipelines/templates/steps/build.yml index 20e14fe738a7..70591c85b433 100644 --- a/eng/pipelines/templates/steps/build.yml +++ b/eng/pipelines/templates/steps/build.yml @@ -95,7 +95,9 @@ steps: - ${{ if eq(parameters.ServiceDirectory, 'auto') }}: # only use the project list override file if the service directory is not auto - pwsh: | - dotnet pack eng/service.proj -warnaserror ` + . eng/common/scripts/Helpers/CommandInvocation-Helpers.ps1 + + $cmd = "dotnet pack eng/service.proj -warnaserror ` /p:ValidateRunApiCompat=true ` /p:SDKType=${{ parameters.SDKType }} ` /p:IncludeTests=false ` @@ -109,20 +111,26 @@ steps: /p:IncludeStress=false ` /p:IncludeIntegrationTests=false ` /p:EnableOverrideExclusions=true ` - $(DiagnosticArguments) + $(DiagnosticArguments)" + + Invoke-LoggedMsbuildCommand $cmd displayName: "Build and Package for PR" - ${{ else }}: - - script: >- - dotnet pack eng/service.proj -warnaserror - /p:ValidateRunApiCompat=true - /p:SDKType=${{ parameters.SDKType }} - /p:ServiceDirectory=${{ parameters.ServiceDirectory }} - /p:IncludeTests=false - /p:PublicSign=false $(VersioningProperties) - /p:Configuration=Release - /p:CommitSHA=$(Build.SourceVersion) - /p:ArtifactsPackagesDir=$(Build.ArtifactStagingDirectory) - $(DiagnosticArguments) + - pwsh: | + . eng/common/scripts/Helpers/CommandInvocation-Helpers.ps1 + + $cmd = "dotnet pack eng/service.proj -warnaserror ` + /p:ValidateRunApiCompat=true ` + /p:SDKType=${{ parameters.SDKType }} ` + /p:ServiceDirectory=${{ parameters.ServiceDirectory }} ` + /p:IncludeTests=false ` + /p:PublicSign=false $(VersioningProperties) ` + /p:Configuration=Release ` + /p:CommitSHA=$(Build.SourceVersion) ` + /p:ArtifactsPackagesDir=$(Build.ArtifactStagingDirectory) ` + $(DiagnosticArguments)" + + Invoke-LoggedMsbuildCommand $cmd displayName: "Build and Package Service Directory" # save package properties again, this time honoring the dev version number From 2f80598d13e66f8774842ce60e4569cd476047f0 Mon Sep 17 00:00:00 2001 From: Wes Haggard Date: Fri, 26 Sep 2025 11:17:48 -0700 Subject: [PATCH 02/17] Introduce intentional error to test --- sdk/template/Azure.Template/src/TemplateClient.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/template/Azure.Template/src/TemplateClient.cs b/sdk/template/Azure.Template/src/TemplateClient.cs index 0053351597f3..d87c94e9f66a 100644 --- a/sdk/template/Azure.Template/src/TemplateClient.cs +++ b/sdk/template/Azure.Template/src/TemplateClient.cs @@ -45,7 +45,7 @@ public virtual async Task> GetSecretValueAsync(string sec public virtual Response GetSecretValue(string secretName, CancellationToken cancellationToken = default) { using DiagnosticScope scope = ClientDiagnostics.CreateScope($"{nameof(TemplateClient)}.{nameof(GetSecretValue)}"); - scope.Start(); + scope.Start() try { From 02b0d1dd45a39e159d43ad5c454d8ed7327dc10c Mon Sep 17 00:00:00 2001 From: Wes Haggard Date: Fri, 26 Sep 2025 11:18:24 -0700 Subject: [PATCH 03/17] Introduce an error in test project --- sdk/template/Azure.Template/tests/TemplateClientLiveTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/template/Azure.Template/tests/TemplateClientLiveTests.cs b/sdk/template/Azure.Template/tests/TemplateClientLiveTests.cs index c3b9c332ba60..a5b7e8fa865a 100644 --- a/sdk/template/Azure.Template/tests/TemplateClientLiveTests.cs +++ b/sdk/template/Azure.Template/tests/TemplateClientLiveTests.cs @@ -33,7 +33,7 @@ private TemplateClient CreateClient() [RecordedTest] public async Task CanGetSecret() { - TemplateClient client = CreateClient(); + TemplateClient client = CreateClient() Response secret = await client.GetSecretValueAsync("TestSecret"); From e66f5e16f81aac96cbdd0eeb4c995acc8c8532d1 Mon Sep 17 00:00:00 2001 From: Wes Haggard Date: Fri, 26 Sep 2025 12:51:23 -0700 Subject: [PATCH 04/17] Add runwithdevopslogging.ps1 script for logging --- eng/script/runwithdevopslogging.ps1 | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 eng/script/runwithdevopslogging.ps1 diff --git a/eng/script/runwithdevopslogging.ps1 b/eng/script/runwithdevopslogging.ps1 new file mode 100644 index 000000000000..be2e890a9879 --- /dev/null +++ b/eng/script/runwithdevopslogging.ps1 @@ -0,0 +1,3 @@ +. $PSScriptRoot/../common/scripts/Helpers/CommandInvocation-Helpers.ps1 + +Invoke-LoggedMsbuildCommand $args From 13661478bd9d81400c1f3ee9e0e9c4b95d6825b7 Mon Sep 17 00:00:00 2001 From: Wes Haggard Date: Fri, 26 Sep 2025 12:54:13 -0700 Subject: [PATCH 05/17] Refactor build script to use runwithdevopslogging --- eng/pipelines/templates/steps/build.yml | 64 +++++++++++-------------- 1 file changed, 29 insertions(+), 35 deletions(-) diff --git a/eng/pipelines/templates/steps/build.yml b/eng/pipelines/templates/steps/build.yml index 70591c85b433..0178a74b3e9f 100644 --- a/eng/pipelines/templates/steps/build.yml +++ b/eng/pipelines/templates/steps/build.yml @@ -94,43 +94,37 @@ steps: # surprised by new errors that pop up only in internal when public CI was clean. - ${{ if eq(parameters.ServiceDirectory, 'auto') }}: # only use the project list override file if the service directory is not auto - - pwsh: | - . eng/common/scripts/Helpers/CommandInvocation-Helpers.ps1 - - $cmd = "dotnet pack eng/service.proj -warnaserror ` - /p:ValidateRunApiCompat=true ` - /p:SDKType=${{ parameters.SDKType }} ` - /p:IncludeTests=false ` - /p:PublicSign=false $(VersioningProperties) ` - /p:Configuration=Release ` - /p:CommitSHA=$(Build.SourceVersion) ` - /p:ArtifactsPackagesDir=$(Build.ArtifactStagingDirectory) ` - /p:ServiceDirectory=* ` - /p:ProjectListOverrideFile=$(ProjectListOverrideFile) ` - /p:IncludePerf=false ` - /p:IncludeStress=false ` - /p:IncludeIntegrationTests=false ` - /p:EnableOverrideExclusions=true ` - $(DiagnosticArguments)" - - Invoke-LoggedMsbuildCommand $cmd + - pwsh: > + ./eng/scripts/runwithdevopslogging.ps1 + dotnet pack eng/service.proj -warnaserror + /p:ValidateRunApiCompat=true + /p:SDKType=${{ parameters.SDKType }} + /p:IncludeTests=false + /p:PublicSign=false $(VersioningProperties) + /p:Configuration=Release + /p:CommitSHA=$(Build.SourceVersion) + /p:ArtifactsPackagesDir=$(Build.ArtifactStagingDirectory) + /p:ServiceDirectory=* + /p:ProjectListOverrideFile=$(ProjectListOverrideFile) + /p:IncludePerf=false + /p:IncludeStress=false + /p:IncludeIntegrationTests=false + /p:EnableOverrideExclusions=true + $(DiagnosticArguments) displayName: "Build and Package for PR" - ${{ else }}: - - pwsh: | - . eng/common/scripts/Helpers/CommandInvocation-Helpers.ps1 - - $cmd = "dotnet pack eng/service.proj -warnaserror ` - /p:ValidateRunApiCompat=true ` - /p:SDKType=${{ parameters.SDKType }} ` - /p:ServiceDirectory=${{ parameters.ServiceDirectory }} ` - /p:IncludeTests=false ` - /p:PublicSign=false $(VersioningProperties) ` - /p:Configuration=Release ` - /p:CommitSHA=$(Build.SourceVersion) ` - /p:ArtifactsPackagesDir=$(Build.ArtifactStagingDirectory) ` - $(DiagnosticArguments)" - - Invoke-LoggedMsbuildCommand $cmd + - pwsh: > + ./eng/scripts/runwithdevopslogging.ps1 + dotnet pack eng/service.proj -warnaserror + /p:ValidateRunApiCompat=true + /p:SDKType=${{ parameters.SDKType }} + /p:ServiceDirectory=${{ parameters.ServiceDirectory }} + /p:IncludeTests=false + /p:PublicSign=false $(VersioningProperties) + /p:Configuration=Release + /p:CommitSHA=$(Build.SourceVersion) + /p:ArtifactsPackagesDir=$(Build.ArtifactStagingDirectory) + $(DiagnosticArguments) displayName: "Build and Package Service Directory" # save package properties again, this time honoring the dev version number From 3a2768e50c66cf31f1a95836ec4dfee7c4b9b9ef Mon Sep 17 00:00:00 2001 From: Wes Haggard Date: Fri, 26 Sep 2025 12:56:06 -0700 Subject: [PATCH 06/17] Replace script with PowerShell command for testing --- eng/pipelines/templates/jobs/ci.tests.yml | 35 ++++++++++++----------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/eng/pipelines/templates/jobs/ci.tests.yml b/eng/pipelines/templates/jobs/ci.tests.yml index b3dfa3d8c620..1a5e8926a2e2 100644 --- a/eng/pipelines/templates/jobs/ci.tests.yml +++ b/eng/pipelines/templates/jobs/ci.tests.yml @@ -157,23 +157,24 @@ jobs: parameters: LogFilePath: $(Build.ArtifactStagingDirectory)/test.binlog - - script: >- - dotnet test eng/service.proj - --filter "(TestCategory!=Manually) & (TestCategory!=Live) & ($(AdditionalTestFilters))" - --framework $(TestTargetFramework) - --logger "trx;LogFileName=$(TestTargetFramework).trx" --logger:"console;verbosity=normal" - --blame-crash-dump-type full --blame-hang-dump-type full --blame-hang-timeout ${{parameters.TestTimeoutInMinutes}}minutes - /p:SDKType=${{ parameters.SDKType }} - /p:ServiceDirectory=$(ServiceDirectory) - /p:IncludeSrc=false /p:IncludeSamples=false /p:IncludePerf=false /p:IncludeStress=false /p:IncludeIntegrationTests=false - /p:RunApiCompat=false /p:InheritDocEnabled=false - /p:Configuration=$(BuildConfiguration) - /p:CollectCoverage=$(CollectCoverage) - /p:EnableSourceLink=false - /p:ProjectListOverrideFile=$(ProjectListOverrideFile) - /p:EnableOverrideExclusions=true - $(AdditionalTestArguments) - $(DiagnosticArguments) + - pwsh: > + ./eng/scripts/runwithdevopslogging.ps1 + dotnet test eng/service.proj + --filter "(TestCategory!=Manually) & (TestCategory!=Live) & ($(AdditionalTestFilters))" + --framework $(TestTargetFramework) + --logger "trx;LogFileName=$(TestTargetFramework).trx" --logger:"console;verbosity=normal" + --blame-crash-dump-type full --blame-hang-dump-type full --blame-hang-timeout ${{parameters.TestTimeoutInMinutes}}minutes + /p:SDKType=${{ parameters.SDKType }} + /p:ServiceDirectory=$(ServiceDirectory) + /p:IncludeSrc=false /p:IncludeSamples=false /p:IncludePerf=false /p:IncludeStress=false /p:IncludeIntegrationTests=false + /p:RunApiCompat=false /p:InheritDocEnabled=false + /p:Configuration=$(BuildConfiguration) + /p:CollectCoverage=$(CollectCoverage) + /p:EnableSourceLink=false + /p:ProjectListOverrideFile=$(ProjectListOverrideFile) + /p:EnableOverrideExclusions=true + $(AdditionalTestArguments) + $(DiagnosticArguments) displayName: "Build & Test ($(TestTargetFramework))" - task: PublishTestResults@2 From 8586ce209b7927fc88e71361eb41bc9bde26add9 Mon Sep 17 00:00:00 2001 From: Wes Haggard Date: Fri, 26 Sep 2025 12:57:49 -0700 Subject: [PATCH 07/17] Refactor test execution to use logging script Replaced inline dotnet test commands with a script call to runwithdevopslogging.ps1 for better logging and organization. --- eng/pipelines/templates/jobs/live.tests.yml | 75 +++++++++++---------- 1 file changed, 39 insertions(+), 36 deletions(-) diff --git a/eng/pipelines/templates/jobs/live.tests.yml b/eng/pipelines/templates/jobs/live.tests.yml index 4afb5e3cd00e..4b774ffc8afd 100644 --- a/eng/pipelines/templates/jobs/live.tests.yml +++ b/eng/pipelines/templates/jobs/live.tests.yml @@ -161,7 +161,7 @@ jobs: azurePowerShellVersion: LatestVersion pwsh: true ScriptType: InlineScript - Inline: >- + Inline: > . ./eng/common/TestResources/SubConfig-Helpers.ps1 $serviceDirectoryPrefix = BuildServiceDirectoryPrefix ${{ parameters.ServiceDirectory }}; $account = (Get-AzContext).Account; @@ -170,23 +170,25 @@ jobs: [Environment]::SetEnvironmentVariable("${serviceDirectoryPrefix}CLIENT_ID", $account.Id); [Environment]::SetEnvironmentVariable("${serviceDirectoryPrefix}TENANT_ID", $account.Tenants); - dotnet test eng/service.proj - --framework $(TestTargetFramework) - --filter "TestCategory!=Manually & ($(AdditionalTestFilters))" - --logger "trx" - --logger:"console;verbosity=normal" - --blame-crash-dump-type full --blame-hang-dump-type full --blame-hang-timeout ${{parameters.TimeoutInMinutes}}minutes - /p:SDKType=${{ parameters.SDKType }} - /p:ServiceDirectory=${{ parameters.ServiceDirectory }} - /p:Project=${{ parameters.Project }} - /p:IncludeSrc=false - /p:IncludeSamples=false - /p:IncludePerf=false - /p:IncludeStress=false - /p:BuildInParallel=${{ parameters.BuildInParallel }} - /p:CollectCoverage=$(CollectCoverage) /p:CodeCoverageDirectory=$(Build.SourcesDirectory)\sdk\${{parameters.ServiceDirectory}} - /p:EnableSourceLink=false - $(AdditionalTestArguments); + ./eng/scripts/runwithdevopslogging.ps1 + dotnet test eng/service.proj + --framework $(TestTargetFramework) + --filter "TestCategory!=Manually & ($(AdditionalTestFilters))" + --logger "trx" + --logger:"console;verbosity=normal" + --blame-crash-dump-type full --blame-hang-dump-type full --blame-hang-timeout ${{parameters.TimeoutInMinutes}}minutes + /p:SDKType=${{ parameters.SDKType }} + /p:ServiceDirectory=${{ parameters.ServiceDirectory }} + /p:Project=${{ parameters.Project }} + /p:IncludeSrc=false + /p:IncludeSamples=false + /p:IncludePerf=false + /p:IncludeStress=false + /p:BuildInParallel=${{ parameters.BuildInParallel }} + /p:CollectCoverage=$(CollectCoverage) /p:CodeCoverageDirectory=$(Build.SourcesDirectory)\sdk\${{parameters.ServiceDirectory}} + /p:EnableSourceLink=false + $(AdditionalTestArguments); + Write-Host "Last exit code: $LASTEXITCODE"; exit $LASTEXITCODE; env: @@ -198,24 +200,25 @@ jobs: ${{ var.key }}: ${{ var.value }} - ${{ else }}: - - script: >- - dotnet test eng/service.proj - --framework $(TestTargetFramework) - --filter "TestCategory!=Manually & ($(AdditionalTestFilters))" - --logger "trx" - --logger:"console;verbosity=normal" - --blame-crash-dump-type full --blame-hang-dump-type full --blame-hang-timeout ${{parameters.TimeoutInMinutes}}minutes - /p:SDKType=${{ parameters.SDKType }} - /p:ServiceDirectory=${{ parameters.ServiceDirectory }} - /p:Project=${{ parameters.Project }} - /p:IncludeSrc=false - /p:IncludeSamples=false - /p:IncludePerf=false - /p:IncludeStress=false - /p:BuildInParallel=${{ parameters.BuildInParallel }} - /p:CollectCoverage=$(CollectCoverage) /p:CodeCoverageDirectory=$(Build.SourcesDirectory)\sdk\${{parameters.ServiceDirectory}} - /p:EnableSourceLink=false - $(AdditionalTestArguments) + - psws: > + ./eng/scripts/runwithdevopslogging.ps1 + dotnet test eng/service.proj + --framework $(TestTargetFramework) + --filter "TestCategory!=Manually & ($(AdditionalTestFilters))" + --logger "trx" + --logger:"console;verbosity=normal" + --blame-crash-dump-type full --blame-hang-dump-type full --blame-hang-timeout ${{parameters.TimeoutInMinutes}}minutes + /p:SDKType=${{ parameters.SDKType }} + /p:ServiceDirectory=${{ parameters.ServiceDirectory }} + /p:Project=${{ parameters.Project }} + /p:IncludeSrc=false + /p:IncludeSamples=false + /p:IncludePerf=false + /p:IncludeStress=false + /p:BuildInParallel=${{ parameters.BuildInParallel }} + /p:CollectCoverage=$(CollectCoverage) /p:CodeCoverageDirectory=$(Build.SourcesDirectory)\sdk\${{parameters.ServiceDirectory}} + /p:EnableSourceLink=false + $(AdditionalTestArguments) displayName: "Build & Test (all tests for $(TestTargetFramework)) - Client Secret Auth" env: AZURE_TEST_MODE: $(TestMode) From 91650b01974bbf2aac2028e1f2381d3c0492e154 Mon Sep 17 00:00:00 2001 From: Wes Haggard Date: Fri, 26 Sep 2025 13:09:26 -0700 Subject: [PATCH 08/17] Rename runwithdevopslogging.ps1 to runwithdevopslogging.ps1 --- eng/{script => scripts}/runwithdevopslogging.ps1 | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename eng/{script => scripts}/runwithdevopslogging.ps1 (100%) diff --git a/eng/script/runwithdevopslogging.ps1 b/eng/scripts/runwithdevopslogging.ps1 similarity index 100% rename from eng/script/runwithdevopslogging.ps1 rename to eng/scripts/runwithdevopslogging.ps1 From 1593f2751fb694479f7e48d77b374702df623853 Mon Sep 17 00:00:00 2001 From: Wes Haggard Date: Fri, 26 Sep 2025 14:02:59 -0700 Subject: [PATCH 09/17] Update runwithdevopslogging.ps1 --- eng/scripts/runwithdevopslogging.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/scripts/runwithdevopslogging.ps1 b/eng/scripts/runwithdevopslogging.ps1 index be2e890a9879..d5ce85fd88a9 100644 --- a/eng/scripts/runwithdevopslogging.ps1 +++ b/eng/scripts/runwithdevopslogging.ps1 @@ -1,3 +1,3 @@ . $PSScriptRoot/../common/scripts/Helpers/CommandInvocation-Helpers.ps1 -Invoke-LoggedMsbuildCommand $args +Invoke-LoggedMsbuildCommand "$args" From 13b45e206dd3db386345a89ca71c7009179f22e6 Mon Sep 17 00:00:00 2001 From: Wes Haggard Date: Mon, 29 Sep 2025 15:02:09 -0700 Subject: [PATCH 10/17] Update build.yml --- eng/pipelines/templates/steps/build.yml | 30 ++++++++++++------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/eng/pipelines/templates/steps/build.yml b/eng/pipelines/templates/steps/build.yml index 0178a74b3e9f..3dfe5d888bea 100644 --- a/eng/pipelines/templates/steps/build.yml +++ b/eng/pipelines/templates/steps/build.yml @@ -96,21 +96,21 @@ steps: # only use the project list override file if the service directory is not auto - pwsh: > ./eng/scripts/runwithdevopslogging.ps1 - dotnet pack eng/service.proj -warnaserror - /p:ValidateRunApiCompat=true - /p:SDKType=${{ parameters.SDKType }} - /p:IncludeTests=false - /p:PublicSign=false $(VersioningProperties) - /p:Configuration=Release - /p:CommitSHA=$(Build.SourceVersion) - /p:ArtifactsPackagesDir=$(Build.ArtifactStagingDirectory) - /p:ServiceDirectory=* - /p:ProjectListOverrideFile=$(ProjectListOverrideFile) - /p:IncludePerf=false - /p:IncludeStress=false - /p:IncludeIntegrationTests=false - /p:EnableOverrideExclusions=true - $(DiagnosticArguments) + dotnet pack eng/service.proj -warnaserror + /p:ValidateRunApiCompat=true + /p:SDKType=${{ parameters.SDKType }} + /p:IncludeTests=false + /p:PublicSign=false $(VersioningProperties) + /p:Configuration=Release + /p:CommitSHA=$(Build.SourceVersion) + /p:ArtifactsPackagesDir=$(Build.ArtifactStagingDirectory) + /p:ServiceDirectory=* + /p:ProjectListOverrideFile=$(ProjectListOverrideFile) + /p:IncludePerf=false + /p:IncludeStress=false + /p:IncludeIntegrationTests=false + /p:EnableOverrideExclusions=true + $(DiagnosticArguments) displayName: "Build and Package for PR" - ${{ else }}: - pwsh: > From fd9116f60f789ccf92c9ff2bd0f5f68017df0dc7 Mon Sep 17 00:00:00 2001 From: Wes Haggard Date: Mon, 29 Sep 2025 15:13:44 -0700 Subject: [PATCH 11/17] Fix indentation in build.yml for dotnet pack command --- eng/pipelines/templates/steps/build.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/eng/pipelines/templates/steps/build.yml b/eng/pipelines/templates/steps/build.yml index 3dfe5d888bea..22c56f8d248b 100644 --- a/eng/pipelines/templates/steps/build.yml +++ b/eng/pipelines/templates/steps/build.yml @@ -115,16 +115,16 @@ steps: - ${{ else }}: - pwsh: > ./eng/scripts/runwithdevopslogging.ps1 - dotnet pack eng/service.proj -warnaserror - /p:ValidateRunApiCompat=true - /p:SDKType=${{ parameters.SDKType }} - /p:ServiceDirectory=${{ parameters.ServiceDirectory }} - /p:IncludeTests=false - /p:PublicSign=false $(VersioningProperties) - /p:Configuration=Release - /p:CommitSHA=$(Build.SourceVersion) - /p:ArtifactsPackagesDir=$(Build.ArtifactStagingDirectory) - $(DiagnosticArguments) + dotnet pack eng/service.proj -warnaserror + /p:ValidateRunApiCompat=true + /p:SDKType=${{ parameters.SDKType }} + /p:ServiceDirectory=${{ parameters.ServiceDirectory }} + /p:IncludeTests=false + /p:PublicSign=false $(VersioningProperties) + /p:Configuration=Release + /p:CommitSHA=$(Build.SourceVersion) + /p:ArtifactsPackagesDir=$(Build.ArtifactStagingDirectory) + $(DiagnosticArguments) displayName: "Build and Package Service Directory" # save package properties again, this time honoring the dev version number From 6476b784546aeb7ec0ed36a460921b453d24a513 Mon Sep 17 00:00:00 2001 From: Wes Haggard Date: Mon, 29 Sep 2025 15:14:42 -0700 Subject: [PATCH 12/17] Refactor dotnet test commands for consistency --- eng/pipelines/templates/jobs/live.tests.yml | 68 ++++++++++----------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/eng/pipelines/templates/jobs/live.tests.yml b/eng/pipelines/templates/jobs/live.tests.yml index 4b774ffc8afd..39cb9931072d 100644 --- a/eng/pipelines/templates/jobs/live.tests.yml +++ b/eng/pipelines/templates/jobs/live.tests.yml @@ -171,23 +171,23 @@ jobs: [Environment]::SetEnvironmentVariable("${serviceDirectoryPrefix}TENANT_ID", $account.Tenants); ./eng/scripts/runwithdevopslogging.ps1 - dotnet test eng/service.proj - --framework $(TestTargetFramework) - --filter "TestCategory!=Manually & ($(AdditionalTestFilters))" - --logger "trx" - --logger:"console;verbosity=normal" - --blame-crash-dump-type full --blame-hang-dump-type full --blame-hang-timeout ${{parameters.TimeoutInMinutes}}minutes - /p:SDKType=${{ parameters.SDKType }} - /p:ServiceDirectory=${{ parameters.ServiceDirectory }} - /p:Project=${{ parameters.Project }} - /p:IncludeSrc=false - /p:IncludeSamples=false - /p:IncludePerf=false - /p:IncludeStress=false - /p:BuildInParallel=${{ parameters.BuildInParallel }} - /p:CollectCoverage=$(CollectCoverage) /p:CodeCoverageDirectory=$(Build.SourcesDirectory)\sdk\${{parameters.ServiceDirectory}} - /p:EnableSourceLink=false - $(AdditionalTestArguments); + dotnet test eng/service.proj + --framework $(TestTargetFramework) + --filter "TestCategory!=Manually & ($(AdditionalTestFilters))" + --logger "trx" + --logger:"console;verbosity=normal" + --blame-crash-dump-type full --blame-hang-dump-type full --blame-hang-timeout ${{parameters.TimeoutInMinutes}}minutes + /p:SDKType=${{ parameters.SDKType }} + /p:ServiceDirectory=${{ parameters.ServiceDirectory }} + /p:Project=${{ parameters.Project }} + /p:IncludeSrc=false + /p:IncludeSamples=false + /p:IncludePerf=false + /p:IncludeStress=false + /p:BuildInParallel=${{ parameters.BuildInParallel }} + /p:CollectCoverage=$(CollectCoverage) /p:CodeCoverageDirectory=$(Build.SourcesDirectory)\sdk\${{parameters.ServiceDirectory}} + /p:EnableSourceLink=false + $(AdditionalTestArguments); Write-Host "Last exit code: $LASTEXITCODE"; exit $LASTEXITCODE; @@ -202,23 +202,23 @@ jobs: - ${{ else }}: - psws: > ./eng/scripts/runwithdevopslogging.ps1 - dotnet test eng/service.proj - --framework $(TestTargetFramework) - --filter "TestCategory!=Manually & ($(AdditionalTestFilters))" - --logger "trx" - --logger:"console;verbosity=normal" - --blame-crash-dump-type full --blame-hang-dump-type full --blame-hang-timeout ${{parameters.TimeoutInMinutes}}minutes - /p:SDKType=${{ parameters.SDKType }} - /p:ServiceDirectory=${{ parameters.ServiceDirectory }} - /p:Project=${{ parameters.Project }} - /p:IncludeSrc=false - /p:IncludeSamples=false - /p:IncludePerf=false - /p:IncludeStress=false - /p:BuildInParallel=${{ parameters.BuildInParallel }} - /p:CollectCoverage=$(CollectCoverage) /p:CodeCoverageDirectory=$(Build.SourcesDirectory)\sdk\${{parameters.ServiceDirectory}} - /p:EnableSourceLink=false - $(AdditionalTestArguments) + dotnet test eng/service.proj + --framework $(TestTargetFramework) + --filter "TestCategory!=Manually & ($(AdditionalTestFilters))" + --logger "trx" + --logger:"console;verbosity=normal" + --blame-crash-dump-type full --blame-hang-dump-type full --blame-hang-timeout ${{parameters.TimeoutInMinutes}}minutes + /p:SDKType=${{ parameters.SDKType }} + /p:ServiceDirectory=${{ parameters.ServiceDirectory }} + /p:Project=${{ parameters.Project }} + /p:IncludeSrc=false + /p:IncludeSamples=false + /p:IncludePerf=false + /p:IncludeStress=false + /p:BuildInParallel=${{ parameters.BuildInParallel }} + /p:CollectCoverage=$(CollectCoverage) /p:CodeCoverageDirectory=$(Build.SourcesDirectory)\sdk\${{parameters.ServiceDirectory}} + /p:EnableSourceLink=false + $(AdditionalTestArguments) displayName: "Build & Test (all tests for $(TestTargetFramework)) - Client Secret Auth" env: AZURE_TEST_MODE: $(TestMode) From 59a52827b0945988de8ade0c544b418fcab08360 Mon Sep 17 00:00:00 2001 From: Wes Haggard Date: Mon, 29 Sep 2025 15:15:07 -0700 Subject: [PATCH 13/17] Update ci.tests.yml --- eng/pipelines/templates/jobs/ci.tests.yml | 32 +++++++++++------------ 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/eng/pipelines/templates/jobs/ci.tests.yml b/eng/pipelines/templates/jobs/ci.tests.yml index 1a5e8926a2e2..f136a507bd87 100644 --- a/eng/pipelines/templates/jobs/ci.tests.yml +++ b/eng/pipelines/templates/jobs/ci.tests.yml @@ -159,22 +159,22 @@ jobs: - pwsh: > ./eng/scripts/runwithdevopslogging.ps1 - dotnet test eng/service.proj - --filter "(TestCategory!=Manually) & (TestCategory!=Live) & ($(AdditionalTestFilters))" - --framework $(TestTargetFramework) - --logger "trx;LogFileName=$(TestTargetFramework).trx" --logger:"console;verbosity=normal" - --blame-crash-dump-type full --blame-hang-dump-type full --blame-hang-timeout ${{parameters.TestTimeoutInMinutes}}minutes - /p:SDKType=${{ parameters.SDKType }} - /p:ServiceDirectory=$(ServiceDirectory) - /p:IncludeSrc=false /p:IncludeSamples=false /p:IncludePerf=false /p:IncludeStress=false /p:IncludeIntegrationTests=false - /p:RunApiCompat=false /p:InheritDocEnabled=false - /p:Configuration=$(BuildConfiguration) - /p:CollectCoverage=$(CollectCoverage) - /p:EnableSourceLink=false - /p:ProjectListOverrideFile=$(ProjectListOverrideFile) - /p:EnableOverrideExclusions=true - $(AdditionalTestArguments) - $(DiagnosticArguments) + dotnet test eng/service.proj + --filter "(TestCategory!=Manually) & (TestCategory!=Live) & ($(AdditionalTestFilters))" + --framework $(TestTargetFramework) + --logger "trx;LogFileName=$(TestTargetFramework).trx" --logger:"console;verbosity=normal" + --blame-crash-dump-type full --blame-hang-dump-type full --blame-hang-timeout ${{parameters.TestTimeoutInMinutes}}minutes + /p:SDKType=${{ parameters.SDKType }} + /p:ServiceDirectory=$(ServiceDirectory) + /p:IncludeSrc=false /p:IncludeSamples=false /p:IncludePerf=false /p:IncludeStress=false /p:IncludeIntegrationTests=false + /p:RunApiCompat=false /p:InheritDocEnabled=false + /p:Configuration=$(BuildConfiguration) + /p:CollectCoverage=$(CollectCoverage) + /p:EnableSourceLink=false + /p:ProjectListOverrideFile=$(ProjectListOverrideFile) + /p:EnableOverrideExclusions=true + $(AdditionalTestArguments) + $(DiagnosticArguments) displayName: "Build & Test ($(TestTargetFramework))" - task: PublishTestResults@2 From 63b6d24ebf429b07c94d03470a6fe48f8278064f Mon Sep 17 00:00:00 2001 From: Wes Haggard Date: Mon, 29 Sep 2025 16:04:40 -0700 Subject: [PATCH 14/17] Fix YAML syntax for dotnet test command --- eng/pipelines/templates/jobs/ci.tests.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/pipelines/templates/jobs/ci.tests.yml b/eng/pipelines/templates/jobs/ci.tests.yml index f136a507bd87..8e8997d18da3 100644 --- a/eng/pipelines/templates/jobs/ci.tests.yml +++ b/eng/pipelines/templates/jobs/ci.tests.yml @@ -160,9 +160,9 @@ jobs: - pwsh: > ./eng/scripts/runwithdevopslogging.ps1 dotnet test eng/service.proj - --filter "(TestCategory!=Manually) & (TestCategory!=Live) & ($(AdditionalTestFilters))" + --filter '"(TestCategory!=Manually) & (TestCategory!=Live) & ($(AdditionalTestFilters))"' --framework $(TestTargetFramework) - --logger "trx;LogFileName=$(TestTargetFramework).trx" --logger:"console;verbosity=normal" + --logger '"trx;LogFileName=$(TestTargetFramework).trx"' --logger:'"console;verbosity=normal"' --blame-crash-dump-type full --blame-hang-dump-type full --blame-hang-timeout ${{parameters.TestTimeoutInMinutes}}minutes /p:SDKType=${{ parameters.SDKType }} /p:ServiceDirectory=$(ServiceDirectory) From d6d5bb4d9cfff737cd6773fbe8fa4ffa2a1b850b Mon Sep 17 00:00:00 2001 From: Wes Haggard Date: Mon, 29 Sep 2025 16:05:44 -0700 Subject: [PATCH 15/17] Update live.tests.yml --- eng/pipelines/templates/jobs/live.tests.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/eng/pipelines/templates/jobs/live.tests.yml b/eng/pipelines/templates/jobs/live.tests.yml index 39cb9931072d..eb1197582987 100644 --- a/eng/pipelines/templates/jobs/live.tests.yml +++ b/eng/pipelines/templates/jobs/live.tests.yml @@ -173,9 +173,9 @@ jobs: ./eng/scripts/runwithdevopslogging.ps1 dotnet test eng/service.proj --framework $(TestTargetFramework) - --filter "TestCategory!=Manually & ($(AdditionalTestFilters))" - --logger "trx" - --logger:"console;verbosity=normal" + --filter '"TestCategory!=Manually & ($(AdditionalTestFilters))"' + --logger trx + --logger:'"console;verbosity=normal"' --blame-crash-dump-type full --blame-hang-dump-type full --blame-hang-timeout ${{parameters.TimeoutInMinutes}}minutes /p:SDKType=${{ parameters.SDKType }} /p:ServiceDirectory=${{ parameters.ServiceDirectory }} @@ -204,9 +204,9 @@ jobs: ./eng/scripts/runwithdevopslogging.ps1 dotnet test eng/service.proj --framework $(TestTargetFramework) - --filter "TestCategory!=Manually & ($(AdditionalTestFilters))" - --logger "trx" - --logger:"console;verbosity=normal" + --filter '"TestCategory!=Manually & ($(AdditionalTestFilters))"' + --logger trx + --logger:'"console;verbosity=normal"' --blame-crash-dump-type full --blame-hang-dump-type full --blame-hang-timeout ${{parameters.TimeoutInMinutes}}minutes /p:SDKType=${{ parameters.SDKType }} /p:ServiceDirectory=${{ parameters.ServiceDirectory }} From 61f05bb1d781c5f2655fc9d4b5399dcdcfdd9a5a Mon Sep 17 00:00:00 2001 From: Wes Haggard Date: Mon, 29 Sep 2025 17:13:36 -0700 Subject: [PATCH 16/17] Apply suggestion from @weshaggard --- sdk/template/Azure.Template/tests/TemplateClientLiveTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/template/Azure.Template/tests/TemplateClientLiveTests.cs b/sdk/template/Azure.Template/tests/TemplateClientLiveTests.cs index a5b7e8fa865a..c3b9c332ba60 100644 --- a/sdk/template/Azure.Template/tests/TemplateClientLiveTests.cs +++ b/sdk/template/Azure.Template/tests/TemplateClientLiveTests.cs @@ -33,7 +33,7 @@ private TemplateClient CreateClient() [RecordedTest] public async Task CanGetSecret() { - TemplateClient client = CreateClient() + TemplateClient client = CreateClient(); Response secret = await client.GetSecretValueAsync("TestSecret"); From 93bb8d3d87c0e7d9f5c8121ca5ae36361192efce Mon Sep 17 00:00:00 2001 From: Wes Haggard Date: Mon, 29 Sep 2025 17:13:43 -0700 Subject: [PATCH 17/17] Apply suggestion from @weshaggard --- sdk/template/Azure.Template/src/TemplateClient.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/template/Azure.Template/src/TemplateClient.cs b/sdk/template/Azure.Template/src/TemplateClient.cs index d87c94e9f66a..0053351597f3 100644 --- a/sdk/template/Azure.Template/src/TemplateClient.cs +++ b/sdk/template/Azure.Template/src/TemplateClient.cs @@ -45,7 +45,7 @@ public virtual async Task> GetSecretValueAsync(string sec public virtual Response GetSecretValue(string secretName, CancellationToken cancellationToken = default) { using DiagnosticScope scope = ClientDiagnostics.CreateScope($"{nameof(TemplateClient)}.{nameof(GetSecretValue)}"); - scope.Start() + scope.Start(); try {