Updated holmes-actions to 1.3.5
[holmes/engine-management.git] / engine-d / src / test / java / org / onap / holmes / dsa / dmaappolling / SubscriberTest.java
1 /*
2  * Copyright 2017-2021 ZTE Corporation.
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16 package org.onap.holmes.dsa.dmaappolling;
17
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;
33
34 import java.util.ArrayList;
35 import java.util.List;
36
37 import static org.easymock.EasyMock.*;
38 import static org.hamcrest.CoreMatchers.*;
39 import static org.junit.Assert.assertThat;
40
41 @RunWith(PowerMockRunner.class)
42 @PrepareForTest({ServiceLocatorHolder.class, JerseyClient.class})
43 @PowerMockIgnore("javax.net.ssl.*")
44 public class SubscriberTest {
45
46     private DMaaPResponseUtil util = new DMaaPResponseUtil();
47
48     @Rule
49     public ExpectedException thrown = ExpectedException.none();
50
51     @Before
52     public void init() {
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();
57     }
58
59     @Test
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");
91
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\"," +
103                 "\"sequence\": 1," +
104                 "\"sourceId\": \"Source-123\"," +
105                 "\"sourceName\": \"Source-123\"," +
106                 "\"startEpochMicrosec\": 500," +
107                 "\"version\": 1" +
108                 "}," +
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\"" +
119                 "}}}";
120
121         List<String> responseList = new ArrayList<>();
122         responseList.add(eventString);
123
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);
129
130         PowerMock.replayAll();
131
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();
137
138         PowerMock.verifyAll();
139
140         assertThat(vesAlarm.getEventName(), equalTo(vesAlarms.get(0).getEventName()));
141     }
142
143     @Test
144     public void subscribe_retrieve_data_exception() throws Exception {
145         thrown.expect(CorrelationException.class);
146         thrown.expectMessage("Failed to get data from DMaaP.");
147
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");
178
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\"," +
190                 "\"sequence\": 1," +
191                 "\"sourceId\": \"Source-123\"," +
192                 "\"sourceName\": \"Source-123\"," +
193                 "\"startEpochMicrosec\": 500," +
194                 "\"version\": 1" +
195                 "}," +
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\"" +
206                 "}}}";
207
208         List<String> responseList = new ArrayList<>();
209         responseList.add(eventString);
210
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());
216
217         PowerMock.replayAll();
218
219         Subscriber subscriber = new Subscriber();
220         subscriber.setUrl("https://www.onap.org");
221         subscriber.setConsumerGroup("group");
222         subscriber.setConsumer("consumer");
223
224         subscriber.subscribe();
225
226         PowerMock.verifyAll();
227     }
228
229     @Test
230     public void testSetterAndGetter() {
231
232         PowerMock.replayAll();
233
234         Subscriber subscriber = new Subscriber();
235         subscriber.setTimeout(100);
236         subscriber.setLimit(10);
237         subscriber.setPeriod(10);
238         subscriber.setSecure(false);
239         subscriber.setTopic("test");
240         subscriber.setUrl("http://localhost");
241         subscriber.setConsumerGroup("Group1");
242         subscriber.setConsumer("Consumer1");
243         subscriber.setAuthInfo(null);
244         subscriber.setAuthExpDate(null);
245
246         assertThat(subscriber.getTimeout(), is(100));
247         assertThat(subscriber.getLimit(), is(10));
248         assertThat(subscriber.getPeriod(), is(10));
249         assertThat(subscriber.isSecure(), is(false));
250         assertThat(subscriber.getTopic(), equalTo("test"));
251         assertThat(subscriber.getUrl(), equalTo("http://localhost"));
252         assertThat(subscriber.getConsumerGroup(), equalTo("Group1"));
253         assertThat(subscriber.getConsumer(), equalTo("Consumer1"));
254         assertThat(subscriber.getAuthInfo(), nullValue());
255         assertThat(subscriber.getAuthExpDate(), nullValue());
256
257         PowerMock.verifyAll();
258     }
259
260 }