1 /*******************************************************************************
2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2022 Wipro Limited.
6 * ==============================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
20 *******************************************************************************/
22 package org.onap.slice.analysis.ms.service;
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertSame;
26 import static org.junit.Assert.assertTrue;
28 import com.fasterxml.jackson.databind.ObjectMapper;
31 import java.nio.file.Files;
32 import java.nio.file.Paths;
33 import java.util.ArrayList;
34 import java.util.List;
36 import org.json.JSONObject;
37 import org.junit.Before;
38 import org.junit.Rule;
39 import org.junit.Test;
40 import org.junit.rules.ExpectedException;
41 import org.junit.runner.RunWith;
42 import org.mockito.InjectMocks;
43 import org.mockito.Mock;
44 import org.mockito.Mockito;
45 import org.mockito.MockitoAnnotations;
46 import org.onap.slice.analysis.ms.aai.AaiService;
47 import org.onap.slice.analysis.ms.models.AggregatedConfig;
48 import org.onap.slice.analysis.ms.models.Configuration;
49 import org.onap.slice.analysis.ms.models.SliceConfigRequest;
50 import org.onap.slice.analysis.ms.models.SliceConfigResponse;
51 import org.onap.slice.analysis.ms.restclients.DesRestClient;
52 import org.powermock.api.mockito.PowerMockito;
53 import org.powermock.core.classloader.annotations.PowerMockIgnore;
54 import org.powermock.core.classloader.annotations.PrepareForTest;
55 import org.powermock.modules.junit4.PowerMockRunner;
56 import org.powermock.modules.junit4.PowerMockRunnerDelegate;
57 import org.slf4j.Logger;
58 import org.slf4j.LoggerFactory;
59 import org.springframework.boot.test.context.SpringBootTest;
60 import org.springframework.http.HttpStatus;
61 import org.springframework.http.ResponseEntity;
62 import org.springframework.test.context.junit4.SpringRunner;
64 @RunWith(PowerMockRunner.class)
65 @PowerMockRunnerDelegate(SpringRunner.class)
66 @PrepareForTest({SliceUtilization.class, Configuration.class})
67 @PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*"})
68 @SpringBootTest(classes = SliceUtilizationTest.class)
69 public class SliceUtilizationTest {
71 ObjectMapper objectMapper = new ObjectMapper();
73 Configuration configuration = Configuration.getInstance();
76 SliceUtilization sliceUtilization;
79 AaiService aaiService;
82 DesRestClient desRestClient;
85 public ExpectedException exception = ExpectedException.none();
89 MockitoAnnotations.initMocks(this);
93 public void getPmDataTest() throws Exception {
94 configuration.setDesUrl("http://des:1681/datalake/v1/exposure/pm_data");
95 configuration.setPmDataDurationInWeeks(4);
96 PowerMockito.mockStatic(SliceUtilization.class);
97 PowerMockito.mockStatic(Configuration.class);
98 PowerMockito.when(Configuration.getInstance()).thenReturn(configuration);
101 pmData = new String(Files.readAllBytes(Paths.get("src/test/resources/pm_data.json")));
102 } catch (Exception e) {
106 Mockito.when(desRestClient.sendPostRequest(Mockito.any(), Mockito.any(), Mockito.any()))
107 .thenReturn(new ResponseEntity<>(pmData, HttpStatus.OK));
108 JSONObject actualResponse = sliceUtilization.getPMData("001-1100");
109 assertTrue(actualResponse.has("result"));
114 public void calculateSliceUtilizationTest() throws Exception {
116 PowerMockito.mockStatic(SliceUtilization.class);
117 List<JSONObject> pmDataList = new ArrayList<>();
120 pmData = new String(Files.readAllBytes(Paths.get("src/test/resources/pm_data.json")));
121 JSONObject pmDataObj = new JSONObject(pmData);
122 pmDataList.add(pmDataObj);
123 pmDataList.add(pmDataObj);
124 pmDataList.add(pmDataObj);
125 } catch (Exception e) {
129 AggregatedConfig actualResponse = sliceUtilization.calculateSliceUtilization(pmDataList);
130 assertEquals(190857028, (int) actualResponse.getDLThptPerSlice());
131 assertEquals(119285978, (int) actualResponse.getULThptPerSlice());
135 public void getSliceUtilizationDataTest() throws Exception {
137 PowerMockito.mockStatic(SliceUtilization.class);
138 SliceConfigRequest sliceConfigRequest = new SliceConfigRequest();
139 List<String> sliceIdentifiersList = new ArrayList<>();
140 sliceIdentifiersList.add("14559ead-f4fe-4c1c-a94c-8015fad3ea35");
141 sliceIdentifiersList.add("14559ead-f4fe-4c1c-a94c-8015fad3ea36");
142 sliceConfigRequest.setSliceIdentifiers(sliceIdentifiersList);
143 List<String> configParamsList = new ArrayList<>();
144 configParamsList.add("dLThptPerSlice");
145 configParamsList.add("uLThptPerSlice");
146 sliceConfigRequest.setConfigParams(configParamsList);
147 List<String> snssaiList = new ArrayList<>();
148 snssaiList.add("01-06E442");
149 snssaiList.add("01-B989BD");
150 configuration.setDesUrl("http://des:1681/datalake/v1/exposure/pm_data");
151 configuration.setPmDataDurationInWeeks(4);
153 PowerMockito.mockStatic(SliceUtilization.class);
154 PowerMockito.mockStatic(Configuration.class);
155 PowerMockito.when(Configuration.getInstance()).thenReturn(configuration);
159 Mockito.when(aaiService.getSnssaiList(Mockito.any())).thenReturn(snssaiList);
161 String pmData = new String(Files.readAllBytes(Paths.get("src/test/resources/pm_data.json")));
162 Mockito.when(desRestClient.sendPostRequest(Mockito.any(), Mockito.any(), Mockito.any()))
163 .thenReturn(new ResponseEntity<>(pmData, HttpStatus.OK));
164 } catch (Exception e) {
168 SliceConfigResponse actualResponse = sliceUtilization.getSliceUtilizationData(sliceConfigRequest);
169 String actualResponseString = objectMapper.writeValueAsString(actualResponse);
170 SliceConfigResponse sliceConfigResponse = objectMapper
171 .readValue(new File("src/test/resources/sliceConfigResponse.json"), SliceConfigResponse.class);
172 assertEquals(objectMapper.writeValueAsString(sliceConfigResponse), actualResponseString);