90202366179e8b7dcb3a7301ad162d230ab3b256
[dcaegen2/services.git] /
1 /*******************************************************************************
2  *  ============LICENSE_START=======================================================
3  *  slice-analysis-ms
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
10  *
11  *          http://www.apache.org/licenses/LICENSE-2.0
12  *
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=========================================================
19  *
20  *******************************************************************************/
21
22 package org.onap.slice.analysis.ms.service;
23
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertSame;
26 import static org.junit.Assert.assertTrue;
27
28 import com.fasterxml.jackson.databind.ObjectMapper;
29
30 import java.io.File;
31 import java.nio.file.Files;
32 import java.nio.file.Paths;
33 import java.util.ArrayList;
34 import java.util.List;
35
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;
63
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 {
70
71     ObjectMapper objectMapper = new ObjectMapper();
72
73     Configuration configuration = Configuration.getInstance();
74
75     @InjectMocks
76     SliceUtilization sliceUtilization;
77
78     @Mock
79     AaiService aaiService;
80
81     @Mock
82     DesRestClient desRestClient;
83
84     @Rule
85     public ExpectedException exception = ExpectedException.none();
86
87     @Before
88     public void setup() {
89         MockitoAnnotations.initMocks(this);
90     }
91
92     @Test
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);
99         String pmData = null;
100         try {
101             pmData = new String(Files.readAllBytes(Paths.get("src/test/resources/pm_data.json")));
102         } catch (Exception e) {
103             e.printStackTrace();
104
105         }
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"));
110
111     }
112
113     @Test
114     public void calculateSliceUtilizationTest() throws Exception {
115
116         PowerMockito.mockStatic(SliceUtilization.class);
117         List<JSONObject> pmDataList = new ArrayList<>();
118         String pmData;
119         try {
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) {
126             e.printStackTrace();
127
128         }
129         AggregatedConfig actualResponse = sliceUtilization.calculateSliceUtilization(pmDataList);
130         assertEquals(190857028, (int) actualResponse.getDLThptPerSlice());
131         assertEquals(119285978, (int) actualResponse.getULThptPerSlice());
132     }
133
134     @Test
135     public void getSliceUtilizationDataTest() throws Exception {
136
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);
152
153         PowerMockito.mockStatic(SliceUtilization.class);
154         PowerMockito.mockStatic(Configuration.class);
155         PowerMockito.when(Configuration.getInstance()).thenReturn(configuration);
156
157         try {
158
159             Mockito.when(aaiService.getSnssaiList(Mockito.any())).thenReturn(snssaiList);
160
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) {
165             e.printStackTrace();
166
167         }
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);
173     }
174 }