2 * Copyright 2017-2021 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.junit.Before;
19 import org.junit.Rule;
20 import org.junit.Test;
21 import org.junit.rules.ExpectedException;
22 import org.junit.runner.RunWith;
23 import org.onap.holmes.common.api.stat.VesAlarm;
24 import org.onap.holmes.common.exception.CorrelationException;
25 import org.onap.holmes.common.utils.JerseyClient;
26 import org.onap.holmes.common.utils.SpringContextUtil;
27 import org.powermock.api.easymock.PowerMock;
28 import org.powermock.core.classloader.annotations.PowerMockIgnore;
29 import org.powermock.core.classloader.annotations.PrepareForTest;
30 import org.powermock.modules.junit4.PowerMockRunner;
32 import java.util.ArrayList;
33 import java.util.HashMap;
34 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({SpringContextUtil.class, JerseyClient.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(SpringContextUtil.class);
54 expect(SpringContextUtil.getBean(DMaaPResponseUtil.class)).andReturn(util).anyTimes();
58 public void subscribe_normal() throws Exception {
59 VesAlarm vesAlarm = new VesAlarm();
60 vesAlarm.setDomain("ONAP");
61 vesAlarm.setEventId("123");
62 vesAlarm.setEventName("Event-123");
63 vesAlarm.setEventType("EventType");
64 vesAlarm.setLastEpochMicrosec(1000L);
65 vesAlarm.setNfcNamingCode("123");
66 vesAlarm.setNfNamingCode("123");
67 vesAlarm.setPriority("high");
68 vesAlarm.setReportingEntityId("ID-123");
69 vesAlarm.setReportingEntityName("Name-123");
70 vesAlarm.setSequence(1);
71 vesAlarm.setSourceId("Source-123");
72 vesAlarm.setSourceName("Source-123");
73 vesAlarm.setStartEpochMicrosec(500L);
74 vesAlarm.setVersion("4.0");
75 Map alarmAdditionalFields = new HashMap<String, String>();
76 alarmAdditionalFields.put("addInfo", "addInfo");
77 vesAlarm.setAlarmAdditionalInformation(alarmAdditionalFields);
78 vesAlarm.setAlarmCondition("alarmCondition");
79 vesAlarm.setAlarmInterfaceA("alarmInterfaceA");
80 vesAlarm.setEventCategory("eventCategory");
81 vesAlarm.setEventSeverity("eventSeverity");
82 vesAlarm.setEventSourceType("eventSourceType");
83 vesAlarm.setFaultFieldsVersion("2.0");
84 vesAlarm.setSpecificProblem("specificProblem");
85 vesAlarm.setVfStatus("vfStatus");
87 String eventString = "{\"event\": {\"commonEventHeader\": {" +
88 "\"domain\": \"ONAP\"," +
89 "\"eventId\": \"123\"," +
90 "\"eventName\": \"Event-123\"," +
91 "\"eventType\": \"EventType\"," +
92 "\"lastEpochMicrosec\": 1000," +
93 "\"nfcNamingCode\": \"123\"," +
94 "\"nfNamingCode\": \"123\"," +
95 "\"priority\": \"high\"," +
96 "\"reportingEntityId\": \"ID-123\"," +
97 "\"reportingEntityName\": \"Name-123\"," +
99 "\"sourceId\": \"Source-123\"," +
100 "\"sourceName\": \"Source-123\"," +
101 "\"startEpochMicrosec\": 500," +
102 "\"version\": \"4.0\"" +
104 " \"faultFields\" : {" +
105 "\"alarmAdditionalInformatiddon\":[{\"name\":\"addInfo\", \"value\":\"addInfo\"}]," +
106 "\"alarmCondition\": \"alarmCondition\"," +
107 "\"alarmInterfaceA\": \"alarmInterfaceA\"," +
108 "\"eventCategory\": \"eventCategory\"," +
109 "\"eventSeverity\": \"eventSeverity\"," +
110 "\"eventSourceType\": \"eventSourceType\"," +
111 "\"faultFieldsVersion\": \"2.0\"," +
112 "\"specificProblem\": \"specificProblem\"," +
113 "\"vfStatus\": \"vfStatus\"" +
116 List<String> responseList = new ArrayList<>();
117 responseList.add(eventString);
119 JerseyClient mockedClient = PowerMock.createMock(JerseyClient.class);
120 PowerMock.expectNew(JerseyClient.class).andReturn(mockedClient);
121 expect(mockedClient.path(anyString())).andReturn(mockedClient).times(2);
122 expect(mockedClient.queryParam(anyString(), anyInt())).andReturn(mockedClient);
123 expect(mockedClient.get(anyString(), anyObject())).andReturn(responseList);
125 PowerMock.replayAll();
127 Subscriber subscriber = new Subscriber();
128 subscriber.setUrl("https://www.onap.org");
129 subscriber.setConsumerGroup("group");
130 subscriber.setConsumer("consumer");
131 List<VesAlarm> vesAlarms = subscriber.subscribe();
133 PowerMock.verifyAll();
135 assertThat(vesAlarm.getEventName(), equalTo(vesAlarms.get(0).getEventName()));
139 public void subscribe_retrieve_data_exception() throws Exception {
140 thrown.expect(CorrelationException.class);
141 thrown.expectMessage("Failed to get data from DMaaP.");
143 VesAlarm vesAlarm = new VesAlarm();
144 vesAlarm.setDomain("ONAP");
145 vesAlarm.setEventId("123");
146 vesAlarm.setEventName("Event-123");
147 vesAlarm.setEventType("EventType");
148 vesAlarm.setLastEpochMicrosec(1000L);
149 vesAlarm.setNfcNamingCode("123");
150 vesAlarm.setNfNamingCode("123");
151 vesAlarm.setPriority("high");
152 vesAlarm.setReportingEntityId("ID-123");
153 vesAlarm.setReportingEntityName("Name-123");
154 vesAlarm.setSequence(1);
155 vesAlarm.setSourceId("Source-123");
156 vesAlarm.setSourceName("Source-123");
157 vesAlarm.setStartEpochMicrosec(500L);
158 vesAlarm.setVersion("4.0");
159 Map alarmAdditionalFields = new HashMap<String, String>();
160 alarmAdditionalFields.put("addInfo", "addInfo");
161 vesAlarm.setAlarmAdditionalInformation(alarmAdditionalFields);
162 vesAlarm.setAlarmCondition("alarmCondition");
163 vesAlarm.setAlarmInterfaceA("alarmInterfaceA");
164 vesAlarm.setEventCategory("eventCategory");
165 vesAlarm.setEventSeverity("eventSeverity");
166 vesAlarm.setEventSourceType("eventSourceType");
167 vesAlarm.setFaultFieldsVersion("2.0");
168 vesAlarm.setSpecificProblem("specificProblem");
169 vesAlarm.setVfStatus("vfStatus");
171 String eventString = "{\"event\": {\"commonEventHeader\": {" +
172 "\"domain\": \"ONAP\"," +
173 "\"eventId\": \"123\"," +
174 "\"eventName\": \"Event-123\"," +
175 "\"eventType\": \"EventType\"," +
176 "\"lastEpochMicrosec\": 1000," +
177 "\"nfcNamingCode\": \"123\"," +
178 "\"nfNamingCode\": \"123\"," +
179 "\"priority\": \"high\"," +
180 "\"reportingEntityId\": \"ID-123\"," +
181 "\"reportingEntityName\": \"Name-123\"," +
183 "\"sourceId\": \"Source-123\"," +
184 "\"sourceName\": \"Source-123\"," +
185 "\"startEpochMicrosec\": 500," +
186 "\"version\": \"4.0\"" +
188 " \"faultFields\" : {" +
189 "\"alarmAdditionalInformation\": [{\"name\":\"addInfo\", \"value\":\"addInfo\"}]," +
190 "\"alarmCondition\": \"alarmCondition\"," +
191 "\"alarmInterfaceA\": \"alarmInterfaceA\"," +
192 "\"eventCategory\": \"eventCategory\"," +
193 "\"eventSeverity\": \"eventSeverity\"," +
194 "\"eventSourceType\": \"eventSourceType\"," +
195 "\"faultFieldsVersion\": \"2.0\"," +
196 "\"specificProblem\": \"specificProblem\"," +
197 "\"vfStatus\": \"vfStatus\"" +
200 List<String> responseList = new ArrayList<>();
201 responseList.add(eventString);
203 JerseyClient mockedClient = PowerMock.createMock(JerseyClient.class);
204 PowerMock.expectNew(JerseyClient.class).andReturn(mockedClient);
205 expect(mockedClient.path(anyString())).andReturn(mockedClient).times(2);
206 expect(mockedClient.queryParam(anyString(), anyInt())).andReturn(mockedClient);
207 expect(mockedClient.get(anyString(), anyObject())).andThrow(new RuntimeException());
209 PowerMock.replayAll();
211 Subscriber subscriber = new Subscriber();
212 subscriber.setUrl("https://www.onap.org");
213 subscriber.setConsumerGroup("group");
214 subscriber.setConsumer("consumer");
216 subscriber.subscribe();
218 PowerMock.verifyAll();
222 public void testSetterAndGetter() {
224 PowerMock.replayAll();
226 Subscriber subscriber = new Subscriber();
227 subscriber.setTimeout(100);
228 subscriber.setLimit(10);
229 subscriber.setPeriod(10);
230 subscriber.setSecure(false);
231 subscriber.setTopic("test");
232 subscriber.setUrl("http://localhost");
233 subscriber.setConsumerGroup("Group1");
234 subscriber.setConsumer("Consumer1");
235 subscriber.setAuthInfo(null);
236 subscriber.setAuthExpDate(null);
238 assertThat(subscriber.getTimeout(), is(100));
239 assertThat(subscriber.getLimit(), is(10));
240 assertThat(subscriber.getPeriod(), is(10));
241 assertThat(subscriber.isSecure(), is(false));
242 assertThat(subscriber.getTopic(), equalTo("test"));
243 assertThat(subscriber.getUrl(), equalTo("http://localhost"));
244 assertThat(subscriber.getConsumerGroup(), equalTo("Group1"));
245 assertThat(subscriber.getConsumer(), equalTo("Consumer1"));
246 assertThat(subscriber.getAuthInfo(), nullValue());
247 assertThat(subscriber.getAuthExpDate(), nullValue());
249 PowerMock.verifyAll();