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.ValueChangeInform;
\r
32 import org.commscope.tr069adapter.mapper.model.NetConfServerDetails;
\r
33 import org.commscope.tr069adapter.mapper.model.VESNotification;
\r
34 import org.commscope.tr069adapter.mapper.model.VESNotificationResponse;
\r
35 import org.commscope.tr069adapter.vesagent.boot.VESAgentServiceBooter;
\r
36 import org.commscope.tr069adapter.vesagent.controller.VESAgentService;
\r
37 import org.commscope.tr069adapter.vesagent.exception.InvalidFaultOperationException;
\r
38 import org.commscope.tr069adapter.vesagent.http.HttpRequestSender;
\r
39 import org.junit.Assert;
\r
40 import org.junit.Test;
\r
41 import org.junit.runner.RunWith;
\r
42 import org.mockito.Mockito;
\r
43 import org.springframework.beans.factory.annotation.Autowired;
\r
44 import org.springframework.boot.test.context.SpringBootTest;
\r
45 import org.springframework.boot.test.mock.mockito.MockBean;
\r
46 import org.springframework.http.HttpStatus;
\r
47 import org.springframework.test.context.junit4.SpringRunner;
\r
49 @SpringBootTest(classes = {VESAgentServiceBooter.class})
\r
50 @RunWith(SpringRunner.class)
\r
51 // @WebMvcTest(VESAgentService.class)
\r
52 public class VESAgentServiceRestTest {
\r
55 VESAgentService agent;
\r
58 HttpRequestSender sender;
\r
61 public void processPnfEventTest() throws JsonProcessingException, InvalidFaultOperationException {
\r
62 VESNotificationResponse res =
\r
63 new VESNotificationResponse(HttpStatus.ACCEPTED.value(), "Sucess");
\r
64 Mockito.when(sender.postRequest(Mockito.anyString(), Mockito.anyString())).thenReturn(res);
\r
65 VESNotification ves = new VESNotification();
\r
66 ves.seteNodeBName("0005B9A1");
\r
67 ves.setNetconfDetails(getNetConfDetails());
\r
68 DeviceInform inform = new BootstrapInform();
\r
69 inform.setDeviceDetails(getDeviceDetails());
\r
70 ArrayList<InformType> list = new ArrayList<>();
\r
71 list.add(TR069InformType.BOOTSTRAP);
\r
72 inform.setInformTypeList(list);
\r
73 inform.setParameters(getGeneralParams());
\r
74 ves.setDevnotification(inform);
\r
76 VESNotificationResponse vesResponse = agent.processDeviceNotificationAsVESEvent(ves);
\r
77 Assert.assertNotNull(vesResponse);
\r
78 Assert.assertEquals(HttpStatus.ACCEPTED.value(), vesResponse.getStatusCode());
\r
83 public void processPnfEventWhenEnbNullTest() {
\r
85 VESNotificationResponse res =
\r
86 new VESNotificationResponse(HttpStatus.ACCEPTED.value(), "Sucess");
\r
87 Mockito.when(sender.postRequest(Mockito.anyString(), Mockito.anyString())).thenReturn(res);
\r
88 VESNotification ves = new VESNotification();
\r
89 ves.seteNodeBName(null);
\r
90 ves.setNetconfDetails(getNetConfDetails());
\r
91 DeviceInform inform = new BootstrapInform();
\r
92 inform.setDeviceDetails(getDeviceDetails());
\r
93 ArrayList<InformType> list = new ArrayList<>();
\r
94 list.add(TR069InformType.BOOTSTRAP);
\r
95 inform.setInformTypeList(list);
\r
96 inform.setParameters(getGeneralParams());
\r
97 ves.setDevnotification(inform);
\r
99 VESNotificationResponse vesResponse = agent.processDeviceNotificationAsVESEvent(ves);
\r
100 Assert.assertNotNull(vesResponse);
\r
101 Assert.assertEquals(HttpStatus.ACCEPTED.value(), vesResponse.getStatusCode());
\r
102 res.getStatusCode();
\r
103 } catch (Exception e) {
\r
104 e.printStackTrace();
\r
109 public void processFaultEventCriticalTest() {
\r
111 VESNotificationResponse res =
\r
112 new VESNotificationResponse(HttpStatus.ACCEPTED.value(), "Sucess");
\r
113 Mockito.when(sender.postRequest(Mockito.anyString(), Mockito.anyString())).thenReturn(res);
\r
114 VESNotification ves = new VESNotification();
\r
115 ves.seteNodeBName("0005B9A1");
\r
116 ves.setNetconfDetails(getNetConfDetails());
\r
117 DeviceInform inform = new ValueChangeInform();
\r
118 inform.setDeviceDetails(getDeviceDetails());
\r
119 ArrayList<InformType> list = new ArrayList<>();
\r
120 list.add(TR069InformType.VALUECHANGE);
\r
121 inform.setInformTypeList(list);
\r
122 inform.setParameters(getFaultCritcalParams());
\r
123 ves.setDevnotification(inform);
\r
125 VESNotificationResponse vesResponse = agent.processDeviceNotificationAsVESEvent(ves);
\r
126 Assert.assertNotNull(vesResponse);
\r
127 Assert.assertEquals(HttpStatus.ACCEPTED.value(), vesResponse.getStatusCode());
\r
128 } catch (Exception e) {
\r
129 e.printStackTrace();
\r
134 public void processFaultEventWhenEnbNullTest() {
\r
136 VESNotificationResponse res =
\r
137 new VESNotificationResponse(HttpStatus.ACCEPTED.value(), "Sucess");
\r
138 Mockito.when(sender.postRequest(Mockito.anyString(), Mockito.anyString())).thenReturn(res);
\r
139 VESNotification ves = new VESNotification();
\r
140 ves.seteNodeBName(null);
\r
141 ves.setNetconfDetails(getNetConfDetails());
\r
142 DeviceInform inform = new ValueChangeInform();
\r
143 inform.setDeviceDetails(getDeviceDetails());
\r
144 ArrayList<InformType> list = new ArrayList<>();
\r
145 list.add(TR069InformType.VALUECHANGE);
\r
146 inform.setInformTypeList(list);
\r
147 inform.setParameters(getFaultCritcalParams());
\r
148 ves.setDevnotification(inform);
\r
150 VESNotificationResponse vesResponse = agent.processDeviceNotificationAsVESEvent(ves);
\r
152 Assert.assertNotNull(vesResponse);
\r
153 Assert.assertEquals(HttpStatus.ACCEPTED.value(), vesResponse.getStatusCode());
\r
154 } catch (Exception e) {
\r
155 e.printStackTrace();
\r
160 public void processFaultEventClearTest() {
\r
162 VESNotificationResponse res =
\r
163 new VESNotificationResponse(HttpStatus.ACCEPTED.value(), "Sucess");
\r
164 Mockito.when(sender.postRequest(Mockito.anyString(), Mockito.anyString())).thenReturn(res);
\r
165 VESNotification ves = new VESNotification();
\r
166 ves.seteNodeBName("0005B9A1");
\r
167 ves.setNetconfDetails(getNetConfDetails());
\r
168 DeviceInform inform = new ValueChangeInform();
\r
169 inform.setDeviceDetails(getDeviceDetails());
\r
170 ArrayList<InformType> list = new ArrayList<>();
\r
171 list.add(TR069InformType.VALUECHANGE);
\r
172 inform.setInformTypeList(list);
\r
173 inform.setParameters(getFaultClearParams());
\r
174 ves.setDevnotification(inform);
\r
176 VESNotificationResponse vesResponse = agent.processDeviceNotificationAsVESEvent(ves);
\r
177 Assert.assertNotNull(vesResponse);
\r
178 Assert.assertEquals(HttpStatus.ACCEPTED.value(), vesResponse.getStatusCode());
\r
179 res.getStatusCode();
\r
180 } catch (Exception e) {
\r
181 e.printStackTrace();
\r
186 public void processFaultEventTimeZoneTest() {
\r
188 VESNotificationResponse res =
\r
189 new VESNotificationResponse(HttpStatus.ACCEPTED.value(), "Sucess");
\r
190 Mockito.when(sender.postRequest(Mockito.anyString(), Mockito.anyString())).thenReturn(res);
\r
191 VESNotification ves = new VESNotification();
\r
192 ves.seteNodeBName("0005B9A1");
\r
193 ves.setNetconfDetails(getNetConfDetails());
\r
194 DeviceInform inform = new ValueChangeInform();
\r
195 inform.setDeviceDetails(getDeviceDetails());
\r
196 ArrayList<InformType> list = new ArrayList<>();
\r
197 list.add(TR069InformType.VALUECHANGE);
\r
198 inform.setInformTypeList(list);
\r
199 inform.setParameters(getFaultClearParams());
\r
200 ves.setDevnotification(inform);
\r
202 VESNotificationResponse vesResponse = agent.processDeviceNotificationAsVESEvent(ves);
\r
203 Assert.assertNotNull(vesResponse);
\r
204 Assert.assertEquals(HttpStatus.ACCEPTED.value(), vesResponse.getStatusCode());
\r
205 res.getStatusCode();
\r
206 } catch (Exception e) {
\r
207 e.printStackTrace();
\r
212 * @Test public void processHBEventTest() { try { VESNotificationResponse res = new
\r
213 * VESNotificationResponse(HttpStatus.ACCEPTED.value(), "Sucess");
\r
214 * Mockito.when(sender.postRequest(Mockito.anyString(), Mockito.anyString())).thenReturn(res);
\r
215 * VESNotification ves = new VESNotification(); ves.seteNodeBName("0005B9A1");
\r
216 * ves.setNetconfDetails(getNetConfDetails()); DeviceInform inform = new PeriodicInform();
\r
217 * inform.setDeviceDetails(getDeviceDetails()); ArrayList<InformType> list = new ArrayList<>();
\r
218 * list.add(TR069InformType.PERIODIC); inform.setInformTypeList(list);
\r
219 * inform.setParameters(getGeneralParams()); ves.setDevnotification(inform);
\r
221 * VESNotificationResponse vesResponse = agent.processDeviceNotificationAsVESEvent(ves);
\r
222 * Assert.assertNotNull(vesResponse); Assert.assertEquals(HttpStatus.ACCEPTED.value(),
\r
223 * vesResponse.getStatusCode()); res.getStatusCode(); } catch (Exception e) { e.printStackTrace();
\r
226 * @Test public void processHBEventWhenEnbNullTest() { try { VESNotificationResponse res = new
\r
227 * VESNotificationResponse(HttpStatus.ACCEPTED.value(), "Sucess");
\r
228 * Mockito.when(sender.postRequest(Mockito.anyString(), Mockito.anyString())).thenReturn(res);
\r
229 * VESNotification ves = new VESNotification(); ves.seteNodeBName(null);
\r
230 * ves.setNetconfDetails(getNetConfDetails()); DeviceInform inform = new PeriodicInform();
\r
231 * inform.setDeviceDetails(getDeviceDetails()); ArrayList<InformType> list = new ArrayList<>();
\r
232 * list.add(TR069InformType.PERIODIC); inform.setInformTypeList(list);
\r
233 * inform.setParameters(getGeneralParams()); ves.setDevnotification(inform);
\r
235 * VESNotificationResponse vesResponse = agent.processDeviceNotificationAsVESEvent(ves);
\r
236 * Assert.assertNotNull(vesResponse); Assert.assertEquals(HttpStatus.ACCEPTED.value(),
\r
237 * vesResponse.getStatusCode()); res.getStatusCode(); } catch (Exception e) { e.printStackTrace();
\r
241 public void processOnRestartEventTest() {
\r
243 VESNotificationResponse res =
\r
244 new VESNotificationResponse(HttpStatus.ACCEPTED.value(), "Sucess");
\r
245 Mockito.when(sender.postRequest(Mockito.anyString(), Mockito.anyString())).thenReturn(res);
\r
246 VESNotification ves = new VESNotification();
\r
247 ves.seteNodeBName("0005B9A1");
\r
248 ves.setNetconfDetails(getNetConfDetails());
\r
249 VESNotificationResponse vesResponse = agent.processDeviceNotificationAsVESEvent(ves);
\r
250 Assert.assertNotNull(vesResponse);
\r
251 Assert.assertEquals(HttpStatus.ACCEPTED.value(), vesResponse.getStatusCode());
\r
252 } catch (Exception e) {
\r
253 e.printStackTrace();
\r
258 public void processOnRestartEventWhenEnbNullTest() {
\r
260 VESNotificationResponse res =
\r
261 new VESNotificationResponse(HttpStatus.ACCEPTED.value(), "Sucess");
\r
262 Mockito.when(sender.postRequest(Mockito.anyString(), Mockito.anyString())).thenReturn(res);
\r
263 VESNotification ves = new VESNotification();
\r
264 ves.seteNodeBName("0005B9A1");
\r
265 ves.setNetconfDetails(getNetConfDetails());
\r
266 ves.getNetconfDetails().setEnodeBName(null);
\r
267 VESNotificationResponse vesResponse = agent.processDeviceNotificationAsVESEvent(ves);
\r
268 Assert.assertNotNull(vesResponse);
\r
269 Assert.assertEquals(HttpStatus.ACCEPTED.value(), vesResponse.getStatusCode());
\r
270 } catch (Exception e) {
\r
271 e.printStackTrace();
\r
276 private ArrayList<ParameterDTO> getFaultClearParams() {
\r
277 ArrayList<ParameterDTO> params = new ArrayList<>();
\r
278 params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.EventTime", ""));
\r
280 .add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.AlarmIdentifier", "0005B9B5-100"));
\r
281 params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.NotificationType", "NewAlarm"));
\r
282 params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.ManagedObjectInstance",
\r
283 "Device.Services.FAPService.{i}.FAPControl.LTE"));
\r
284 params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.EventType", "S1 Connection"));
\r
285 params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.ProbableCause",
\r
286 "S1 connection failure"));
\r
288 new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.SpecificProblem", "Unsupported PLMN"));
\r
289 params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.PerceivedSeverity", "CLEAR"));
\r
290 params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.AdditionalText",
\r
291 "S1 connection setup FAILED Addional Text"));
\r
292 params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.AdditionalInformation",
\r
293 "S1 connection setup FAILED Aditional Inf"));
\r
297 private ArrayList<ParameterDTO> getFaultCritcalParams() {
\r
298 ArrayList<ParameterDTO> params = new ArrayList<>();
\r
299 params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.EventTime", ""));
\r
301 .add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.AlarmIdentifier", "0005B9B5-100"));
\r
302 params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.NotificationType", "NewAlarm"));
\r
303 params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.ManagedObjectInstance",
\r
304 "Device.Services.FAPService.{i}.FAPControl.LTE"));
\r
305 params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.EventType", "S1 Connection"));
\r
306 params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.ProbableCause",
\r
307 "S1 connection failure"));
\r
309 new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.SpecificProblem", "Unsupported PLMN"));
\r
310 params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.PerceivedSeverity", "CRITICAL"));
\r
311 params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.AdditionalText",
\r
312 "S1 connection setup FAILED Addional Text"));
\r
313 params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.AdditionalInformation",
\r
314 "S1 connection setup FAILED Aditional Inf | TZD=UTC+00.00"));
\r
320 private ArrayList<ParameterDTO> getGeneralParams() {
\r
321 ArrayList<ParameterDTO> params = new ArrayList<>();
\r
322 params.add(new ParameterDTO("Device.DeviceInfo.ManufacturerOUI", "0005B9"));
\r
323 params.add(new ParameterDTO("Device.DeviceInfo.ProductClass", "LTE_Enterprise_C-RANSC_Cntrl"));
\r
324 params.add(new ParameterDTO("Device.DeviceInfo.HardwareVersion", "750742.00.04"));
\r
325 params.add(new ParameterDTO("Device.DeviceInfo.SoftwareVersion", "4.3.00.231"));
\r
326 params.add(new ParameterDTO("Device.DeviceInfo.Manufacturer", "ORAN"));
\r
327 params.add(new ParameterDTO("Device.DeviceInfo.SerialNumber", "00005B9A1"));
\r
328 params.add(new ParameterDTO("Device.IP.Interface.1.IPv4Address.1.IPAddress", "10.211.5.55"));
\r
332 private NetConfServerDetails getNetConfDetails() {
\r
333 NetConfServerDetails nf = new NetConfServerDetails();
\r
334 nf.setDeviceId("00005B9A1");
\r
335 nf.setEnodeBName("0005B9A1");
\r
336 nf.setListenAddress("10.211.5.27");
\r
337 nf.setListenPort("17830");
\r
341 private DeviceDetails getDeviceDetails() {
\r
342 DeviceDetails nf = new DeviceDetails();
\r
343 nf.setDeviceId("00005B9A1");
\r
344 nf.setDeviceTypeId(50);
\r
345 nf.setOui("0005B9");
\r
346 nf.setProductClass("LTE_Enterprise_C-RANSC_Cntrl");
\r