[DCAEGEN2] Enhance (KPI-MS) KpiComputation for SUM-RATIO operation. 76/125876/5
authorVenkata Molluru <venkatamuralimohanreddy.molluru@techmahindra.com>
Thu, 25 Nov 2021 04:04:35 +0000 (04:04 +0000)
committerVenkata Molluru <venkatamuralimohanreddy.molluru@techmahindra.com>
Sat, 8 Jan 2022 09:31:31 +0000 (09:31 +0000)
Issue-ID: DCAEGEN2-2989
Signed-off-by: Venkata Molluru <venkatamuralimohanreddy.molluru@techmahindra.com>
Change-Id: Iba9dc9cab49fc085dc2f987cea65ad258d937d5b

components/kpi-computation-ms/Changelog.md
components/kpi-computation-ms/src/main/java/org/onap/dcaegen2/kpi/computation/SumRatioKpiComputation.java [new file with mode: 0644]
components/kpi-computation-ms/src/main/java/org/onap/dcaegen2/kpi/config/Operation.java
components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/computation/KpiComputationTest.java
components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/computation/KpiTest.java
components/kpi-computation-ms/src/test/resources/kpi/cbs_config3.json [new file with mode: 0644]
components/kpi-computation-ms/src/test/resources/kpi/kpi_config_sumratio.json [new file with mode: 0644]
components/kpi-computation-ms/src/test/resources/kpi/ves_message_empty.json [new file with mode: 0644]
components/kpi-computation-ms/src/test/resources/kpi/ves_message_eventname.json [new file with mode: 0644]
components/kpi-computation-ms/src/test/resources/kpi/ves_message_null.json [new file with mode: 0644]

