diff --git a/Tasks/QuickPerfTest/Invoke-QuickPerfTest.ps1 b/Tasks/QuickPerfTest/Invoke-QuickPerfTest.ps1 index 4034df3b6d31..7d19fae7d684 100644 --- a/Tasks/QuickPerfTest/Invoke-QuickPerfTest.ps1 +++ b/Tasks/QuickPerfTest/Invoke-QuickPerfTest.ps1 @@ -25,6 +25,8 @@ param $userAgent = "QuickPerfTestBuildTask" +$global:RestTimeout = 60 + function InitializeRestHeaders() { $restHeaders = New-Object -TypeName "System.Collections.Generic.Dictionary[[String], [String]]" @@ -72,7 +74,7 @@ function CreateTestDrop($headers, $dropJson) function GetTestDrop($headers, $drop) { $uri = [String]::Format("{0}/_apis/clt/testdrops/{1}?api-version=1.0", $CltAccountUrl, $drop.id) - $testdrop = Invoke-RestMethod -ContentType "application/json" -UserAgent $userAgent -Uri $uri -Headers $headers + $testdrop = Invoke-RestMethod -ContentType "application/json" -UserAgent $userAgent -TimeoutSec $global:RestTimeout -Uri $uri -Headers $headers return $testdrop } @@ -89,11 +91,19 @@ function UploadTestDrop($testdrop) function GetTestRuns($headers) { $uri = [String]::Format("{0}/_apis/clt/testruns?api-version=1.0", $CltAccountUrl) - $runs = Invoke-RestMethod -ContentType "application/json" -UserAgent $userAgent -Uri $uri -Headers $headers + $runs = Invoke-RestMethod -ContentType "application/json" -UserAgent $userAgent -TimeoutSec $global:RestTimeout -Uri $uri -Headers $headers return $runs } +function GetTestRunUri($testRunId, $headers) +{ + $uri = [String]::Format("{0}/_apis/clt/testruns/{1}?api-version=1.0", $CltAccountUrl,$testRunId) + $run = Invoke-RestMethod -ContentType "application/json" -UserAgent $userAgent -TimeoutSec $global:RestTimeout -Uri $uri -Headers $headers + + return $run.WebResultUrl +} + function RunInProgress($run) { return $run.state -eq "queued" -or $run.state -eq "inProgress" @@ -205,28 +215,10 @@ function UploadSummaryMdReport($summaryMdPath) { Write-Verbose "Summary Markdown Path = $summaryMdPath" - if (Test-Path($summaryMdPath)) + if (($env:SYSTEM_HOSTTYPE -eq "build") -and (Test-Path($summaryMdPath))) { Write-Host "##vso[task.addattachment type=Distributedtask.Core.Summary;name=Load test results;]$summaryMdPath" } - else - { - Write-Warning "Could not find the summary report file $summaryMdPath" - } -} - -function GetLastSuccessfulBuild($headers) -{ - $uri = ("{0}/{1}/_apis/build/builds?api-version={2}&definitions={3}&statusFilter=completed&resultFilter=succeeded&`$top=1" -f $TFSAccountUrl, $env:System_TeamProjectId, '2.0', $env:SYSTEM_DEFINITIONID) - $previousBuild = Invoke-RestMethod -ContentType "application/json" -UserAgent $userAgent -Uri $uri -Headers $headers - return $previousBuild.Value -} - -function GetFilteredTestRuns($headers, $filter) -{ - $uri = ("{0}/_apis/clt/testruns?api-version=1.0&detailed=false&{1}" -f $CltAccountUrl, $filter) - $filteredTestRuns = Invoke-RestMethod -ContentType "application/json" -UserAgent $userAgent -Uri $uri -Headers $headers - return $filteredTestRuns } ############################################## PS Script execution starts here ########################################## @@ -269,46 +261,22 @@ if ($drop.dropType -eq "InPlaceDrop") $run = QueueTestRun $headers $runJson MonitorTestRun $headers $run - + $webResultsUrl = GetTestRunUri $run.id $headers + Write-Output ("Run-id for this load test is {0} and its name is '{1}'." -f $run.runNumber, $run.name) - Write-Output ("To view run details navigate to {0}/_apps/hub/ms.vss-cloudloadtest-web.hub-loadtest-account?_a=summary&runId={1}" -f $TFSAccountUrl, $run.id) + Write-Output ("To view run details navigate to {0}" -f $webResultsUrl) Write-Output "To view detailed results navigate to Load Test | Load Test Manager in Visual Studio IDE, and open this run." $resultsMDFolder = New-Item -ItemType Directory -Force -Path "$env:Temp\LoadTestResultSummary" + $resultFilePattern = ("QuickPerfTestResults_{0}_{1}_*.md" -f $env:AGENT_ID, $env:SYSTEM_DEFINITIONID) - $excludeFilePattern = ("QuickPerfTestResults_{0}_{1}_{2}_*.md" -f $env:AGENT_ID, $env:SYSTEM_DEFINITIONID, $env:BUILD_BUILDID) - Remove-Item $resultsMDFolder\$resultFilePattern -Exclude $excludeFilePattern -Force - $summaryFile = ("{0}\QuickPerfTestResults_{1}_{2}_{3}_{4}.md" -f $resultsMDFolder, $env:AGENT_ID, $env:SYSTEM_DEFINITIONID, $env:BUILD_BUILDID, $run.id) - $summary = ('[Test Run: {0}]({2}/_apps/hub/ms.vss-cloudloadtest-web.hub-loadtest-account?_a=summary&runId={3}) using {1}.
' -f $run.runNumber, $run.name, $TFSAccountUrl, $run.id) - - $runComparisonAvailable = $false - $lastSuccessfulBuild = GetLastSuccessfulBuild $headers + $excludeFilePattern = ("QuickPerfTestResults_{0}_{1}_{2}_*.md" -f $env:AGENT_ID, $env:SYSTEM_DEFINITIONID, $env:BUILD_BUILDID) + Remove-Item $resultsMDFolder\$resultFilePattern -Exclude $excludeFilePattern -Force + $summaryFile = ("{0}\QuickPerfTestResults_{1}_{2}_{3}_{4}.md" -f $resultsMDFolder, $env:AGENT_ID, $env:SYSTEM_DEFINITIONID, $env:BUILD_BUILDID, $run.id) - if ($lastSuccessfulBuild) - { - $runSourceIdentifierFilter=('runsourceidentifier=build/{0}/{1}' -f $env:SYSTEM_DEFINITIONID, $lastSuccessfulBuild.id) - $runsInLastBuild = GetFilteredTestRuns $headers $runSourceIdentifierFilter - - if ($runsInLastBuild) - { - foreach ($previousRun in $runsInLastBuild) - { - if ($previousRun.name -eq $run.name) - { - $runComparisonAvailable = $true - $summary += ('[Compare with run {0}]({1}/_apps/hub/ms.vss-cloudloadtest-web.hub-loadtest-account?_a=compare&runId1={2}&runId2={3}) from [build {4}]({1}/{5}/_build#buildId={4}&_a=summary).' -f $previousRun.runNumber, $global:TFSAccountUrl, $previousRun.id, $run.id, $lastSuccessfulBuild.id, $env:System_TeamProjectId, $env:BUILD_BUILDID) - break - } - } - } - } + $summary = ('[Test Run: {0}]({1}) using {2}.
' -f $run.runNumber, $webResultsUrl ,$run.name) - if(!$runComparisonAvailable) - { - $summary += ('No previous run found for comparison.') - } - ('

{0}

' -f $summary) >> $summaryFile UploadSummaryMdReport $summaryFile } diff --git a/Tasks/QuickPerfTest/task.json b/Tasks/QuickPerfTest/task.json index f338912a3b48..fb16e0a7f663 100644 --- a/Tasks/QuickPerfTest/task.json +++ b/Tasks/QuickPerfTest/task.json @@ -13,7 +13,7 @@ "version": { "Major": 1, "Minor": 0, - "Patch": 8 + "Patch": 9 }, "demands": [ "msbuild", diff --git a/Tasks/RunJMeterLoadTest/Start-ApacheJMeterTest.ps1 b/Tasks/RunJMeterLoadTest/Start-ApacheJMeterTest.ps1 index c0dbbdce6fc1..762fdf3fab63 100644 --- a/Tasks/RunJMeterLoadTest/Start-ApacheJMeterTest.ps1 +++ b/Tasks/RunJMeterLoadTest/Start-ApacheJMeterTest.ps1 @@ -25,7 +25,7 @@ param $userAgent = "ApacheJmeterTestBuildTask" $apiVersion = "api-version=1.0" -$global:RestTimeout = 5 +$global:RestTimeout = 60 $global:ElsAccountUrl = "http://www.visualstudio.com" $global:TFSAccountUrl = "http://www.visualstudio.com" $global:ScopedTestDrop = $TestDrop @@ -270,31 +270,12 @@ function UploadSummaryMdReport($summaryMdPath) { Write-Verbose "Summary Markdown Path = $summaryMdPath" - if (Test-Path($summaryMdPath)) + if (($env:SYSTEM_HOSTTYPE -eq "build") -and (Test-Path($summaryMdPath))) { Write-Host "##vso[task.addattachment type=Distributedtask.Core.Summary;name=Load test results;]$summaryMdPath" } - else - { - Write-Warning "Could not find the summary report file $summaryMdPath" - } -} - -function GetLastSuccessfulBuild($headers) -{ - $uri = ("{0}/{1}/_apis/build/builds?api-version={2}&definitions={3}&statusFilter=completed&resultFilter=succeeded&`$top=1" -f $global:TFSAccountUrl, $env:System_TeamProjectId, '2.0', $env:SYSTEM_DEFINITIONID) - $previousBuild = Get $headers $uri - return $previousBuild.Value } -function GetFilteredTestRuns($headers, $filter) -{ - $uri = ("{0}/_apis/clt/testruns?{1}&detailed=false&runType=JMeterLoadTest&{2}" -f $global:ElsAccountUrl, $apiVersion, $filter) - $filteredTestRuns = Get $headers $uri - return $filteredTestRuns -} - - ############################################## PS Script execution starts here ########################################## WriteTaskMessages "Starting Load Test Script" @@ -357,8 +338,10 @@ if ($drop.dropType -eq "TestServiceBlobDrop") WriteTaskMessages "The load test completed successfully." } + $run = GetTestRun $headers $run.id + $webResultsUrl = $run.WebResultUrl Write-Output ("Run-id for this load test is {0} and its name is '{1}'." -f $run.runNumber, $run.name) - Write-Output ("To view run details navigate to {0}/_apps/hub/ms.vss-cloudloadtest-web.hub-loadtest-account?_a=summary&runId={1}" -f $global:TFSAccountUrl, $run.id) + Write-Output ("To view run details navigate to {0}" -f $webResultsUrl) $resultsMDFolder = New-Item -ItemType Directory -Force -Path "$env:Temp\LoadTestResultSummary" $resultFilePattern = ("ApacheJMeterTestResults_{0}_{1}_*.md" -f $env:AGENT_ID, $env:SYSTEM_DEFINITIONID) @@ -366,35 +349,8 @@ if ($drop.dropType -eq "TestServiceBlobDrop") Remove-Item $resultsMDFolder\$resultFilePattern -Exclude $excludeFilePattern -Force $summaryFile = ("{0}\ApacheJMeterTestResults_{1}_{2}_{3}_{4}.md" -f $resultsMDFolder, $env:AGENT_ID, $env:SYSTEM_DEFINITIONID, $env:BUILD_BUILDID, $run.id) - $summary = ('[Test Run: {0}]({2}/_apps/hub/ms.vss-cloudloadtest-web.hub-loadtest-account?_a=summary&runId={3}) using {1}.
' -f $run.runNumber, $run.name, $global:TFSAccountUrl, $run.id) - - $runComparisonAvailable = $false - $lastSuccessfulBuild = GetLastSuccessfulBuild $headers - - if ($lastSuccessfulBuild) - { - $runSourceIdentifierFilter=('runsourceidentifier=build/{0}/{1}' -f $env:SYSTEM_DEFINITIONID, $lastSuccessfulBuild.id) - $runsInLastBuild = GetFilteredTestRuns $headers $runSourceIdentifierFilter - - if ($runsInLastBuild) - { - foreach ($previousRun in $runsInLastBuild) - { - if ($previousRun.name -eq $run.name) - { - $runComparisonAvailable = $true - $summary += ('[Compare with run {0}]({1}/_apps/hub/ms.vss-cloudloadtest-web.hub-loadtest-account?_a=compare&runId1={2}&runId2={3}) from [build {4}]({1}/{5}/_build#buildId={4}&_a=summary).' -f $previousRun.runNumber, $global:TFSAccountUrl, $previousRun.id, $run.id, $lastSuccessfulBuild.id, $env:System_TeamProjectId, $env:BUILD_BUILDID) - break - } - } - } - } - - if(!$runComparisonAvailable) - { - $summary += ('No previous run found for comparison.') - } - + $summary = ('[Test Run: {0}]({1}) using {2}.
' -f $run.runNumber, $webResultsUrl , $run.name) + ('

{0}

' -f $summary) >> $summaryFile UploadSummaryMdReport $summaryFile } diff --git a/Tasks/RunJMeterLoadTest/task.json b/Tasks/RunJMeterLoadTest/task.json index 0e2509522d08..474ddb833b94 100644 --- a/Tasks/RunJMeterLoadTest/task.json +++ b/Tasks/RunJMeterLoadTest/task.json @@ -13,7 +13,7 @@ "version": { "Major": 1, "Minor": 0, - "Patch": 4 + "Patch": 5 }, "demands": [ "azureps" diff --git a/Tasks/RunLoadTest/Start-CloudLoadTest.ps1 b/Tasks/RunLoadTest/Start-CloudLoadTest.ps1 index 6b1f533878fd..8a796dab1eb5 100644 --- a/Tasks/RunLoadTest/Start-CloudLoadTest.ps1 +++ b/Tasks/RunLoadTest/Start-CloudLoadTest.ps1 @@ -25,7 +25,7 @@ $userAgent = "CloudLoadTestBuildTask" $apiVersion = "api-version=1.0" $global:ThresholdExceeded = $false -$global:RestTimeout = 5 +$global:RestTimeout = 60 $global:MonitorThresholds = $false $global:ElsAccountUrl = "http://www.visualstudio.com" $global:TFSAccountUrl = "http://www.visualstudio.com" @@ -343,28 +343,10 @@ function UploadSummaryMdReport($summaryMdPath) { Write-Verbose "Summary Markdown Path = $summaryMdPath" - if (Test-Path($summaryMdPath)) + if (($env:SYSTEM_HOSTTYPE -eq "build") -and (Test-Path($summaryMdPath))) { Write-Host "##vso[task.addattachment type=Distributedtask.Core.Summary;name=Load test results;]$summaryMdPath" } - else - { - Write-Warning "Could not find the summary report file $summaryMdPath" - } -} - -function GetLastSuccessfulBuild($headers) -{ - $uri = ("{0}/{1}/_apis/build/builds?api-version={2}&definitions={3}&statusFilter=completed&resultFilter=succeeded&`$top=1" -f $global:TFSAccountUrl, $env:System_TeamProjectId, '2.0', $env:SYSTEM_DEFINITIONID) - $previousBuild = Get $headers $uri - return $previousBuild.Value -} - -function GetFilteredTestRuns($headers, $filter) -{ - $uri = ("{0}/_apis/clt/testruns?{1}&detailed=false&{2}" -f $global:ElsAccountUrl, $apiVersion, $filter) - $filteredTestRuns = Get $headers $uri - return $filteredTestRuns } ############################################## PS Script execution starts here ########################################## @@ -441,8 +423,11 @@ if ($drop.dropType -eq "TestServiceBlobDrop") WriteTaskMessages "The load test completed successfully." } - Write-Output ("Run-id for this load test is {0} and its name is '{1}'." -f $run.runNumber, $run.name) - Write-Output ("To view run details navigate to {0}/_apps/hub/ms.vss-cloudloadtest-web.hub-loadtest-account?_a=summary&runId={1}" -f $global:TFSAccountUrl, $run.id) + $run = GetTestRun $headers $run.id + $webResultsUri = $run.WebResultUrl + + Write-Output ("Run-id for this load test is {0} and its name is '{1}'." -f $run.runNumber, $run.name) + Write-Output ("To view run details navigate to {0}" -f $webResultsUri) Write-Output "To view detailed results navigate to Load Test | Load Test Manager in Visual Studio IDE, and open this run." $resultsMDFolder = New-Item -ItemType Directory -Force -Path "$env:Temp\LoadTestResultSummary" @@ -472,35 +457,9 @@ if ($drop.dropType -eq "TestServiceBlobDrop") $thresholdImage="bowtie-status-success" } - $summary = (' {5}
[Test Run: {0}]({2}/_apps/hub/ms.vss-cloudloadtest-web.hub-loadtest-account?_a=summary&runId={3}) using {1}.
' -f $run.runNumber, $run.name, $global:TFSAccountUrl, $run.id, $thresholdImage, $thresholdMessage) - - $runComparisonAvailable = $false - $lastSuccessfulBuild = GetLastSuccessfulBuild $headers - - if ($lastSuccessfulBuild) - { - $runSourceIdentifierFilter=('runsourceidentifier=build/{0}/{1}' -f $env:SYSTEM_DEFINITIONID, $lastSuccessfulBuild.id) - $runsInLastBuild = GetFilteredTestRuns $headers $runSourceIdentifierFilter - - if ($runsInLastBuild) - { - foreach ($previousRun in $runsInLastBuild) - { - if ($previousRun.name -eq $run.name) - { - $runComparisonAvailable = $true - $summary += ('[Compare with run {0}]({1}/_apps/hub/ms.vss-cloudloadtest-web.hub-loadtest-account?_a=compare&runId1={2}&runId2={3}) from [build {4}]({1}/{5}/_build#buildId={4}&_a=summary).' -f $previousRun.runNumber, $global:TFSAccountUrl, $previousRun.id, $run.id, $lastSuccessfulBuild.id, $env:System_TeamProjectId, $env:BUILD_BUILDID) - break - } - } - } - } - - if(!$runComparisonAvailable) - { - $summary += ('No previous run found for comparison.') - } + $summary = (' {4}
[Test Run: {0}]({1}) using {2}.
' -f $run.runNumber, $webResultsUri , $run.name, $thresholdImage, $thresholdMessage) + ('

{0}

' -f $summary) >> $summaryFile UploadSummaryMdReport $summaryFile } diff --git a/Tasks/RunLoadTest/task.json b/Tasks/RunLoadTest/task.json index 54e82b5ac647..16d5ec385372 100644 --- a/Tasks/RunLoadTest/task.json +++ b/Tasks/RunLoadTest/task.json @@ -13,7 +13,7 @@ "version": { "Major": 1, "Minor": 0, - "Patch": 9 + "Patch": 10 }, "demands": [ "msbuild",