Skip to content

Commit

Permalink
Merge pull request #2589 from vinitsuri/releases/m106
Browse files Browse the repository at this point in the history
CLT build tasks fixes on behalf of Vinit Suri.
  • Loading branch information
dpksinghal authored Sep 23, 2016
2 parents 03599e7 + d4c9a7f commit 8e9c5cb
Show file tree
Hide file tree
Showing 6 changed files with 40 additions and 157 deletions.
74 changes: 21 additions & 53 deletions Tasks/QuickPerfTest/Invoke-QuickPerfTest.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ param

$userAgent = "QuickPerfTestBuildTask"

$global:RestTimeout = 60

function InitializeRestHeaders()
{
$restHeaders = New-Object -TypeName "System.Collections.Generic.Dictionary[[String], [String]]"
Expand Down Expand Up @@ -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
}
Expand All @@ -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"
Expand Down Expand Up @@ -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 ##########################################
Expand Down Expand Up @@ -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}.<br/>' -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}.<br/>' -f $run.runNumber, $webResultsUrl ,$run.name)

if(!$runComparisonAvailable)
{
$summary += ('No previous run found for comparison.')
}

('<p>{0}</p>' -f $summary) >> $summaryFile
UploadSummaryMdReport $summaryFile
}
Expand Down
2 changes: 1 addition & 1 deletion Tasks/QuickPerfTest/task.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"version": {
"Major": 1,
"Minor": 0,
"Patch": 8
"Patch": 9
},
"demands": [
"msbuild",
Expand Down
58 changes: 7 additions & 51 deletions Tasks/RunJMeterLoadTest/Start-ApacheJMeterTest.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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"

Expand Down Expand Up @@ -357,44 +338,19 @@ 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)
$excludeFilePattern = ("ApacheJMeterTestResults_{0}_{1}_{2}_*.md" -f $env:AGENT_ID, $env:SYSTEM_DEFINITIONID, $env:BUILD_BUILDID)
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}.<br/>' -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}.<br/>' -f $run.runNumber, $webResultsUrl , $run.name)

('<p>{0}</p>' -f $summary) >> $summaryFile
UploadSummaryMdReport $summaryFile
}
Expand Down
2 changes: 1 addition & 1 deletion Tasks/RunJMeterLoadTest/task.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"version": {
"Major": 1,
"Minor": 0,
"Patch": 4
"Patch": 5
},
"demands": [
"azureps"
Expand Down
59 changes: 9 additions & 50 deletions Tasks/RunLoadTest/Start-CloudLoadTest.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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 ##########################################
Expand Down Expand Up @@ -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"
Expand Down Expand Up @@ -472,35 +457,9 @@ if ($drop.dropType -eq "TestServiceBlobDrop")
$thresholdImage="bowtie-status-success"
}

$summary = ('<span class="bowtie-icon {4}" /> {5}<br/>[Test Run: {0}]({2}/_apps/hub/ms.vss-cloudloadtest-web.hub-loadtest-account?_a=summary&runId={3}) using {1}.<br/>' -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 = ('<span class="bowtie-icon {3}" /> {4}<br/>[Test Run: {0}]({1}) using {2}.<br/>' -f $run.runNumber, $webResultsUri , $run.name, $thresholdImage, $thresholdMessage)

('<p>{0}</p>' -f $summary) >> $summaryFile
UploadSummaryMdReport $summaryFile
}
Expand Down
2 changes: 1 addition & 1 deletion Tasks/RunLoadTest/task.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"version": {
"Major": 1,
"Minor": 0,
"Patch": 9
"Patch": 10
},
"demands": [
"msbuild",
Expand Down

0 comments on commit 8e9c5cb

Please sign in to comment.