Changes for checkstyle 8.32
[policy/apex-pdp.git] / plugins / plugins-event / plugins-event-carrier / plugins-event-carrier-restrequestor / src / test / java / org / onap / policy / apex / plugins / event / carrier / restrequestor / ApexRestRequestorConsumerTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2018 Ericsson. All rights reserved.
4  *  Modifications Copyright (C) 2019-2020 Nordix Foundation.
5  * ================================================================================
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *      http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  *
18  * SPDX-License-Identifier: Apache-2.0
19  * ============LICENSE_END=========================================================
20  */
21
22 package org.onap.policy.apex.plugins.event.carrier.restrequestor;
23
24 import static org.assertj.core.api.Assertions.assertThatThrownBy;
25 import static org.awaitility.Awaitility.await;
26 import static org.junit.Assert.assertEquals;
27 import static org.junit.Assert.assertNotNull;
28
29 import java.util.Properties;
30 import java.util.concurrent.TimeUnit;
31 import org.junit.Test;
32 import org.onap.policy.apex.core.infrastructure.threading.ThreadUtilities;
33 import org.onap.policy.apex.service.engine.event.ApexEventException;
34 import org.onap.policy.apex.service.engine.event.ApexEventReceiver;
35 import org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters;
36 import org.onap.policy.apex.service.parameters.eventhandler.EventHandlerPeeredMode;
37
38 /**
39  * Test the ApexRestRequestorConsumer class.
40  *
41  */
42 public class ApexRestRequestorConsumerTest {
43     // String constants
44     private static final String CONSUMER_NAME = "ConsumerName";
45     private static final String EVENT_NAME = "EventName";
46     private static final String EVENT_BODY = "Event body";
47
48     @Test
49     public void testApexRestRequestorConsumerSetup() throws ApexEventException {
50         ApexRestRequestorConsumer consumer = new ApexRestRequestorConsumer();
51         assertNotNull(consumer);
52
53         EventHandlerParameters consumerParameters = new EventHandlerParameters();
54         ApexEventReceiver incomingEventReceiver = null;
55
56         assertThatThrownBy(() -> {
57             consumer.init(CONSUMER_NAME, consumerParameters, incomingEventReceiver);
58         }).hasMessage("specified consumer properties are not applicable to REST Requestor consumer (ConsumerName)");
59
60         RestRequestorCarrierTechnologyParameters rrctp = new RestRequestorCarrierTechnologyParameters();
61         consumerParameters.setCarrierTechnologyParameters(rrctp);
62         assertThatThrownBy(() -> {
63             consumer.init(CONSUMER_NAME, consumerParameters, incomingEventReceiver);
64         }).hasMessage("REST Requestor consumer (ConsumerName) must run in peered requestor mode "
65             + "with a REST Requestor producer");
66
67         consumerParameters.setPeeredMode(EventHandlerPeeredMode.REQUESTOR, true);
68         rrctp.setHttpMethod(null);
69
70         assertThatThrownBy(() -> {
71             consumer.init(CONSUMER_NAME, consumerParameters, incomingEventReceiver);
72         }).hasMessage("no URL has been specified on REST Requestor consumer (ConsumerName)");
73
74         rrctp.setHttpMethod(RestRequestorCarrierTechnologyParameters.HttpMethod.GET);
75         rrctp.setUrl("ZZZZ");
76         assertThatThrownBy(() -> {
77             consumer.init(CONSUMER_NAME, consumerParameters, incomingEventReceiver);
78         }).hasMessage("invalid URL has been specified on REST Requestor consumer (ConsumerName)");
79
80         rrctp.setHttpMethod(RestRequestorCarrierTechnologyParameters.HttpMethod.GET);
81         rrctp.setUrl("http://www.onap.org");
82         rrctp.setHttpCodeFilter("[1-5][0][0-5]");
83         consumerParameters.setPeerTimeout(EventHandlerPeeredMode.REQUESTOR, 0);
84
85         consumer.init(CONSUMER_NAME, consumerParameters, incomingEventReceiver);
86
87         assertThatThrownBy(() -> {
88             consumer.processRestRequest(null);
89         }).hasMessage("could not queue request \"null\" on REST Requestor consumer (ConsumerName)");
90
91         assertEquals(CONSUMER_NAME, consumer.getName());
92         assertEquals(0, consumer.getEventsReceived());
93         assertEquals(null, consumer.getPeeredReference(EventHandlerPeeredMode.REQUESTOR));
94     }
95
96     @Test
97     public void testApexRestRequestorConsumerRequest() throws ApexEventException {
98         ApexRestRequestorConsumer consumer = new ApexRestRequestorConsumer();
99         assertNotNull(consumer);
100
101         EventHandlerParameters consumerParameters = new EventHandlerParameters();
102         RestRequestorCarrierTechnologyParameters rrctp = new RestRequestorCarrierTechnologyParameters();
103         consumerParameters.setCarrierTechnologyParameters(rrctp);
104         consumerParameters.setPeeredMode(EventHandlerPeeredMode.REQUESTOR, true);
105         rrctp.setHttpMethod(RestRequestorCarrierTechnologyParameters.HttpMethod.GET);
106         rrctp.setUrl("http://www.onap.org");
107         rrctp.setHttpCodeFilter("[1-5][0][0-5]");
108         consumerParameters.setPeerTimeout(EventHandlerPeeredMode.REQUESTOR, 0);
109
110         // Test should time out requests
111         consumer.init(CONSUMER_NAME, consumerParameters, null);
112         consumer.start();
113         ApexRestRequest request = new ApexRestRequest(123, null, EVENT_NAME, EVENT_BODY);
114         consumer.processRestRequest(request);
115         await().atMost(200, TimeUnit.MILLISECONDS).until(() -> consumer.getEventsReceived() == 0);
116         consumer.stop();
117         assertEquals(0, consumer.getEventsReceived());
118     }
119
120     @Test
121     public void testApexRestRequestorConsumerUrlUpdate() throws ApexEventException {
122         ApexRestRequestorConsumer consumer = new ApexRestRequestorConsumer();
123         assertNotNull(consumer);
124
125         EventHandlerParameters consumerParameters = new EventHandlerParameters();
126         RestRequestorCarrierTechnologyParameters rrctp = new RestRequestorCarrierTechnologyParameters();
127         consumerParameters.setCarrierTechnologyParameters(rrctp);
128         consumerParameters.setPeeredMode(EventHandlerPeeredMode.REQUESTOR, true);
129         rrctp.setHttpMethod(RestRequestorCarrierTechnologyParameters.HttpMethod.GET);
130
131         rrctp.setUrl("http://www.{site}.{site}.{net}");
132         consumerParameters.setPeerTimeout(EventHandlerPeeredMode.REQUESTOR, 2000);
133         Properties properties = new Properties();
134         properties.put("site", "onap");
135         properties.put("net", "org");
136
137         consumer.init(CONSUMER_NAME, consumerParameters, null);
138         consumer.start();
139         ApexRestRequest request = new ApexRestRequest(123, properties, EVENT_NAME, EVENT_BODY);
140         consumer.processRestRequest(request);
141         await().atMost(2000, TimeUnit.MILLISECONDS).until(() -> consumer.getEventsReceived() == 0);
142         consumer.stop();
143         assertEquals(0, consumer.getEventsReceived());
144     }
145
146     @Test
147     public void testApexRestRequestorConsumerUrlUpdateError() throws ApexEventException {
148         ApexRestRequestorConsumer consumer = new ApexRestRequestorConsumer();
149         assertNotNull(consumer);
150
151         EventHandlerParameters consumerParameters = new EventHandlerParameters();
152         RestRequestorCarrierTechnologyParameters rrctp = new RestRequestorCarrierTechnologyParameters();
153         consumerParameters.setCarrierTechnologyParameters(rrctp);
154         consumerParameters.setPeeredMode(EventHandlerPeeredMode.REQUESTOR, true);
155         rrctp.setHttpMethod(RestRequestorCarrierTechnologyParameters.HttpMethod.GET);
156
157         rrctp.setUrl("http://www.{site}.{net}");
158         consumerParameters.setPeerTimeout(EventHandlerPeeredMode.REQUESTOR, 2000);
159         Properties properties = new Properties();
160         properties.put("site", "onap");
161
162         consumer.init(CONSUMER_NAME, consumerParameters, null);
163         consumer.start();
164         ApexRestRequest request = new ApexRestRequest(123, properties, EVENT_NAME, EVENT_BODY);
165         consumer.processRestRequest(request);
166         ThreadUtilities.sleep(2000);
167         consumer.stop();
168         assertEquals(0, consumer.getEventsReceived());
169     }
170 }