diff options
author | Kai <lukai@chinamobile.com> | 2021-01-21 10:19:18 +0800 |
---|---|---|
committer | Kai <lukai@chinamobile.com> | 2021-02-02 11:36:12 +0800 |
commit | 092720441f3861d06deec723373b833607e9dd62 (patch) | |
tree | 1e38e5fd5ec05dc67827ccb7f1cd2877c9d62d68 /components/kpi-computation-ms/src/test | |
parent | 2510fa240ca7395ff8a36762d5892413ab05fd68 (diff) |
New KPI Compution MS
Issue-ID: DCAEGEN2-2585
Signed-off-by: Kai Lu <lukai@chinamobile.com>
Change-Id: I9dff9f3d3abcb6c10d6d6adb0dbc874d9f017e8e
Diffstat (limited to 'components/kpi-computation-ms/src/test')
17 files changed, 1278 insertions, 0 deletions
diff --git a/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/ApplicationTest.java b/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/ApplicationTest.java new file mode 100644 index 00000000..c0827319 --- /dev/null +++ b/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/ApplicationTest.java @@ -0,0 +1,38 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2021 China Mobile. + * ================================================================================ + * 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; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = ApplicationTest.class) +public class ApplicationTest { + + @Test + public void contextLoads() { + Application.getConfig(); + Application.getStandaloneConfig("src/test/resources/kpi/cbs_config1.json"); + Application.getStandaloneConfig("src/test/resources/config_all.json"); + } +} diff --git a/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/computation/FileUtils.java b/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/computation/FileUtils.java new file mode 100644 index 00000000..d40cc02a --- /dev/null +++ b/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/computation/FileUtils.java @@ -0,0 +1,89 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2020-2021 China Mobile. + * ================================================================================ + * 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 static org.junit.jupiter.api.Assertions.fail; + +import java.io.IOException; +import java.net.URISyntaxException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * File read utils. + * + * @author Kai Lu + */ +public class FileUtils { + + /** + * Reads contents of files inside the eventBodyDirectory, combines contents with + * metadata to make an Event Object. Fails test in the event of failure to read + * a file. + * + * @param targetDirectory Path to directory with files. + * @return List of Strings containing the body as acquired from files inside + * targetDirectory. + * @throws IOException in the event it fails to read from the files. + */ + public static List<String> getFilesFromDirectory(Path targetDirectory) throws IOException { + try (Stream<Path> eventFileStream = Files.walk(targetDirectory)) { + return eventFileStream.filter(Files::isRegularFile).filter(Files::isReadable) + .map(FileUtils::getFileContents).collect(Collectors.toList()); + } + } + + /** + * reads contents of file into a string. fails a tests in the event failure + * occurs. + * + * @param path path to file. + * @return string containing files contents + */ + public static String getFileContents(Path path) { + try { + return new String(Files.readAllBytes(path)); + } catch (IOException exception) { + fail("IOException occurred while reading file."); + } + return null; + } + + /** + * Reads contents of resource. fails a test in the event failure occurs. + * + * @param fileName of file in resources to be read. + * @return contents of file + */ + public static String getFileContents(String fileName) { + try { + Path path = Paths.get(ClassLoader.getSystemResource(fileName).toURI()); + return getFileContents(path); + } catch (URISyntaxException exception) { + fail("Exception occurred, failed to acquire resource URI."); + } + return null; + } +} diff --git a/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/computation/KpiComputationTest.java b/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/computation/KpiComputationTest.java new file mode 100644 index 00000000..0bb3b184 --- /dev/null +++ b/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/computation/KpiComputationTest.java @@ -0,0 +1,56 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2021 China Mobile. + * ================================================================================ + * 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 static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import java.util.List; + +import org.junit.Test; +import org.onap.dcaegen2.kpi.computation.KpiComputation; +import org.onap.dcaegen2.kpi.models.Configuration; +import org.onap.dcaegen2.kpi.models.VesEvent; + +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"; + + @Test + public void testKpiComputation() { + + + String strKpiConfig = FileUtils.getFileContents(KPI_CONFIG_FILE); + + String vesMessage = FileUtils.getFileContents(VES_MESSAGE_FILE); + + Configuration config = mock(Configuration.class); + when(config.getKpiConfig()).thenReturn(strKpiConfig); + 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(), "40"); + } + +} diff --git a/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/computation/KpiTest.java b/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/computation/KpiTest.java new file mode 100644 index 00000000..94aca96a --- /dev/null +++ b/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/computation/KpiTest.java @@ -0,0 +1,54 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2021 China Mobile. + * ================================================================================ + * 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 static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.onap.dcaegen2.kpi.config.KpiConfig; +import org.onap.dcaegen2.kpi.config.KpiJsonConversion; +import org.onap.dcaegen2.kpi.models.VesEvent; +import org.onap.dcaegen2.kpi.utils.VesJsonConversion; + +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"; + + @Test + public void testKpiConfigValidate() { + + String strKpiConfig = FileUtils.getFileContents(KPI_CONFIG_FILE); + + KpiConfig kpiConfig = KpiJsonConversion.convertKpiConfig(strKpiConfig); + assertEquals(kpiConfig.getDomain(), "measurementsForKpi"); + } + + @Test + public void testVesEventValidate() { + + String vesMessage = FileUtils.getFileContents(VES_MESSAGE_FILE); + + VesEvent vesEvent = VesJsonConversion.convertVesEvent(vesMessage); + assertEquals(vesEvent.getEvent().getCommonEventHeader().getDomain(), "perf3gpp"); + } + +} diff --git a/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/dmaap/DmaapClientTest.java b/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/dmaap/DmaapClientTest.java new file mode 100644 index 00000000..8020f938 --- /dev/null +++ b/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/dmaap/DmaapClientTest.java @@ -0,0 +1,125 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2021 China Mobile. + * ================================================================================ + * 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.dmaap; + +import static org.mockito.Mockito.when; + +import com.att.nsa.cambria.client.CambriaTopicManager; +import com.google.gson.Gson; +import com.google.gson.JsonObject; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; +import org.onap.dcaegen2.kpi.models.Configuration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = DmaapClientTest.class) +public class DmaapClientTest { + + @Mock + private CambriaTopicManager topicManager; + + @InjectMocks + DmaapClient client; + + @Before + public void setup() { + MockitoAnnotations.initMocks(this); + } + + @Test + public void getAllTopicsTest() { + Set<String> topics = new HashSet<String>(); + topics.add("topic1"); + topics.add("topic2"); + Configuration configuration = Configuration.getInstance(); + List<String> list = new ArrayList<String>(); + list.add("server"); + configuration.setDmaapServers(list); + configuration.setCg("cg"); + configuration.setCid("cid"); + configuration.setPollingInterval(30); + configuration.setPollingTimeout(100); + + try { + when(topicManager.getTopics()).thenReturn(topics); + + client = Mockito.mock(DmaapClient.class); + client.initClient(); + Mockito.verify(client).initClient(); + // Mockito.verifycreateAndConfigureTopics(); + + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Test + public void startClientTest() { + try { + Configuration configuration = Configuration.getInstance(); + String configAllJson = readFromFile("src/test/resources/config_all.json"); + + JsonObject configAll = new Gson().fromJson(configAllJson, JsonObject.class); + + JsonObject config = configAll.getAsJsonObject("config"); + System.out.println(configuration); + configuration.updateConfigurationFromJsonObject(config); + DmaapClient client = new DmaapClient(); + client.initClient(); + // Mockito.verify(client).startClient(); + // Mockito.verifycreateAndConfigureTopics(); + + } catch (Exception e) { + e.printStackTrace(); + } + } + + private static String readFromFile(String file) { + String content = ""; + try (BufferedReader bufferedReader = new BufferedReader(new FileReader(file))) { + content = bufferedReader.readLine(); + String temp; + while ((temp = bufferedReader.readLine()) != null) { + content = content.concat(temp); + } + content = content.trim(); + } catch (Exception e) { + content = null; + } + return content; + } +} diff --git a/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/dmaap/KpiDmaapClientTest.java b/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/dmaap/KpiDmaapClientTest.java new file mode 100644 index 00000000..e8fd9925 --- /dev/null +++ b/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/dmaap/KpiDmaapClientTest.java @@ -0,0 +1,89 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2021 China Mobile. + * ================================================================================ + * 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.dmaap; + +import static org.junit.Assert.assertTrue; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.runners.MockitoJUnitRunner; +import org.onap.dcaegen2.kpi.models.Configuration; +import org.onap.dcaegen2.kpi.utils.DmaapUtils; +import org.springframework.boot.test.context.SpringBootTest; + +import com.att.nsa.cambria.client.CambriaBatchingPublisher; +import com.att.nsa.cambria.client.CambriaConsumer; + +@RunWith(MockitoJUnitRunner.class) +@SpringBootTest(classes = KpiDmaapClient.class) +public class KpiDmaapClientTest { + + @Mock + Configuration configurationMock; + + @Mock + DmaapUtils dmaapUtilsMock; + + @InjectMocks + KpiDmaapClient kpiDmaapClient; + + @Mock + CambriaConsumer kpiResponseCambriaConsumerMock; + + @Mock + CambriaBatchingPublisher cambriaBatchingPublisherMock; + + @Mock + NotificationProducer notificationProducerMock; + + @Before + public void setup() { + kpiDmaapClient = new KpiDmaapClient(dmaapUtilsMock, configurationMock); + } + + @Test + public void sendNotificationToPolicyTest() { + Map<String, Object> streamsPublishes = new HashMap<>(); + Map<String, String> topics = new HashMap<>(); + Map<String, Object> dmaapInfo = new HashMap<>(); + topics.put("topic_url", "https://message-router.onap.svc.cluster.local:3905/events/DCAE_KPI_OUTPUT"); + dmaapInfo.put("dmaap_info", topics); + streamsPublishes.put("kpi_topic", dmaapInfo); + Mockito.when(configurationMock.getStreamsPublishes()).thenReturn(streamsPublishes); + Mockito.when(dmaapUtilsMock.buildPublisher(configurationMock, "DCAE_KPI_OUTPUT")) + .thenReturn(cambriaBatchingPublisherMock); + try { + Mockito.when(cambriaBatchingPublisherMock.send("", "hello")).thenReturn(0); + } catch (IOException e) { + e.printStackTrace(); + } + assertTrue(kpiDmaapClient.sendNotificationToDmaap("hello")); + + } +} diff --git a/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/dmaap/NewPmNotificationTest.java b/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/dmaap/NewPmNotificationTest.java new file mode 100644 index 00000000..db52c53d --- /dev/null +++ b/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/dmaap/NewPmNotificationTest.java @@ -0,0 +1,41 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2021 China Mobile. + * ================================================================================ + * 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.dmaap; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + +public class NewPmNotificationTest { + + @Test + public void testNewPmNotif() { + NewPmNotification newPmNotif1 = new NewPmNotification(true); + NewPmNotification newPmNotif2 = new NewPmNotification(); + newPmNotif2.setNewNotif(true); + assertTrue(newPmNotif2.getNewNotif()); + newPmNotif2.init(); + assertEquals(false, newPmNotif2.getNewNotif()); + assertTrue(newPmNotif1.getNewNotif()); + + } +} diff --git a/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/dmaap/NotificationConsumerTest.java b/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/dmaap/NotificationConsumerTest.java new file mode 100644 index 00000000..1d04a627 --- /dev/null +++ b/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/dmaap/NotificationConsumerTest.java @@ -0,0 +1,65 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2021 China Mobile. + * ================================================================================ + * 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.dmaap; + +import static org.mockito.Mockito.when; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import com.att.nsa.cambria.client.CambriaConsumer; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = NotificationConsumerTest.class) +public class NotificationConsumerTest { + + @Mock + CambriaConsumer cambriaConsumer; + + @Mock + NotificationCallback notificationCallback; + + @InjectMocks + NotificationConsumer notificationConsumer; + + @Test + public void testNotificationConsumer() { + try { + List<String> notifications = new ArrayList<>(); + notifications.add("notification1"); + when(cambriaConsumer.fetch()).thenReturn(notifications); + Mockito.doNothing().when(notificationCallback).activateCallBack(Mockito.anyString()); + notificationConsumer.run(); + + } catch (Exception e) { + e.printStackTrace(); + } + } + +} diff --git a/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/dmaap/NotificationProducerTest.java b/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/dmaap/NotificationProducerTest.java new file mode 100644 index 00000000..c835d49b --- /dev/null +++ b/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/dmaap/NotificationProducerTest.java @@ -0,0 +1,94 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2021 China Mobile. + * ================================================================================ + * 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.dmaap; + +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import com.att.nsa.cambria.client.CambriaBatchingPublisher; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +import java.io.IOException; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.onap.dcaegen2.kpi.computation.FileUtils; +import org.onap.dcaegen2.kpi.models.Configuration; +import org.powermock.api.mockito.PowerMockito; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = NotificationProducerTest.class) +public class NotificationProducerTest { + + private static final String VES_MESSAGE_FILE = "kpi/ves_message.json"; + private static final String CBS_CONFIG_FILE = "kpi/cbs_config2.json"; + + @Mock + CambriaBatchingPublisher cambriaBatchingPublisher; + + @InjectMocks + NotificationProducer notificationProducer; + + @Test + public void notificationProducerTest() { + + try { + when(cambriaBatchingPublisher.send(Mockito.anyString(), Mockito.anyString())).thenReturn(0); + int result = notificationProducer.sendNotification("msg"); + assertEquals(0, result); + } catch (IOException e) { + e.printStackTrace(); + } + + } + + @Test + public void kpiResultWithoutConfigTest() { + + String vesMessage = FileUtils.getFileContents(VES_MESSAGE_FILE); + KpiComputationCallBack callback = new KpiComputationCallBack(); + callback.activateCallBack(vesMessage); + + } + + @Test + public void kpiResultWithConfigTest() { + + String vesMessage = FileUtils.getFileContents(VES_MESSAGE_FILE); + String strCbsConfig = FileUtils.getFileContents(CBS_CONFIG_FILE); + + JsonObject jsonObject = new JsonParser().parse(strCbsConfig).getAsJsonObject().getAsJsonObject("config"); + Configuration config = new Configuration(); + config.updateConfigurationFromJsonObject(jsonObject); + + KpiComputationCallBack callback = new KpiComputationCallBack(); + callback.kpiComputation(vesMessage, config); + + } + +} diff --git a/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/dmaap/PmNotificationCallbackTest.java b/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/dmaap/PmNotificationCallbackTest.java new file mode 100644 index 00000000..5241ecd9 --- /dev/null +++ b/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/dmaap/PmNotificationCallbackTest.java @@ -0,0 +1,53 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2021 China Mobile. + * ================================================================================ + * 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.dmaap; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.onap.dcaegen2.kpi.utils.BeanUtil; +import org.powermock.api.mockito.PowerMockito; +import org.powermock.core.classloader.annotations.PowerMockIgnore; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; +import org.powermock.modules.junit4.PowerMockRunnerDelegate; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(PowerMockRunner.class) +@PowerMockIgnore({ "com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*" }) +@PowerMockRunnerDelegate(SpringRunner.class) +@PrepareForTest({ BeanUtil.class }) +@SpringBootTest(classes = PmNotificationCallbackTest.class) +public class PmNotificationCallbackTest { + + @Mock + NewPmNotification newPmNotif; + + @Test + public void testActivateCallBack() { + PowerMockito.mockStatic(BeanUtil.class); + PowerMockito.when(BeanUtil.getBean(NewPmNotification.class)).thenReturn(newPmNotif); + NotificationCallback pmNotificationCallback = new KpiComputationCallBack(); + pmNotificationCallback.activateCallBack("pmNotification"); + } + +} diff --git a/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/models/ConfigurationTest.java b/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/models/ConfigurationTest.java new file mode 100644 index 00000000..07ef51d2 --- /dev/null +++ b/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/models/ConfigurationTest.java @@ -0,0 +1,79 @@ +/******************************************************************************* + * ============LICENSE_START======================================================= + * slice-analysis-ms + * ================================================================================ + * Copyright (C) 2020 Wipro Limited. + * ============================================================================== + * 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. + * ============LICENSE_END========================================================= + * + *******************************************************************************/ + + +package org.onap.dcaegen2.kpi.models; + +import static org.junit.Assert.assertEquals; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.junit.Test; + + +public class ConfigurationTest { + Configuration configuration = Configuration.getInstance(); + + @Test + public void configurationTest() { + + List<String> list = new ArrayList<String>(); + list.add("server"); + Map<String, Object> subscribes = new HashMap<>(); + + configuration.setStreamsSubscribes(subscribes); + configuration.setStreamsPublishes(subscribes); + configuration.setDmaapServers(list); + configuration.setCg("cg"); + configuration.setCid("cid"); + configuration.setAafPassword("password"); + configuration.setAafUsername("user"); + configuration.setPollingInterval(30); + configuration.setPollingTimeout(100); + configuration.setHost("192.168.1.1"); + configuration.setPort(21); + configuration.setPassword("password"); + configuration.setUsername("user"); + configuration.setDatabasename("database"); + configuration.setEnablessl(true); + configuration.setCbsPollingInterval(10); + configuration.setKpiConfig("kpi config"); + + assertEquals("cg", configuration.getCg()); + assertEquals("cid", configuration.getCid()); + assertEquals("user", configuration.getAafUsername()); + assertEquals("password", configuration.getAafPassword()); + assertEquals(30, configuration.getPollingInterval()); + assertEquals(100, configuration.getPollingTimeout()); + assertEquals(list, configuration.getDmaapServers()); + assertEquals("192.168.1.1", configuration.getHost()); + assertEquals(21, configuration.getPort()); + assertEquals("user", configuration.getUsername()); + assertEquals("password", configuration.getPassword()); + assertEquals("database", configuration.getDatabasename()); + assertEquals(true, configuration.isEnablessl()); + assertEquals("kpi config", configuration.getKpiConfig()); + assertEquals(10, configuration.getCbsPollingInterval()); + } +} diff --git a/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/models/ModelsTest.java b/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/models/ModelsTest.java new file mode 100644 index 00000000..ad549bec --- /dev/null +++ b/components/kpi-computation-ms/src/test/java/org/onap/dcaegen2/kpi/models/ModelsTest.java @@ -0,0 +1,212 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2021 China Mobile. + * ================================================================================ + * 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.models; + +import static org.junit.Assert.assertEquals; + +import org.junit.Assert; +import org.junit.Test; +import org.onap.dcaegen2.kpi.computation.FileUtils; +import org.onap.dcaegen2.kpi.config.BaseDynamicPropertiesProvider; +import org.onap.dcaegen2.kpi.config.Kpi; +import org.onap.dcaegen2.kpi.config.KpiConfig; +import org.onap.dcaegen2.kpi.config.MethodForKpi; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.openpojo.reflection.PojoClass; +import com.openpojo.reflection.impl.PojoClassFactory; +import com.openpojo.validation.Validator; +import com.openpojo.validation.ValidatorBuilder; +import com.openpojo.validation.rule.impl.GetterMustExistRule; +import com.openpojo.validation.rule.impl.SetterMustExistRule; +import com.openpojo.validation.test.impl.GetterTester; +import com.openpojo.validation.test.impl.SerializableTester; +import com.openpojo.validation.test.impl.SetterTester; + +public class ModelsTest { + + private static final String CBS_CONFIG_FILE = "kpi/cbs_config1.json"; + + public void validateMd(PojoClass pojoclass) { + Validator validator = ValidatorBuilder.create() + .with(new SetterMustExistRule()) + .with(new GetterMustExistRule()) + .with(new SetterTester()) + .with(new GetterTester()) + .with(new SerializableTester()) + .build(); + validator.validate(pojoclass); + } + + @Test + public void testGetterSetterPerformanceEvent() { + PojoClass pojoclass = PojoClassFactory.getPojoClass(PerformanceEvent.class); + validateMd(pojoclass); + PerformanceEvent x = new PerformanceEvent(); + PerformanceEvent y = new PerformanceEvent(); + Assert.assertTrue(x.equals(y) && y.equals(x)); + Assert.assertTrue(x.hashCode() == y.hashCode()); + } + + @Test + public void testMeasTypes() { + PojoClass pojoclass = PojoClassFactory.getPojoClass(MeasTypes.class); + validateMd(pojoclass); + MeasTypes x = new MeasTypes(); + MeasTypes y = new MeasTypes(); + Assert.assertTrue(x.equals(y) && y.equals(x)); + Assert.assertTrue(x.hashCode() == y.hashCode()); + } + + @Test + public void testMeasInfoId() { + PojoClass pojoclass = PojoClassFactory.getPojoClass(MeasInfoId.class); + validateMd(pojoclass); + MeasInfoId x = new MeasInfoId(); + MeasInfoId y = new MeasInfoId(); + Assert.assertTrue(x.equals(y) && y.equals(x)); + Assert.assertTrue(x.hashCode() == y.hashCode()); + } + + @Test + public void testVesEvent() { + PojoClass pojoclass = PojoClassFactory.getPojoClass(VesEvent.class); + validateMd(pojoclass); + VesEvent x = new VesEvent(); + VesEvent y = new VesEvent(); + Assert.assertTrue(x.equals(y) && y.equals(x)); + Assert.assertTrue(x.hashCode() == y.hashCode()); + } + + @Test + public void testMeasResult() { + PojoClass pojoclass = PojoClassFactory.getPojoClass(MeasResult.class); + validateMd(pojoclass); + MeasResult x = new MeasResult(); + MeasResult y = new MeasResult(); + Assert.assertTrue(x.equals(y) && y.equals(x)); + Assert.assertTrue(x.hashCode() == y.hashCode()); + } + + @Test + public void testPerf3gppFields() { + PojoClass pojoclass = PojoClassFactory.getPojoClass(Perf3gppFields.class); + validateMd(pojoclass); + Perf3gppFields x = new Perf3gppFields(); + Perf3gppFields y = new Perf3gppFields(); + Assert.assertTrue(x.equals(y) && y.equals(x)); + Assert.assertTrue(x.hashCode() == y.hashCode()); + } + + @Test + public void testMeasInfo() { + PojoClass pojoclass = PojoClassFactory.getPojoClass(MeasInfo.class); + validateMd(pojoclass); + MeasInfo x = new MeasInfo(); + MeasInfo y = new MeasInfo(); + Assert.assertTrue(x.equals(y) && y.equals(x)); + Assert.assertTrue(x.hashCode() == y.hashCode()); + } + + @Test + public void testMeasValues() { + PojoClass pojoclass = PojoClassFactory.getPojoClass(MeasValues.class); + validateMd(pojoclass); + MeasValues x = new MeasValues(); + MeasValues y = new MeasValues(); + Assert.assertTrue(x.equals(y) && y.equals(x)); + Assert.assertTrue(x.hashCode() == y.hashCode()); + } + + @Test + public void testMeasDataCollection() { + PojoClass pojoclass = PojoClassFactory.getPojoClass(MeasDataCollection.class); + validateMd(pojoclass); + MeasDataCollection x = new MeasDataCollection(); + MeasDataCollection y = new MeasDataCollection(); + Assert.assertTrue(x.equals(y) && y.equals(x)); + Assert.assertTrue(x.hashCode() == y.hashCode()); + } + + @Test + public void testCommonEventHeader() { + PojoClass pojoclass = PojoClassFactory.getPojoClass(CommonEventHeader.class); + validateMd(pojoclass); + CommonEventHeader x = new CommonEventHeader(); + CommonEventHeader y = new CommonEventHeader(); + Assert.assertTrue(x.equals(y) && y.equals(x)); + Assert.assertTrue(x.hashCode() == y.hashCode()); + } + + @Test + public void testGetterSetterKpiConfig() { + PojoClass pojoclass = PojoClassFactory.getPojoClass(KpiConfig.class); + validateMd(pojoclass); + KpiConfig x = new KpiConfig(); + KpiConfig y = new KpiConfig(); + Assert.assertTrue(x.equals(y) && y.equals(x)); + Assert.assertTrue(x.hashCode() == y.hashCode()); + } + + @Test + public void testGetterSetterMethodForKpi() { + PojoClass pojoclass = PojoClassFactory.getPojoClass(MethodForKpi.class); + validateMd(pojoclass); + MethodForKpi x = new MethodForKpi(); + MethodForKpi y = new MethodForKpi(); + Assert.assertTrue(x.equals(y) && y.equals(x)); + Assert.assertTrue(x.hashCode() == y.hashCode()); + } + + @Test + public void testGetterSetterKpi() { + PojoClass pojoclass = PojoClassFactory.getPojoClass(Kpi.class); + validateMd(pojoclass); + Kpi x = new Kpi(); + Kpi y = new Kpi(); + Assert.assertTrue(x.equals(y) && y.equals(x)); + Assert.assertTrue(x.hashCode() == y.hashCode()); + } + + @Test + public void testGetterSetterConfiguration() { + + String strCbsConfig = FileUtils.getFileContents(CBS_CONFIG_FILE); + JsonObject jsonObject = new JsonParser().parse(strCbsConfig).getAsJsonObject().getAsJsonObject("config"); + Configuration config = new Configuration(); + config.updateConfigurationFromJsonObject(jsonObject); + + assertEquals(config.getAafPassword(), "demo123456!"); + + } + + @Test + public void testBaseDynamicPropertiesProvider() { + PojoClass pojoclass = PojoClassFactory.getPojoClass(BaseDynamicPropertiesProvider.class); + validateMd(pojoclass); + BaseDynamicPropertiesProvider x = new BaseDynamicPropertiesProvider(); + BaseDynamicPropertiesProvider y = new BaseDynamicPropertiesProvider(); + Assert.assertTrue(x.equals(y) && y.equals(x)); + Assert.assertTrue(x.hashCode() == y.hashCode()); + } + +} diff --git a/components/kpi-computation-ms/src/test/resources/config_all.json b/components/kpi-computation-ms/src/test/resources/config_all.json new file mode 100644 index 00000000..eb84e0d8 --- /dev/null +++ b/components/kpi-computation-ms/src/test/resources/config_all.json @@ -0,0 +1,89 @@ +{ + "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\":\"SUM\",\"operands\":\"GTP.InDataOctN3UPF\"},{\"measType\":\"DownstreamThr\",\"operation\":\"SUM\",\"operands\":\"GTP.OutDataOctN3UPF\"}]}]}", + "dmaap.server": ["message-router"] + }, + "policies": { + "items": [{ + "policyName": "onap.vfirewall.tca.1-0-0.xml", + "name": "onap.vfirewall.tca", + "config": { + "tca.policy": { + "domain": "measurementsForVfScaling", + "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": "SUM", + "operands": "GTP.InDataOctN3UPF" + + }, + { + "measType": "DownstreamThr", + "operation": "SUM", + "operands": "GTP.OutDataOctN3UPF" + } + ] + } + ] + } + }, + "type_version": "1.0.0", + "version": "1.0.0", + "policyVersion": "1.0.0", + "type": "onap.policies.monitoring.cdap.tca.hi.lo.app", + "metadata": { + "policy-id": "onap.vfirewall.tca", + "policy-version": "1.0.0" + } + }] +} +}
\ No newline at end of file diff --git a/components/kpi-computation-ms/src/test/resources/kpi/cbs_config1.json b/components/kpi-computation-ms/src/test/resources/kpi/cbs_config1.json new file mode 100644 index 00000000..bb763db1 --- /dev/null +++ b/components/kpi-computation-ms/src/test/resources/kpi/cbs_config1.json @@ -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\":\"SUM\",\"operands\":\"GTP.InDataOctN3UPF\"},{\"measType\":\"DownstreamThr\",\"operation\":\"SUM\",\"operands\":\"GTP.OutDataOctN3UPF\"}]}]}", + "dmaap.server": ["message-router"] + } +}
\ No newline at end of file diff --git a/components/kpi-computation-ms/src/test/resources/kpi/cbs_config2.json b/components/kpi-computation-ms/src/test/resources/kpi/cbs_config2.json new file mode 100644 index 00000000..bb763db1 --- /dev/null +++ b/components/kpi-computation-ms/src/test/resources/kpi/cbs_config2.json @@ -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\":\"SUM\",\"operands\":\"GTP.InDataOctN3UPF\"},{\"measType\":\"DownstreamThr\",\"operation\":\"SUM\",\"operands\":\"GTP.OutDataOctN3UPF\"}]}]}", + "dmaap.server": ["message-router"] + } +}
\ No newline at end of file diff --git a/components/kpi-computation-ms/src/test/resources/kpi/kpi_config.json b/components/kpi-computation-ms/src/test/resources/kpi/kpi_config.json new file mode 100644 index 00000000..64e426cf --- /dev/null +++ b/components/kpi-computation-ms/src/test/resources/kpi/kpi_config.json @@ -0,0 +1,35 @@ +{ + "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": "SUM", + "operands": "GTP.InDataOctN3UPF" + + }, + { + "measType": "DownstreamThr", + "operation": "SUM", + "operands": "GTP.OutDataOctN3UPF" + } + ] + } + ] +}
\ No newline at end of file diff --git a/components/kpi-computation-ms/src/test/resources/kpi/ves_message.json b/components/kpi-computation-ms/src/test/resources/kpi/ves_message.json new file mode 100644 index 00000000..e16625d9 --- /dev/null +++ b/components/kpi-computation-ms/src/test/resources/kpi/ves_message.json @@ -0,0 +1,83 @@ +{ + "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":[ + "GTP.InDataOctN3UPF.08_010101", + "GTP.OutDataOctN3UPF.08_010101" + ] + }, + "measValuesList":[ + { + "measObjInstId":"some measObjLdn", + "suspectFlag":"false", + "measResults":[ + { + "p":1, + "sValue":"10" + }, + { + "p":2, + "sValue":"20" + } + ] + } + ] + }, + { + "measInfoId":{ + "sMeasInfoId":"UPFFunction1" + }, + "measTypes":{ + "sMeasTypesList":[ + "GTP.InDataOctN3UPF.08_010101", + "GTP.OutDataOctN3UPF.08_010101" + ] + }, + "measValuesList":[ + { + "measObjInstId":"some measObjLdn", + "suspectFlag":"false", + "measResults":[ + { + "p":1, + "sValue":"30" + }, + { + "p":2, + "sValue":"40" + } + ] + } + ] + } + ] + } + } + } +}
\ No newline at end of file |