Public/Invoke-CloudLoadTest.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
Function Invoke-CloudLoadTest{
[cmdletbinding()]
Param(

    [Parameter(Mandatory = $True)]
    [ValidateNotNullOrEmpty()]
    [string]
    $LoadTestFileName,

    [Parameter(Mandatory = $False)]
    [ValidateNotNullOrEmpty()]
    [string]
    $LoadTestDescription = "LoadTest",

    [Parameter(Mandatory = $False)]
    [validatescript({
        if (Test-Path $_ -PathType Container){
            $True
        }
        else{
            Throw "Invalid folder path '$_'"
        }
    })]
    [string]
    $TestDirectoryPath,
    
    [Parameter(Mandatory = $True)]
    [ValidateNotNullOrEmpty()]
    [string]
    $VisualStudioAccountName,

    [Parameter(Mandatory = $True)]
    [ValidateNotNullOrEmpty()]
    [string]
    $VisualStudioAccountPersonalAccessToken,

    [Parameter(Mandatory = $False)]
    [bool]
    $OutputTeamCityServiceMessages = $True
)

    try{

        Set-PSConsoleForTeamCity

        # Get auth headers
        $Auth = Get-CloudLoadTestAuthHeaders -VisualStudioAccountName $VisualStudioAccountName -VisualStudioAccountPersonalAccessToken $VisualStudioAccountPersonalAccessToken -Verbose

        # Create new test drop
        $TestDrop = New-CloudLoadTestDrop -Headers $Auth.Headers -BaseUri $Auth.BaseUri -Verbose
    
        # Publish files to test drop container
        Set-CloudLoadTestDrop -Headers $Auth.Headers -BaseUri $Auth.BaseUri -TestDrop $TestDrop -TestDirectoryPath $TestDirectoryPath -LoadTestFileName $LoadTestFileName -Verbose

        # Create the test run
        $TestRun = New-CloudLoadTestRun -Headers $Auth.Headers -BaseUri $Auth.BaseUri -TestDrop $TestDrop -LoadTestFileName $LoadTestFileName -LoadTestDescription $LoadTestDescription -Verbose
    
        # Start test run
        Start-CloudLoadTestRun -Headers $Auth.Headers -BaseUri $Auth.BaseUri -TestRunId $TestRun.id -Verbose

        # Wait for run to complete
        Get-CloudLoadTestRun -Headers $Auth.Headers -BaseUri $Auth.BaseUri -TestRunId $TestRun.id -Verbose

        # Get counter samples
        $CounterSamples = Get-CloudLoadTestRunCounterSamples -Headers $Auth.Headers -BaseUri $Auth.BaseUri -TestRunId $Testrun.id -OutputTeamCityServiceMessages $OutputTeamCityServiceMessages -Verbose

        # Get test summary
        $TestSummary = Get-CloudLoadTestRunSummary -Headers $Auth.Headers -BaseUri $Auth.BaseUri -TestRunId $TestRun.id -OutputTeamCityServiceMessages $OutputTeamCityServiceMessages -Verbose

    }
    catch{
        throw $_
    }

}