2 * Copyright 2017-2020 ZTE Corporation.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org.onap.holmes.dsa.dmaappolling;
18 import org.glassfish.hk2.api.ServiceLocator;
19 import org.junit.Before;
20 import org.junit.Rule;
21 import org.junit.Test;
22 import org.junit.rules.ExpectedException;
23 import org.junit.runner.RunWith;
24 import org.onap.holmes.common.api.stat.AlarmAdditionalField;
25 import org.onap.holmes.common.api.stat.VesAlarm;
26 import org.onap.holmes.common.dropwizard.ioc.utils.ServiceLocatorHolder;
27 import org.onap.holmes.common.exception.CorrelationException;
28 import org.onap.holmes.common.utils.JerseyClient;
29 import org.powermock.api.easymock.PowerMock;
30 import org.powermock.core.classloader.annotations.PowerMockIgnore;
31 import org.powermock.core.classloader.annotations.PrepareForTest;
32 import org.powermock.modules.junit4.PowerMockRunner;
34 import java.util.ArrayList;
35 import java.util.List;
37 import static org.easymock.EasyMock.*;
38 import static org.hamcrest.CoreMatchers.*;
39 import static org.junit.Assert.assertThat;
41 @RunWith(PowerMockRunner.class)
42 @PrepareForTest({ServiceLocatorHolder.class, ServiceLocator.class, Subscriber.class})
43 @PowerMockIgnore("javax.net.ssl.*")
44 public class SubscriberTest {
46 private DMaaPResponseUtil util = new DMaaPResponseUtil();
49 public ExpectedException thrown = ExpectedException.none();
53 PowerMock.mockStatic(ServiceLocatorHolder.class);
54 ServiceLocator serviceLocator = PowerMock.createMock(ServiceLocator.class);
55 expect(ServiceLocatorHolder.getLocator()).andReturn(serviceLocator).anyTimes();
56 expect(serviceLocator.getService(DMaaPResponseUtil.class)).andReturn(util).anyTimes();
60 public void subscribe_normal() throws Exception {
61 VesAlarm vesAlarm = new VesAlarm();
62 vesAlarm.setDomain("ONAP");
63 vesAlarm.setEventId("123");
64 vesAlarm.setEventName("Event-123");
65 vesAlarm.setEventType("EventType");
66 vesAlarm.setLastEpochMicrosec(1000L);
67 vesAlarm.setNfcNamingCode("123");
68 vesAlarm.setNfNamingCode("123");
69 vesAlarm.setPriority("high");
70 vesAlarm.setReportingEntityId("ID-123");
71 vesAlarm.setReportingEntityName("Name-123");
72 vesAlarm.setSequence(1);
73 vesAlarm.setSourceId("Source-123");
74 vesAlarm.setSourceName("Source-123");
75 vesAlarm.setStartEpochMicrosec(500L);
76 vesAlarm.setVersion(1L);
77 List<AlarmAdditionalField> alarmAdditionalFields = new ArrayList<>();
78 AlarmAdditionalField field = new AlarmAdditionalField();
79 field.setName("addInfo");
80 field.setValue("addInfo");
81 alarmAdditionalFields.add(field);
82 vesAlarm.setAlarmAdditionalInformation(alarmAdditionalFields);
83 vesAlarm.setAlarmCondition("alarmCondition");
84 vesAlarm.setAlarmInterfaceA("alarmInterfaceA");
85 vesAlarm.setEventCategory("eventCategory");
86 vesAlarm.setEventSeverity("eventSeverity");
87 vesAlarm.setEventSourceType("eventSourceType");
88 vesAlarm.setFaultFieldsVersion(1L);
89 vesAlarm.setSpecificProblem("specificProblem");
90 vesAlarm.setVfStatus("vfStatus");
92 String eventString = "{\"event\": {\"commonEventHeader\": {" +
93 "\"domain\": \"ONAP\"," +
94 "\"eventId\": \"123\"," +
95 "\"eventName\": \"Event-123\"," +
96 "\"eventType\": \"EventType\"," +
97 "\"lastEpochMicrosec\": 1000," +
98 "\"nfcNamingCode\": \"123\"," +
99 "\"nfNamingCode\": \"123\"," +
100 "\"priority\": \"high\"," +
101 "\"reportingEntityId\": \"ID-123\"," +
102 "\"reportingEntityName\": \"Name-123\"," +
104 "\"sourceId\": \"Source-123\"," +
105 "\"sourceName\": \"Source-123\"," +
106 "\"startEpochMicrosec\": 500," +
109 " \"faultFields\" : {" +
110 "\"alarmAdditionalInformation\": [{\"name\":\"addInfo\", \"value\":\"addInfo\"}]," +
111 "\"alarmCondition\": \"alarmCondition\"," +
112 "\"alarmInterfaceA\": \"alarmInterfaceA\"," +
113 "\"eventCategory\": \"eventCategory\"," +
114 "\"eventSeverity\": \"eventSeverity\"," +
115 "\"eventSourceType\": \"eventSourceType\"," +
116 "\"faultFieldsVersion\": 1," +
117 "\"specificProblem\": \"specificProblem\"," +
118 "\"vfStatus\": \"vfStatus\"" +
121 List<String> responseList = new ArrayList<>();
122 responseList.add(eventString);
124 JerseyClient mockedClient = PowerMock.createMock(JerseyClient.class);
125 PowerMock.expectNew(JerseyClient.class).andReturn(mockedClient);
126 expect(mockedClient.path(anyString())).andReturn(mockedClient).times(2);
127 expect(mockedClient.queryParam(anyString(), anyInt())).andReturn(mockedClient);
128 expect(mockedClient.get(anyString(), anyObject())).andReturn(responseList);
130 PowerMock.replayAll();
132 Subscriber subscriber = new Subscriber();
133 subscriber.setUrl("https://www.onap.org");
134 subscriber.setConsumerGroup("group");
135 subscriber.setConsumer("consumer");
136 List<VesAlarm> vesAlarms = subscriber.subscribe();
138 PowerMock.verifyAll();
140 assertThat(vesAlarm.getEventName(), equalTo(vesAlarms.get(0).getEventName()));
144 public void subscribe_retrieve_data_exception() throws Exception {
145 thrown.expect(CorrelationException.class);
146 thrown.expectMessage("Failed to get data from DMaaP.");
148 VesAlarm vesAlarm = new VesAlarm();
149 vesAlarm.setDomain("ONAP");
150 vesAlarm.setEventId("123");
151 vesAlarm.setEventName("Event-123");
152 vesAlarm.setEventType("EventType");
153 vesAlarm.setLastEpochMicrosec(1000L);
154 vesAlarm.setNfcNamingCode("123");
155 vesAlarm.setNfNamingCode("123");
156 vesAlarm.setPriority("high");
157 vesAlarm.setReportingEntityId("ID-123");
158 vesAlarm.setReportingEntityName("Name-123");
159 vesAlarm.setSequence(1);
160 vesAlarm.setSourceId("Source-123");
161 vesAlarm.setSourceName("Source-123");
162 vesAlarm.setStartEpochMicrosec(500L);
163 vesAlarm.setVersion(1L);
164 List<AlarmAdditionalField> alarmAdditionalFields = new ArrayList<>();
165 AlarmAdditionalField field = new AlarmAdditionalField();
166 field.setName("addInfo");
167 field.setValue("addInfo");
168 alarmAdditionalFields.add(field);
169 vesAlarm.setAlarmAdditionalInformation(alarmAdditionalFields);
170 vesAlarm.setAlarmCondition("alarmCondition");
171 vesAlarm.setAlarmInterfaceA("alarmInterfaceA");
172 vesAlarm.setEventCategory("eventCategory");
173 vesAlarm.setEventSeverity("eventSeverity");
174 vesAlarm.setEventSourceType("eventSourceType");
175 vesAlarm.setFaultFieldsVersion(1L);
176 vesAlarm.setSpecificProblem("specificProblem");
177 vesAlarm.setVfStatus("vfStatus");
179 String eventString = "{\"event\": {\"commonEventHeader\": {" +
180 "\"domain\": \"ONAP\"," +
181 "\"eventId\": \"123\"," +
182 "\"eventName\": \"Event-123\"," +
183 "\"eventType\": \"EventType\"," +
184 "\"lastEpochMicrosec\": 1000," +
185 "\"nfcNamingCode\": \"123\"," +
186 "\"nfNamingCode\": \"123\"," +
187 "\"priority\": \"high\"," +
188 "\"reportingEntityId\": \"ID-123\"," +
189 "\"reportingEntityName\": \"Name-123\"," +
191 "\"sourceId\": \"Source-123\"," +
192 "\"sourceName\": \"Source-123\"," +
193 "\"startEpochMicrosec\": 500," +
196 " \"faultFields\" : {" +
197 "\"alarmAdditionalInformation\": [{\"name\":\"addInfo\", \"value\":\"addInfo\"}]," +
198 "\"alarmCondition\": \"alarmCondition\"," +
199 "\"alarmInterfaceA\": \"alarmInterfaceA\"," +
200 "\"eventCategory\": \"eventCategory\"," +
201 "\"eventSeverity\": \"eventSeverity\"," +
202 "\"eventSourceType\": \"eventSourceType\"," +
203 "\"faultFieldsVersion\": 1," +
204 "\"specificProblem\": \"specificProblem\"," +
205 "\"vfStatus\": \"vfStatus\"" +
208 List<String> responseList = new ArrayList<>();
209 responseList.add(eventString);
211 JerseyClient mockedClient = PowerMock.createMock(JerseyClient.class);
212 PowerMock.expectNew(JerseyClient.class).andReturn(mockedClient);
213 expect(mockedClient.path(anyString())).andReturn(mockedClient).times(2);
214 expect(mockedClient.queryParam(anyString(), anyInt())).andReturn(mockedClient);
215 expect(mockedClient.get(anyString(), anyObject())).andThrow(new RuntimeException());
217 PowerMock.replayAll();
219 Subscriber subscriber = new Subscriber();
220 subscriber.setUrl("https://www.onap.org");
221 subscriber.setConsumerGroup("group");
222 subscriber.setConsumer("consumer");
223 List<VesAlarm> vesAlarms = subscriber.subscribe();
225 PowerMock.verifyAll();
229 public void testSetterAndGetter() {
231 PowerMock.replayAll();
233 Subscriber subscriber = new Subscriber();
234 subscriber.setTimeout(100);
235 subscriber.setLimit(10);
236 subscriber.setPeriod(10);
237 subscriber.setSecure(false);
238 subscriber.setTopic("test");
239 subscriber.setUrl("http://localhost");
240 subscriber.setConsumerGroup("Group1");
241 subscriber.setConsumer("Consumer1");
242 subscriber.setAuthInfo(null);
243 subscriber.setAuthExpDate(null);
245 assertThat(subscriber.getTimeout(), is(100));
246 assertThat(subscriber.getLimit(), is(10));
247 assertThat(subscriber.getPeriod(), is(10));
248 assertThat(subscriber.isSecure(), is(false));
249 assertThat(subscriber.getTopic(), equalTo("test"));
250 assertThat(subscriber.getUrl(), equalTo("http://localhost"));
251 assertThat(subscriber.getConsumerGroup(), equalTo("Group1"));
252 assertThat(subscriber.getConsumer(), equalTo("Consumer1"));
253 assertThat(subscriber.getAuthInfo(), nullValue());
254 assertThat(subscriber.getAuthExpDate(), nullValue());
256 PowerMock.verifyAll();