public static parseLoadtestConfigFile()

in src/Utils/LoadtestConfigUtil.ts [22:94]


    public static parseLoadtestConfigFile(): LoadtestConfig {
        const yamlFilePath = this.validateAndGetYamlFilePath();
        const yamlConfig: YamlConfig = this.readLoadtestConfigFile(yamlFilePath);

        let loadtestConfig = {} as LoadtestConfig;
        let filePath = pathLib.dirname(yamlFilePath);

        loadtestConfig.testId = (yamlConfig.testId ?? yamlConfig.testName)!;

        loadtestConfig.testId = loadtestConfig.testId.toLowerCase();
        loadtestConfig.displayName = yamlConfig.displayName ?? loadtestConfig.testId;
        loadtestConfig.description = yamlConfig.description;
        loadtestConfig.engineInstances = yamlConfig.engineInstances ?? 1;
        loadtestConfig.kind = yamlConfig.testType as TestKind ?? TestKind.JMX;
    
        if(yamlConfig.splitAllCSVs != undefined){
            loadtestConfig.splitAllCSVs = yamlConfig.splitAllCSVs;
        }

        this.parseFileConfiguration(loadtestConfig, yamlConfig, filePath);
        this.parseParameters(loadtestConfig, yamlConfig);

        if(yamlConfig.failureCriteria != undefined) {
            if(Array.isArray(yamlConfig.failureCriteria)) {
                loadtestConfig.failureCriteria = getPassFailCriteriaFromString(yamlConfig.failureCriteria);
            } 
            else {
                loadtestConfig.failureCriteria = getPassFailCriteriaFromString(yamlConfig.failureCriteria.clientMetrics ?? []);
                loadtestConfig.serverFailureCriteria = getServerCriteriaFromYaml(yamlConfig.failureCriteria.serverMetrics ?? []);
            }
        }

        if (yamlConfig.autoStop != undefined) {
            loadtestConfig.autoStop = this.getAutoStopCriteria(yamlConfig.autoStop);
        }

        if(yamlConfig.subnetId != undefined) {
            loadtestConfig.subnetId = (yamlConfig.subnetId);
        }

        if(yamlConfig.publicIPDisabled != undefined) {
            loadtestConfig.publicIPDisabled = (yamlConfig.publicIPDisabled)
        }

        // Setting default values for appComponents and serverMetricsConfig
        loadtestConfig.appComponents = {};
        loadtestConfig.serverMetricsConfig = {};
        loadtestConfig.addDefaultsForAppComponents = {};

        if(yamlConfig.appComponents != undefined) {
            this.parseAppComponentsAndServerMetricsConfig(loadtestConfig, yamlConfig.appComponents);
        }

        // Setting default values for reference identities
        loadtestConfig.keyVaultReferenceIdentityType = ManagedIdentityTypeForAPI.SystemAssigned;
        loadtestConfig.metricsReferenceIdentityType = ManagedIdentityTypeForAPI.SystemAssigned;
        loadtestConfig.engineReferenceIdentityType = ManagedIdentityTypeForAPI.None;

        if(yamlConfig.keyVaultReferenceIdentity != undefined || yamlConfig.keyVaultReferenceIdentityType != undefined) {
            loadtestConfig.keyVaultReferenceIdentityType = yamlConfig.keyVaultReferenceIdentity ? ManagedIdentityTypeForAPI.UserAssigned : ManagedIdentityTypeForAPI.SystemAssigned;
            loadtestConfig.keyVaultReferenceIdentity = yamlConfig.keyVaultReferenceIdentity ?? null;
        }

        if(yamlConfig.referenceIdentities != undefined) {
            this.parseReferenceIdentities(loadtestConfig, yamlConfig.referenceIdentities as {[key: string]: string}[]);
        }

        if(yamlConfig.regionalLoadTestConfig != undefined) {
            loadtestConfig.regionalLoadTestConfig = this.getMultiRegionLoadTestConfig(yamlConfig.regionalLoadTestConfig);
        }

        return loadtestConfig;
    }