index a5dfd96..a153064 100644 (file)
@@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file.
 The format is based on [Keep a Changelog](http://keepachangelog.com/)
 and this project adheres to [Semantic Versioning](http://semver.org/).
 
+## [1.0.3]
+### Changed
+* Add KpiComputation for SUMRATIO operation (DCAEGEN2-2989)
+
 ## [1.0.2]
 ### Changed
 * [DCAEGEN2-2972]
diff --git a/components/kpi-computation-ms/src/main/java/org/onap/dcaegen2/kpi/computation/SumRatioKpiComputation.java b/components/kpi-computation-ms/src/main/java/org/onap/dcaegen2/kpi/computation/SumRatioKpiComputation.java
new file mode 100644 (file)
index 0000000..a031abd
--- /dev/null
@@ -0,0 +1,83 @@
+/*-
+* ============LICENSE_START=======================================================
+* Copyright (C) 2022 Deutsche Telekom AG. All rights reserved.
+* ================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*      http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+* SPDX-License-Identifier: Apache-2.0
+* ============LICENSE_END=========================================================
+*/
+
+package org.onap.dcaegen2.kpi.computation;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.LinkedList;
+import java.util.ListIterator;
+import java.util.Map;
+
+import org.onap.dcaegen2.kpi.config.ControlLoopSchemaType;
+import org.onap.dcaegen2.kpi.models.CommonEventHeader;
+import org.onap.dcaegen2.kpi.models.KpiOperand;
+import org.onap.dcaegen2.kpi.models.MeasDataCollection;
+import org.onap.dcaegen2.kpi.models.MeasInfo;
+import org.onap.dcaegen2.kpi.models.MeasInfoId;
+import org.onap.dcaegen2.kpi.models.MeasResult;
+import org.onap.dcaegen2.kpi.models.MeasTypes;
+import org.onap.dcaegen2.kpi.models.MeasValues;
+import org.onap.dcaegen2.kpi.models.Perf3gppFields;
+import org.onap.dcaegen2.kpi.models.PerformanceEvent;
+import org.onap.dcaegen2.kpi.models.VesEvent;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+* SumRatioKpiComputation.
+*
+* @author Tarun Agrawal
+*/
+public class SumRatioKpiComputation extends BaseKpiComputation {
+
+    private static Logger logger = LoggerFactory.getLogger(SumRatioKpiComputation.class);
+
+    @Override
+    public List<VesEvent> handle(PerformanceEvent pmEvent, ControlLoopSchemaType schemaType,
+            Map<String, List<KpiOperand>> measInfoMap, String measType, List<String> operands) {
+
+        BigDecimal sumK1;
+        BigDecimal sumK2;
+        final List<VesEvent> vesEvents = new LinkedList<>();
+
+        if (operands.size() == 2) {
+            List<KpiOperand> k1 = measInfoMap.get(operands.get(0));
+            List<KpiOperand> k2 = measInfoMap.get(operands.get(1));
+
+            if (k1.size() != k2.size()) {
+                return null;
+            }
+
+            sumK1 = k1.stream().map(KpiOperand::getValue).reduce(BigDecimal.ZERO, BigDecimal::add);
+            sumK2 = k2.stream().map(KpiOperand::getValue).reduce(BigDecimal.ZERO, BigDecimal::add);
+
+           if (sumK2.compareTo(BigDecimal.ZERO) == 0) {
+               return null;
+           }
+
+            BigDecimal result =  sumK1.multiply(new BigDecimal("100")).divide(sumK2, 0, RoundingMode.HALF_UP);
+            vesEvents.add(generateVesEvent(pmEvent, schemaType.toString(), result, measType));
+        }
+        return vesEvents;
+    }
+}
index 248c381..82f65ca 100644 (file)
@@ -1,7 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2021 China Mobile.
- *  Copyright (C) 2021 Deutsche Telekom AG. All rights reserved.
+ *  Copyright (C) 2022 Deutsche Telekom AG. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -25,7 +25,8 @@ public enum Operation {
 
     SUM("org.onap.dcaegen2.kpi.computation.SumKpiComputation"),
     RATIO("org.onap.dcaegen2.kpi.computation.RatioKpiComputation"),
-    MEAN("org.onap.dcaegen2.kpi.computation.MEAN");
+    MEAN("org.onap.dcaegen2.kpi.computation.MEAN"),
+    SUMRATIO("org.onap.dcaegen2.kpi.computation.SumRatioKpiComputation");
 
     public final String value;
 
index 69494ab..1ed6557 100644 (file)
@@ -1,7 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2021 China Mobile.
- *  Copyright (C) 2021 Deutsche Telekom AG. All rights reserved.
+ *  Copyright (C) 2022 Deutsche Telekom AG. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -40,6 +40,10 @@ public class KpiComputationTest {
     private static final String KPI_CONFIG_FILE = "kpi/kpi_config.json";
     private static final String VES_MESSAGE_FILE = "kpi/ves_message.json";
     private static final String KPI_CONFIG_RATIO_FILE = "kpi/kpi_config_ratio.json";
+    private static final String KPI_CONFIG_SUMRATIO_FILE = "kpi/kpi_config_sumratio.json";
+    private static final String VES_MESSAGE_EMPTY_FILE = "kpi/ves_message_empty.json";
+    private static final String VES_MESSAGE_NULL_FILE = "kpi/ves_message_null.json";
+    private static final String VES_MESSAGE_EVENTNAME_FILE = "kpi/ves_message_eventname.json";
 
     @Test
     public void testKpiComputation() {
@@ -70,4 +74,50 @@ public class KpiComputationTest {
                  .getMeasValuesList().get(0).getMeasResults().get(0).getSvalue(), "50");
     }
 
+    @Test
+    public void testKpiComputationSumRatio() {
+
+        String strKpiConfigSumRatio  = FileUtils.getFileContents(KPI_CONFIG_SUMRATIO_FILE);
+        String vesMessage = FileUtils.getFileContents(VES_MESSAGE_FILE);
+        Configuration config = mock(Configuration.class);
+        when(config.getKpiConfig()).thenReturn(strKpiConfigSumRatio);
+        List<VesEvent> vesList = new KpiComputation().checkAndDoComputation(vesMessage, config);
+        VesEvent vesEvent = vesList.get(0);
+        assertEquals(vesEvent.getEvent().getPerf3gppFields().getMeasDataCollection().getMeasInfoList().get(0)
+                .getMeasValuesList().get(0).getMeasResults().get(0).getSvalue(), "67");
+    }
+
+    @Test
+    public void testKpiComputationSumRatioEmptyCheck() {
+        String strKpiConfigSumRatio = FileUtils.getFileContents(KPI_CONFIG_SUMRATIO_FILE);
+
+        String vesMessage = FileUtils.getFileContents(VES_MESSAGE_EMPTY_FILE);
+        Configuration config = mock(Configuration.class);
+        when(config.getKpiConfig()).thenReturn(strKpiConfigSumRatio);
+        List<VesEvent> vesList = new KpiComputation().checkAndDoComputation(vesMessage, config);
+        assertEquals(0, vesList.size());
+    }
+
+    @Test
+    public void testKpiComputationSumRatioOperandsCheck() {
+        String strKpiConfigSumRatio = FileUtils.getFileContents(KPI_CONFIG_SUMRATIO_FILE);
+
+        String vesMessage = FileUtils.getFileContents(VES_MESSAGE_NULL_FILE);
+        Configuration config = mock(Configuration.class);
+        when(config.getKpiConfig()).thenReturn(strKpiConfigSumRatio);
+        List<VesEvent> vesList = new KpiComputation().checkAndDoComputation(vesMessage, config);
+        assertEquals(0, vesList.size());
+    }
+
+    @Test
+    public void testKpiComputationSumRatioEventNameCheck() {
+        String strKpiConfigSumRatio = FileUtils.getFileContents(KPI_CONFIG_SUMRATIO_FILE);
+
+        String vesMessage = FileUtils.getFileContents(VES_MESSAGE_EVENTNAME_FILE);
+        Configuration config = mock(Configuration.class);
+        when(config.getKpiConfig()).thenReturn(strKpiConfigSumRatio);
+        List<VesEvent> vesList = new KpiComputation().checkAndDoComputation(vesMessage, config);
+        assertEquals(null, vesList);
+    }
+
 }
index 236a15c..5a552c5 100644 (file)
@@ -1,7 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2021 China Mobile.
- *  Copyright (C) 2021 Deutsche Telekom AG. All rights reserved.
+ *  Copyright (C) 2022 Deutsche Telekom AG. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -34,6 +34,7 @@ public class KpiTest {
     private static final String KPI_CONFIG_FILE = "kpi/kpi_config.json";
     private static final String VES_MESSAGE_FILE = "kpi/ves_message.json";
     private static final String KPI_CONFIG_RATIO_FILE = "kpi/kpi_config_ratio.json";
+    private static final String KPI_CONFIG_SUMRATIO_FILE = "kpi/kpi_config_sumratio.json";
 
     @Test
     public void testKpiConfigValidate() {
@@ -60,4 +61,11 @@ public class KpiTest {
         assertEquals(kpiConfig.getDomain(), "measurementsForKpi");
     }
 
+    @Test
+    public void testKpiConfigSumRatioValidate() {
+        String strKpiConfig = FileUtils.getFileContents(KPI_CONFIG_SUMRATIO_FILE);
+        KpiConfig kpiConfig = KpiJsonConversion.convertKpiConfig(strKpiConfig);
+        assertEquals(kpiConfig.getDomain(), "measurementsForKpi");
+    }
+
 }
diff --git a/components/kpi-computation-ms/src/test/resources/kpi/cbs_config3.json b/components/kpi-computation-ms/src/test/resources/kpi/cbs_config3.json
new file mode 100644 (file)
index 0000000..33ae311
--- /dev/null
@@ -0,0 +1,38 @@
+{
+    "config": {
+        "pollingInterval": 20,
+        "aafUsername": "dcae@dcae.onap.org",
+        "cbsPollingInterval": 60,
+        "mongo.host": "192.168.225.61",
+        "cid": "kpi-cid",
+        "trust_store_pass_path": "/opt/app/kpims/etc/cert/trust.pass",
+        "cg": "kpi-cg",
+        "mongo.port": 27017,
+        "mongo.databasename": "datalake",
+        "streams_subscribes": {
+            "performance_management_topic": {
+                "aaf_password": "demo123456!",
+                "type": "message-router",
+                "dmaap_info": {
+                    "topic_url": "https://message-router.onap.svc.cluster.local:3905/events/org.onap.dmaap.mr.PERFORMANCE_MEASUREMENTS"
+                },
+                "aaf_username": "dcae@dcae.onap.org"
+            }
+        },
+        "trust_store_path": "/opt/app/kpims/etc/cert/trust.jks",
+        "pollingTimeout": 60,
+        "streams_publishes": {
+            "kpi_topic": {
+                "aaf_password": "demo123456!",
+                "type": "message-router",
+                "dmaap_info": {
+                    "topic_url": "https://message-router.onap.svc.cluster.local:3905/events/unauthenticated.DCAE_KPI_OUTPUT"
+                },
+                "aaf_username": "dcae@dcae.onap.org"
+            }
+        },
+        "aafPassword": "demo123456!",
+        "kpi.policy": "{\"domain\":\"measurementsForKpi\",\"methodForKpi\":[{\"eventName\":\"perf3gpp_CORE-AMF_pmMeasResult\",\"controlLoopSchemaType\":\"SLICE\",\"policyScope\":\"resource=networkSlice;type=configuration\",\"policyName\":\"configuration.dcae.microservice.pm-mapper.xml\",\"policyVersion\":\"v0.0.1\",\"kpis\":[{\"measType\":\"AMFRegNbr\",\"operation\":\"SUM\",\"operands\":[\"RM.RegisteredSubNbrMean\"]}]},{\"eventName\":\"perf3gpp_AcmeNode-Acme_pmMeasResult\",\"controlLoopSchemaType\":\"SLICE\",\"policyScope\":\"resource=networkSlice;type=configuration\",\"policyName\":\"configuration.dcae.microservice.pm-mapper.xml\",\"policyVersion\":\"v0.0.1\",\"kpis\":[{\"measType\":\"UpstreamThr\",\"operation\":\"SUMRATIO\",\"operands\":[\"GTP.InDataOctN3UPF\",\"GTP.OutDataOctN3UPF\"]},{\"measType\":\"DownstreamThr\",\"operation\":\"SUMRATIO\",\"operands\":[\"GTP.InDataOctN3UPF\",\"GTP.OutDataOctN3UPF\"]}]}]}",
+        "dmaap.server": ["message-router"]
+    }
+}
diff --git a/components/kpi-computation-ms/src/test/resources/kpi/kpi_config_sumratio.json b/components/kpi-computation-ms/src/test/resources/kpi/kpi_config_sumratio.json
new file mode 100644 (file)
index 0000000..1c6f79b
--- /dev/null
@@ -0,0 +1,34 @@
+{
+    "domain": "measurementsForKpi",
+    "methodForKpi": [{
+            "eventName": "perf3gpp_CORE_AMF_pmMeasResult",
+            "controlLoopSchemaType": "SLICE",
+            "policyScope": "resource=networkSlice;type=configuration",
+            "policyName": "configuration.dcae.microservice.pm-mapper.xml",
+            "policyVersion": "v0.0.1",
+            "kpis": [{
+                "measType": "AMFRegNbr",
+                "operation": "SUM",
+                "operands": ["RM.RegisteredSubNbrMean"]
+            }]
+        },
+        {
+            "eventName": "perf3gpp_AcmeNode-Acme_pmMeasResult",
+            "controlLoopSchemaType": "SLICE",
+            "policyScope": "resource=networkSlice;type=configuration",
+            "policyName": "configuration.dcae.microservice.pm-mapper.xml",
+            "policyVersion": "v0.0.1",
+            "kpis": [{
+                    "measType": "UpstreamThr",
+                    "operation": "SUMRATIO",
+                    "operands": ["GTP.InDataOctN3UPF","GTP.OutDataOctN3UPF"]
+                },
+                {
+                    "measType": "DownstreamThr",
+                    "operation": "SUMRATIO",
+                    "operands": ["GTP.InDataOctN3UPF","GTP.OutDataOctN3UPF"]
+                }
+            ]
+        }
+    ]
+}
diff --git a/components/kpi-computation-ms/src/test/resources/kpi/ves_message_empty.json b/components/kpi-computation-ms/src/test/resources/kpi/ves_message_empty.json
new file mode 100644 (file)
index 0000000..b2988a3
--- /dev/null
@@ -0,0 +1,84 @@
+{
+    "event": {
+        "commonEventHeader": {
+            "domain": "perf3gpp",
+            "eventId": "14618daf-c0ce-4ccc-9169-9e1ac79971f2",
+            "sequence": 0,
+            "eventName": "perf3gpp_AcmeNode-Acme_pmMeasResult",
+            "sourceName": "oteNB5309",
+            "reportingEntityName": "",
+            "priority": "Normal",
+            "startEpochMicrosec": 1591099200000,
+            "lastEpochMicrosec": 1591100100000,
+            "version": "4.0",
+            "vesEventListenerVersion": "7.1",
+            "timeZoneOffset": "UTC+05:00"
+        },
+        "perf3gppFields": {
+            "perf3gppFieldsVersion": "1.0",
+            "measDataCollection": {
+                "granularityPeriod": 1591100100000,
+                "measuredEntityUserName": "",
+                "measuredEntityDn": "UPFMeasurement",
+                "measuredEntitySoftwareVersion": "r0.1",
+                "measInfoList": [
+                    {
+                        "measInfoId": {
+                            "sMeasInfoId": "UPFFunction0"
+                        },
+                        "measTypes": {
+                            "sMeasTypesList": [
+                                "RRC.RrcConnectionSuccess.08_010101",
+                                "RRC.RrcConnectionTotal.08_010101"
+                            ]
+                        },
+                        "measValuesList": [
+                            {
+                                "measObjInstId": "some measObjLdn",
+                                "suspectFlag": "false",
+                                "measResults": [
+                                    {
+                                        "p": 1,
+                                        "sValue": "10"
+                                    },
+                                    {
+                                        "p": 2,
+                                        "sValue": "0"
+                                    }
+                                ]
+                            }
+                        ]
+                    },
+                    {
+                        "measInfoId": {
+                            "sMeasInfoId": "UPFFunction1"
+                        },
+                        "measTypes": {
+                            "sMeasTypesList": [
+                                "RRC.RrcConnectionSuccess.08_010101",
+                                "RRC.RrcConnectionTotal.08_010101"
+                            ]
+                        },
+                        "measValuesList": [
+                            {
+                                "measObjInstId": "some measObjLdn",
+                                "suspectFlag": "false",
+                                "measResults": [
+                                    {
+                                        "p": 1,
+                                        "sValue": "30"
+                                    },
+                                    {
+                                        "p": 2,
+                                        "sValue": "0"
+                                    }
+                                ]
+                            }
+                        ]
+                    }
+                ]
+            }
+        }
+    }
+}
+
diff --git a/components/kpi-computation-ms/src/test/resources/kpi/ves_message_eventname.json b/components/kpi-computation-ms/src/test/resources/kpi/ves_message_eventname.json
new file mode 100644 (file)
index 0000000..be7225e
--- /dev/null
@@ -0,0 +1,84 @@
+{
+    "event": {
+        "commonEventHeader": {
+            "domain": "perf3gpp",
+            "eventId": "14618daf-c0ce-4ccc-9169-9e1ac79971f2",
+            "sequence": 0,
+            "eventName": "perf3gpp_AcmeNode-Acme",
+            "sourceName": "oteNB5309",
+            "reportingEntityName": "",
+            "priority": "Normal",
+            "startEpochMicrosec": 1591099200000,
+            "lastEpochMicrosec": 1591100100000,
+            "version": "4.0",
+            "vesEventListenerVersion": "7.1",
+            "timeZoneOffset": "UTC+05:00"
+        },
+        "perf3gppFields": {
+            "perf3gppFieldsVersion": "1.0",
+            "measDataCollection": {
+                "granularityPeriod": 1591100100000,
+                "measuredEntityUserName": "",
+                "measuredEntityDn": "UPFMeasurement",
+                "measuredEntitySoftwareVersion": "r0.1",
+                "measInfoList": [
+                    {
+                        "measInfoId": {
+                            "sMeasInfoId": "UPFFunction0"
+                        },
+                        "measTypes": {
+                            "sMeasTypesList": [
+                                "RRC.RrcConnectionSuccess.08_010101",
+                                "RRC.RrcConnectionTotal.08_010101"
+                            ]
+                        },
+                        "measValuesList": [
+                            {
+                                "measObjInstId": "some measObjLdn",
+                                "suspectFlag": "false",
+                                "measResults": [
+                                    {
+                                        "p": 1,
+                                        "sValue": "10"
+                                    },
+                                    {
+                                        "p": 2,
+                                        "sValue": "20"
+                                    }
+                                ]
+                            }
+                        ]
+                    },
+                    {
+                        "measInfoId": {
+                            "sMeasInfoId": "UPFFunction1"
+                        },
+                        "measTypes": {
+                            "sMeasTypesList": [
+                                "RRC.RrcConnectionSuccess.08_010101",
+                                "RRC.RrcConnectionTotal.08_010101"
+                            ]
+                        },
+                        "measValuesList": [
+                            {
+                                "measObjInstId": "some measObjLdn",
+                                "suspectFlag": "false",
+                                "measResults": [
+                                    {
+                                        "p": 1,
+                                        "sValue": "30"
+                                    },
+                                    {
+                                        "p": 2,
+                                        "sValue": "40"
+                                    }
+
+                                ]
+                            }
+                        ]
+                    }
+                ]
+            }
+        }
+    }
+}
diff --git a/components/kpi-computation-ms/src/test/resources/kpi/ves_message_null.json b/components/kpi-computation-ms/src/test/resources/kpi/ves_message_null.json
new file mode 100644 (file)
index 0000000..9865685
--- /dev/null
@@ -0,0 +1,80 @@
+{
+    "event": {
+        "commonEventHeader": {
+            "domain": "perf3gpp",
+            "eventId": "14618daf-c0ce-4ccc-9169-9e1ac79971f2",
+            "sequence": 0,
+            "eventName": "perf3gpp_AcmeNode-Acme_pmMeasResult",
+            "sourceName": "oteNB5309",
+            "reportingEntityName": "",
+            "priority": "Normal",
+            "startEpochMicrosec": 1591099200000,
+            "lastEpochMicrosec": 1591100100000,
+            "version": "4.0",
+            "vesEventListenerVersion": "7.1",
+            "timeZoneOffset": "UTC+05:00"
+        },
+        "perf3gppFields": {
+            "perf3gppFieldsVersion": "1.0",
+            "measDataCollection": {
+                "granularityPeriod": 1591100100000,
+                "measuredEntityUserName": "",
+                "measuredEntityDn": "UPFMeasurement",
+                "measuredEntitySoftwareVersion": "r0.1",
+                "measInfoList": [
+                    {
+                        "measInfoId": {
+                            "sMeasInfoId": "UPFFunction0"
+                        },
+                        "measTypes": {
+                            "sMeasTypesList": [
+                                "RRC.RrcConnectionSuccess.08_010101",
+                                "RRC.RrcConnectionTotal.08_010101"
+                            ]
+                        },
+                        "measValuesList": [
+                            {
+                                "measObjInstId": "some measObjLdn",
+                                "suspectFlag": "false",
+                                "measResults": [
+                                    {
+                                        "p": 1,
+                                        "sValue": "10"
+                                    },
+                                    {
+                                        "p": 2,
+                                        "sValue": "20"
+                                    }
+                                ]
+                            }
+                        ]
+                    },
+                    {
+                        "measInfoId": {
+                            "sMeasInfoId": "UPFFunction1"
+                        },
+                        "measTypes": {
+                            "sMeasTypesList": [
+                                "RRC.RrcConnectionSuccess.08_010101",
+                                "RRC.RrcConnectionTotal.08_010101"
+                            ]
+                        },
+                        "measValuesList": [
+                            {
+                                "measObjInstId": "some measObjLdn",
+                                "suspectFlag": "false",
+                                "measResults": [
+                                    {
+                                        "p": 1,
+                                        "sValue": "30"
+                                    }
+                                ]
+                            }
+                        ]
+                    }
+                ]
+            }
+        }
+    }
+}
+