private static parseAppComponentsAndServerMetricsConfig()

in src/Utils/LoadtestConfigUtil.ts [258:299]


    private static parseAppComponentsAndServerMetricsConfig(loadtestConfig: LoadtestConfig, appComponents: Array<any>) {
        for(let value of appComponents) {
            let resourceId = value.resourceId.toLowerCase();

            loadtestConfig.appComponents[resourceId] = {
                resourceName: (value.resourceName || Util.getResourceNameFromResourceId(resourceId)),
                kind: value.kind ?? null,
                resourceType: Util.getResourceTypeFromResourceId(resourceId) ?? '',
                resourceId: resourceId,
                subscriptionId: Util.getSubscriptionIdFromResourceId(resourceId) ?? '',
                resourceGroup: Util.getResourceGroupFromResourceId(resourceId) ?? ''
            };

            let metrics = (value.metrics ?? []) as Array<ServerMetricsClientModel>;
            
            if(loadtestConfig.addDefaultsForAppComponents[resourceId] == undefined) {
                loadtestConfig.addDefaultsForAppComponents[resourceId] = metrics.length == 0;
            }
            else {
                // when the same resource has metrics at one place, but not at other, we dont need defaults anymore.
                loadtestConfig.addDefaultsForAppComponents[resourceId] = loadtestConfig.addDefaultsForAppComponents[resourceId] && metrics.length == 0; 
            }

            for(let serverComponent of metrics) {
                let key : string = (resourceId + '/' + (serverComponent.namespace ?? Util.getResourceTypeFromResourceId(resourceId)) + '/' + serverComponent.name).toLowerCase();

                if(!loadtestConfig.serverMetricsConfig.hasOwnProperty(key) || isNullOrUndefined(loadtestConfig.serverMetricsConfig[key])) {
                    loadtestConfig.serverMetricsConfig[key] = {
                        name: serverComponent.name,
                        aggregation: serverComponent.aggregation,
                        metricNamespace: serverComponent.namespace ?? Util.getResourceTypeFromResourceId(resourceId),
                        resourceId: resourceId,
                        resourceType: Util.getResourceTypeFromResourceId(resourceId) ?? '',
                        id: key
                    }
                }
                else {
                    loadtestConfig.serverMetricsConfig[key]!.aggregation = loadtestConfig.serverMetricsConfig[key]!.aggregation + "," + serverComponent.aggregation;
                }
            }
        }
    }