2 * ============LICENSE_START========================================================================
\r
3 * ONAP : tr-069-adapter
\r
4 * =================================================================================================
\r
5 * Copyright (C) 2020 CommScope Inc Intellectual Property.
\r
6 * =================================================================================================
\r
7 * This tr-069-adapter software file is distributed by CommScope Inc under the Apache License,
\r
8 * Version 2.0 (the "License"); you may not use this file except in compliance with the License. You
\r
9 * may obtain a copy of the License at
\r
11 * http://www.apache.org/licenses/LICENSE-2.0
\r
13 * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
\r
14 * either express or implied. See the License for the specific language governing permissions and
\r
15 * limitations under the License.
\r
16 * ===============LICENSE_END=======================================================================
\r
19 package org.commscope.tr069adapter.vesagent.test;
\r
21 import com.fasterxml.jackson.core.JsonProcessingException;
\r
23 import java.util.ArrayList;
\r
25 import org.commscope.tr069adapter.acs.common.DeviceDetails;
\r
26 import org.commscope.tr069adapter.acs.common.DeviceInform;
\r
27 import org.commscope.tr069adapter.acs.common.InformType;
\r
28 import org.commscope.tr069adapter.acs.common.ParameterDTO;
\r
29 import org.commscope.tr069adapter.acs.common.dto.TR069InformType;
\r
30 import org.commscope.tr069adapter.acs.common.inform.BootstrapInform;
\r
31 import org.commscope.tr069adapter.acs.common.inform.PeriodicInform;
\r
32 import org.commscope.tr069adapter.acs.common.inform.ValueChangeInform;
\r
33 import org.commscope.tr069adapter.mapper.model.NetConfServerDetails;
\r
34 import org.commscope.tr069adapter.mapper.model.VESNotification;
\r
35 import org.commscope.tr069adapter.mapper.model.VESNotificationResponse;
\r
36 import org.commscope.tr069adapter.vesagent.boot.VESAgentServiceBooter;
\r
37 import org.commscope.tr069adapter.vesagent.controller.VESAgentService;
\r
38 import org.commscope.tr069adapter.vesagent.exception.InvalidFaultOperationException;
\r
39 import org.commscope.tr069adapter.vesagent.http.HttpRequestSender;
\r
40 import org.junit.Assert;
\r
41 import org.junit.Test;
\r
42 import org.junit.runner.RunWith;
\r
43 import org.mockito.Mockito;
\r
44 import org.springframework.beans.factory.annotation.Autowired;
\r
45 import org.springframework.boot.test.context.SpringBootTest;
\r
46 import org.springframework.boot.test.mock.mockito.MockBean;
\r
47 import org.springframework.http.HttpStatus;
\r
48 import org.springframework.test.context.junit4.SpringRunner;
\r
50 @SpringBootTest(classes = {VESAgentServiceBooter.class})
\r
51 @RunWith(SpringRunner.class)
\r
52 // @WebMvcTest(VESAgentService.class)
\r
53 public class VESAgentServiceRestTest {
\r
56 VESAgentService agent;
\r
59 HttpRequestSender sender;
\r
62 public void processPnfEventTest() throws JsonProcessingException, InvalidFaultOperationException {
\r
63 VESNotificationResponse res =
\r
64 new VESNotificationResponse(HttpStatus.ACCEPTED.value(), "Sucess");
\r
65 Mockito.when(sender.postRequest(Mockito.anyString(), Mockito.anyString())).thenReturn(res);
\r
66 VESNotification ves = new VESNotification();
\r
67 ves.seteNodeBName("0005B9A1");
\r
68 ves.setNetconfDetails(getNetConfDetails());
\r
69 DeviceInform inform = new BootstrapInform();
\r
70 inform.setDeviceDetails(getDeviceDetails());
\r
71 ArrayList<InformType> list = new ArrayList<>();
\r
72 list.add(TR069InformType.BOOTSTRAP);
\r
73 inform.setInformTypeList(list);
\r
74 inform.setParameters(getGeneralParams());
\r
75 ves.setDevnotification(inform);
\r
77 VESNotificationResponse vesResponse = agent.processDeviceNotificationAsVESEvent(ves);
\r
78 Assert.assertNotNull(vesResponse);
\r
79 Assert.assertEquals(HttpStatus.ACCEPTED.value(), vesResponse.getStatusCode());
\r
84 public void processPnfEventWhenEnbNullTest() {
\r
86 VESNotificationResponse res =
\r
87 new VESNotificationResponse(HttpStatus.ACCEPTED.value(), "Sucess");
\r
88 Mockito.when(sender.postRequest(Mockito.anyString(), Mockito.anyString())).thenReturn(res);
\r
89 VESNotification ves = new VESNotification();
\r
90 ves.seteNodeBName(null);
\r
91 ves.setNetconfDetails(getNetConfDetails());
\r
92 DeviceInform inform = new BootstrapInform();
\r
93 inform.setDeviceDetails(getDeviceDetails());
\r
94 ArrayList<InformType> list = new ArrayList<>();
\r
95 list.add(TR069InformType.BOOTSTRAP);
\r
96 inform.setInformTypeList(list);
\r
97 inform.setParameters(getGeneralParams());
\r
98 ves.setDevnotification(inform);
\r
100 VESNotificationResponse vesResponse = agent.processDeviceNotificationAsVESEvent(ves);
\r
101 Assert.assertNotNull(vesResponse);
\r
102 Assert.assertEquals(HttpStatus.ACCEPTED.value(), vesResponse.getStatusCode());
\r
103 res.getStatusCode();
\r
104 } catch (Exception e) {
\r
105 e.printStackTrace();
\r
110 public void processFaultEventCriticalTest() {
\r
112 VESNotificationResponse res =
\r
113 new VESNotificationResponse(HttpStatus.ACCEPTED.value(), "Sucess");
\r
114 Mockito.when(sender.postRequest(Mockito.anyString(), Mockito.anyString())).thenReturn(res);
\r
115 VESNotification ves = new VESNotification();
\r
116 ves.seteNodeBName("0005B9A1");
\r
117 ves.setNetconfDetails(getNetConfDetails());
\r
118 DeviceInform inform = new ValueChangeInform();
\r
119 inform.setDeviceDetails(getDeviceDetails());
\r
120 ArrayList<InformType> list = new ArrayList<>();
\r
121 list.add(TR069InformType.VALUECHANGE);
\r
122 inform.setInformTypeList(list);
\r
123 inform.setParameters(getFaultCritcalParams());
\r
124 ves.setDevnotification(inform);
\r
126 VESNotificationResponse vesResponse = agent.processDeviceNotificationAsVESEvent(ves);
\r
127 Assert.assertNotNull(vesResponse);
\r
128 Assert.assertEquals(HttpStatus.ACCEPTED.value(), vesResponse.getStatusCode());
\r
129 } catch (Exception e) {
\r
130 e.printStackTrace();
\r
135 public void processFaultEventWhenEnbNullTest() {
\r
137 VESNotificationResponse res =
\r
138 new VESNotificationResponse(HttpStatus.ACCEPTED.value(), "Sucess");
\r
139 Mockito.when(sender.postRequest(Mockito.anyString(), Mockito.anyString())).thenReturn(res);
\r
140 VESNotification ves = new VESNotification();
\r
141 ves.seteNodeBName(null);
\r
142 ves.setNetconfDetails(getNetConfDetails());
\r
143 DeviceInform inform = new ValueChangeInform();
\r
144 inform.setDeviceDetails(getDeviceDetails());
\r
145 ArrayList<InformType> list = new ArrayList<>();
\r
146 list.add(TR069InformType.VALUECHANGE);
\r
147 inform.setInformTypeList(list);
\r
148 inform.setParameters(getFaultCritcalParams());
\r
149 ves.setDevnotification(inform);
\r
151 VESNotificationResponse vesResponse = agent.processDeviceNotificationAsVESEvent(ves);
\r
153 Assert.assertNotNull(vesResponse);
\r
154 Assert.assertEquals(HttpStatus.ACCEPTED.value(), vesResponse.getStatusCode());
\r
155 } catch (Exception e) {
\r
156 e.printStackTrace();
\r
161 public void processFaultEventClearTest() {
\r
163 VESNotificationResponse res =
\r
164 new VESNotificationResponse(HttpStatus.ACCEPTED.value(), "Sucess");
\r
165 Mockito.when(sender.postRequest(Mockito.anyString(), Mockito.anyString())).thenReturn(res);
\r
166 VESNotification ves = new VESNotification();
\r
167 ves.seteNodeBName("0005B9A1");
\r
168 ves.setNetconfDetails(getNetConfDetails());
\r
169 DeviceInform inform = new ValueChangeInform();
\r
170 inform.setDeviceDetails(getDeviceDetails());
\r
171 ArrayList<InformType> list = new ArrayList<>();
\r
172 list.add(TR069InformType.VALUECHANGE);
\r
173 inform.setInformTypeList(list);
\r
174 inform.setParameters(getFaultClearParams());
\r
175 ves.setDevnotification(inform);
\r
177 VESNotificationResponse vesResponse = agent.processDeviceNotificationAsVESEvent(ves);
\r
178 Assert.assertNotNull(vesResponse);
\r
179 Assert.assertEquals(HttpStatus.ACCEPTED.value(), vesResponse.getStatusCode());
\r
180 res.getStatusCode();
\r
181 } catch (Exception e) {
\r
182 e.printStackTrace();
\r
187 public void processFaultEventTimeZoneTest() {
\r
189 VESNotificationResponse res =
\r
190 new VESNotificationResponse(HttpStatus.ACCEPTED.value(), "Sucess");
\r
191 Mockito.when(sender.postRequest(Mockito.anyString(), Mockito.anyString())).thenReturn(res);
\r
192 VESNotification ves = new VESNotification();
\r
193 ves.seteNodeBName("0005B9A1");
\r
194 ves.setNetconfDetails(getNetConfDetails());
\r
195 DeviceInform inform = new ValueChangeInform();
\r
196 inform.setDeviceDetails(getDeviceDetails());
\r
197 ArrayList<InformType> list = new ArrayList<>();
\r
198 list.add(TR069InformType.VALUECHANGE);
\r
199 inform.setInformTypeList(list);
\r
200 inform.setParameters(getFaultClearParams());
\r
201 ves.setDevnotification(inform);
\r
203 VESNotificationResponse vesResponse = agent.processDeviceNotificationAsVESEvent(ves);
\r
204 Assert.assertNotNull(vesResponse);
\r
205 Assert.assertEquals(HttpStatus.ACCEPTED.value(), vesResponse.getStatusCode());
\r
206 res.getStatusCode();
\r
207 } catch (Exception e) {
\r
208 e.printStackTrace();
\r
213 public void processHBEventTest() {
\r
215 VESNotificationResponse res =
\r
216 new VESNotificationResponse(HttpStatus.ACCEPTED.value(), "Sucess");
\r
217 Mockito.when(sender.postRequest(Mockito.anyString(), Mockito.anyString())).thenReturn(res);
\r
218 VESNotification ves = new VESNotification();
\r
219 ves.seteNodeBName("0005B9A1");
\r
220 ves.setNetconfDetails(getNetConfDetails());
\r
221 DeviceInform inform = new PeriodicInform();
\r
222 inform.setDeviceDetails(getDeviceDetails());
\r
223 ArrayList<InformType> list = new ArrayList<>();
\r
224 list.add(TR069InformType.PERIODIC);
\r
225 inform.setInformTypeList(list);
\r
226 inform.setParameters(getGeneralParams());
\r
227 ves.setDevnotification(inform);
\r
229 VESNotificationResponse vesResponse = agent.processDeviceNotificationAsVESEvent(ves);
\r
230 Assert.assertNotNull(vesResponse);
\r
231 Assert.assertEquals(HttpStatus.ACCEPTED.value(), vesResponse.getStatusCode());
\r
232 res.getStatusCode();
\r
233 } catch (Exception e) {
\r
234 e.printStackTrace();
\r
239 public void processHBEventWhenEnbNullTest() {
\r
241 VESNotificationResponse res =
\r
242 new VESNotificationResponse(HttpStatus.ACCEPTED.value(), "Sucess");
\r
243 Mockito.when(sender.postRequest(Mockito.anyString(), Mockito.anyString())).thenReturn(res);
\r
244 VESNotification ves = new VESNotification();
\r
245 ves.seteNodeBName(null);
\r
246 ves.setNetconfDetails(getNetConfDetails());
\r
247 DeviceInform inform = new PeriodicInform();
\r
248 inform.setDeviceDetails(getDeviceDetails());
\r
249 ArrayList<InformType> list = new ArrayList<>();
\r
250 list.add(TR069InformType.PERIODIC);
\r
251 inform.setInformTypeList(list);
\r
252 inform.setParameters(getGeneralParams());
\r
253 ves.setDevnotification(inform);
\r
255 VESNotificationResponse vesResponse = agent.processDeviceNotificationAsVESEvent(ves);
\r
256 Assert.assertNotNull(vesResponse);
\r
257 Assert.assertEquals(HttpStatus.ACCEPTED.value(), vesResponse.getStatusCode());
\r
258 res.getStatusCode();
\r
259 } catch (Exception e) {
\r
260 e.printStackTrace();
\r
265 public void processOnRestartEventTest() {
\r
267 VESNotificationResponse res =
\r
268 new VESNotificationResponse(HttpStatus.ACCEPTED.value(), "Sucess");
\r
269 Mockito.when(sender.postRequest(Mockito.anyString(), Mockito.anyString())).thenReturn(res);
\r
270 VESNotification ves = new VESNotification();
\r
271 ves.seteNodeBName("0005B9A1");
\r
272 ves.setNetconfDetails(getNetConfDetails());
\r
273 VESNotificationResponse vesResponse = agent.processDeviceNotificationAsVESEvent(ves);
\r
274 Assert.assertNotNull(vesResponse);
\r
275 Assert.assertEquals(HttpStatus.ACCEPTED.value(), vesResponse.getStatusCode());
\r
276 } catch (Exception e) {
\r
277 e.printStackTrace();
\r
282 public void processOnRestartEventWhenEnbNullTest() {
\r
284 VESNotificationResponse res =
\r
285 new VESNotificationResponse(HttpStatus.ACCEPTED.value(), "Sucess");
\r
286 Mockito.when(sender.postRequest(Mockito.anyString(), Mockito.anyString())).thenReturn(res);
\r
287 VESNotification ves = new VESNotification();
\r
288 ves.seteNodeBName("0005B9A1");
\r
289 ves.setNetconfDetails(getNetConfDetails());
\r
290 ves.getNetconfDetails().setEnodeBName(null);
\r
291 VESNotificationResponse vesResponse = agent.processDeviceNotificationAsVESEvent(ves);
\r
292 Assert.assertNotNull(vesResponse);
\r
293 Assert.assertEquals(HttpStatus.ACCEPTED.value(), vesResponse.getStatusCode());
\r
294 } catch (Exception e) {
\r
295 e.printStackTrace();
\r
300 private ArrayList<ParameterDTO> getFaultClearParams() {
\r
301 ArrayList<ParameterDTO> params = new ArrayList<>();
\r
302 params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.EventTime", ""));
\r
304 .add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.AlarmIdentifier", "0005B9B5-100"));
\r
305 params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.NotificationType", "NewAlarm"));
\r
306 params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.ManagedObjectInstance",
\r
307 "Device.Services.FAPService.{i}.FAPControl.LTE"));
\r
308 params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.EventType", "S1 Connection"));
\r
309 params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.ProbableCause",
\r
310 "S1 connection failure"));
\r
312 new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.SpecificProblem", "Unsupported PLMN"));
\r
313 params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.PerceivedSeverity", "CLEAR"));
\r
314 params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.AdditionalText",
\r
315 "S1 connection setup FAILED Addional Text"));
\r
316 params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.AdditionalInformation",
\r
317 "S1 connection setup FAILED Aditional Inf"));
\r
321 private ArrayList<ParameterDTO> getFaultCritcalParams() {
\r
322 ArrayList<ParameterDTO> params = new ArrayList<>();
\r
323 params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.EventTime", ""));
\r
325 .add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.AlarmIdentifier", "0005B9B5-100"));
\r
326 params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.NotificationType", "NewAlarm"));
\r
327 params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.ManagedObjectInstance",
\r
328 "Device.Services.FAPService.{i}.FAPControl.LTE"));
\r
329 params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.EventType", "S1 Connection"));
\r
330 params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.ProbableCause",
\r
331 "S1 connection failure"));
\r
333 new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.SpecificProblem", "Unsupported PLMN"));
\r
334 params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.PerceivedSeverity", "CRITICAL"));
\r
335 params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.AdditionalText",
\r
336 "S1 connection setup FAILED Addional Text"));
\r
337 params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.AdditionalInformation",
\r
338 "S1 connection setup FAILED Aditional Inf | TZD=UTC+00.00"));
\r
344 private ArrayList<ParameterDTO> getGeneralParams() {
\r
345 ArrayList<ParameterDTO> params = new ArrayList<>();
\r
346 params.add(new ParameterDTO("Device.DeviceInfo.ManufacturerOUI", "0005B9"));
\r
347 params.add(new ParameterDTO("Device.DeviceInfo.ProductClass", "LTE_Enterprise_C-RANSC_Cntrl"));
\r
348 params.add(new ParameterDTO("Device.DeviceInfo.HardwareVersion", "750742.00.04"));
\r
349 params.add(new ParameterDTO("Device.DeviceInfo.SoftwareVersion", "4.3.00.231"));
\r
350 params.add(new ParameterDTO("Device.DeviceInfo.Manufacturer", "ORAN"));
\r
351 params.add(new ParameterDTO("Device.DeviceInfo.SerialNumber", "00005B9A1"));
\r
352 params.add(new ParameterDTO("Device.IP.Interface.1.IPv4Address.1.IPAddress", "10.211.5.55"));
\r
356 private NetConfServerDetails getNetConfDetails() {
\r
357 NetConfServerDetails nf = new NetConfServerDetails();
\r
358 nf.setDeviceId("00005B9A1");
\r
359 nf.setEnodeBName("0005B9A1");
\r
360 nf.setListenAddress("10.211.5.27");
\r
361 nf.setListenPort("17830");
\r
365 private DeviceDetails getDeviceDetails() {
\r
366 DeviceDetails nf = new DeviceDetails();
\r
367 nf.setDeviceId("00005B9A1");
\r
368 nf.setDeviceTypeId(50);
\r
369 nf.setOui("0005B9");
\r
370 nf.setProductClass("LTE_Enterprise_C-RANSC_Cntrl");
\r