eng/common/scripts/stress-testing/generate-scenario-matrix.ps1 (87 lines of code) (raw):

param( [string]$matrixFilePath, [string]$Selection, [Parameter(Mandatory=$False)][string]$DisplayNameFilter, [Parameter(Mandatory=$False)][array]$Filters, [Parameter(Mandatory=$False)][array]$Replace, [Parameter(Mandatory=$False)][array]$NonSparseParameters ) $ErrorActionPreference = 'Stop' function GenerateScenarioMatrix( [Parameter(Mandatory=$True)][string]$matrixFilePath, [Parameter(Mandatory=$True)][string]$Selection, [Parameter(Mandatory=$False)][string]$DisplayNameFilter, [Parameter(Mandatory=$False)][array]$Filters, [Parameter(Mandatory=$False)][array]$Replace, [Parameter(Mandatory=$False)][array]$NonSparseParameters ) { $yamlConfig = Get-Content $matrixFilePath -Raw $prettyMatrix = &"$PSScriptRoot/../job-matrix/Create-JobMatrix.ps1" ` -ConfigPath $matrixFilePath ` -Selection $Selection ` -DisplayNameFilter $DisplayNameFilter ` -Filters $Filters ` -Replace $Replace ` -NonSparseParameters $NonSparseParameters ` -CI:$False Write-Host "==================================================" Write-Host "Generated matrix for $matrixFilePath" Write-Host $prettyMatrix Write-Host "==================================================" $matrixObj = $prettyMatrix | ConvertFrom-Json $scenariosMatrix = @() foreach($permutation in $matrixObj.psobject.properties) { $entry = @{} $entry.Name = $permutation.Name -replace '_', '-' $entry.Scenario = $entry.Name $entry.Remove("Name") foreach ($param in $permutation.value.psobject.properties) { $entry.add($param.Name, $param.value) } $scenariosMatrix += $entry } $valuesConfig = Join-Path (Split-Path $matrixFilePath) 'values.yaml' $values = [ordered]@{} if (Test-Path $valuesConfig) { $valuesYaml = Get-Content -Raw $valuesConfig $values = $valuesYaml | ConvertFrom-Yaml -Ordered if (!$values) {$values = @{}} if ($values.Contains('Scenarios')) { throw "Please remove the 'Scenarios' key from $valuesConfig as it is deprecated." } } $values.scenarios = $scenariosMatrix $generatedValues = Join-Path (Split-Path $matrixFilePath) 'generatedValues.yaml' $values | ConvertTo-Yaml | Out-File -FilePath $generatedValues } function NewStressTestPackageInfo( [hashtable]$chart, [System.IO.FileInfo]$chartFile, [switch]$CI, [object]$namespaceOverride ) { $namespace = if ($namespaceOverride) { $namespaceOverride } elseif ($CI) { $chart.annotations.namespace } else { GetUsername } return [StressTestPackageInfo]@{ Namespace = $namespace.ToLower() Directory = $chartFile.DirectoryName ReleaseName = $chart.name Dockerfile = $chart.annotations.dockerfile DockerBuildDir = $chart.annotations.dockerbuilddir } } # Don't call functions when the script is being dot sourced if ($MyInvocation.InvocationName -ne ".") { GenerateScenarioMatrix ` -matrixFilePath $matrixFilePath ` -Selection $Selection ` -DisplayNameFilter $DisplayNameFilter ` -Filters $Filters ` -Replace $Replace ` -NonSparseParameters $NonSparseParameters }