ac1af67ddda9356e4a0f31754e4946da3de379e2
[policy/apex-pdp.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2018 Ericsson. All rights reserved.
4  *  Modifications Copyright (C) 2019 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.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertNotNull;
26 import static org.junit.Assert.fail;
27
28 import org.junit.Test;
29 import org.onap.policy.apex.core.infrastructure.threading.ThreadUtilities;
30 import org.onap.policy.apex.service.engine.event.ApexEventException;
31 import org.onap.policy.apex.service.engine.event.ApexEventReceiver;
32 import org.onap.policy.apex.service.engine.event.ApexEventRuntimeException;
33 import org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters;
34 import org.onap.policy.apex.service.parameters.eventhandler.EventHandlerPeeredMode;
35
36 import java.util.Properties;
37
38 /**
39  * Test the ApexRestRequestorConsumer class.
40  *
41  */
42 public class ApexRestRequestorConsumerTest {
43     @Test
44     public void testApexRestRequestorConsumerSetup() {
45         ApexRestRequestorConsumer consumer = new ApexRestRequestorConsumer();
46         assertNotNull(consumer);
47
48         String consumerName = "ConsumerName";
49
50         EventHandlerParameters consumerParameters = new EventHandlerParameters();
51         ApexEventReceiver incomingEventReceiver = null;
52
53         try {
54             consumer.init(consumerName, consumerParameters, incomingEventReceiver);
55             fail("test should throw an exception here");
56         } catch (ApexEventException aee) {
57             assertEquals("specified consumer properties are not applicable to REST Requestor consumer (ConsumerName)",
58                             aee.getMessage());
59         }
60
61         RestRequestorCarrierTechnologyParameters rrctp = new RestRequestorCarrierTechnologyParameters();
62         consumerParameters.setCarrierTechnologyParameters(rrctp);
63         try {
64             consumer.init(consumerName, consumerParameters, incomingEventReceiver);
65             fail("test should throw an exception here");
66         } catch (ApexEventException aee) {
67             assertEquals("REST Requestor consumer (ConsumerName) must run in peered requestor mode "
68                             + "with a REST Requestor producer", aee.getMessage());
69         }
70
71         consumerParameters.setPeeredMode(EventHandlerPeeredMode.REQUESTOR, true);
72         rrctp.setHttpMethod(null);
73         try {
74             consumer.init(consumerName, consumerParameters, incomingEventReceiver);
75             fail("test should throw an exception here");
76         } catch (ApexEventException aee) {
77             assertEquals("no URL has been specified on REST Requestor consumer (ConsumerName)", aee.getMessage());
78         }
79
80         rrctp.setHttpMethod(RestRequestorCarrierTechnologyParameters.HttpMethod.GET);
81         rrctp.setUrl("ZZZZ");
82         try {
83             consumer.init(consumerName, consumerParameters, incomingEventReceiver);
84             fail("test should throw an exception here");
85         } catch (ApexEventException aee) {
86             assertEquals("invalid URL has been specified on REST Requestor consumer (ConsumerName)", aee.getMessage());
87         }
88
89         rrctp.setHttpMethod(RestRequestorCarrierTechnologyParameters.HttpMethod.GET);
90         rrctp.setUrl("http://www.onap.org");
91         consumerParameters.setPeerTimeout(EventHandlerPeeredMode.REQUESTOR, 0);
92
93         try {
94             consumer.init(consumerName, consumerParameters, incomingEventReceiver);
95         } catch (ApexEventException aee) {
96             fail("test should not throw an exception");
97         }
98
99         try {
100             consumer.processRestRequest(null);
101             fail("test should throw an exception here");
102         } catch (Exception ex) {
103             assertEquals("could not queue request \"null\" on REST Requestor consumer (ConsumerName)",
104                             ex.getMessage());
105         }
106
107         assertEquals("ConsumerName", consumer.getName());
108         assertEquals(0, consumer.getEventsReceived());
109         assertEquals(null, consumer.getPeeredReference(EventHandlerPeeredMode.REQUESTOR));
110     }
111
112     @Test
113     public void testApexRestRequestorConsumerRequest() {
114         ApexRestRequestorConsumer consumer = new ApexRestRequestorConsumer();
115         assertNotNull(consumer);
116
117         String consumerName = "ConsumerName";
118
119         EventHandlerParameters consumerParameters = new EventHandlerParameters();
120         ApexEventReceiver incomingEventReceiver = null;
121         RestRequestorCarrierTechnologyParameters rrctp = new RestRequestorCarrierTechnologyParameters();
122         consumerParameters.setCarrierTechnologyParameters(rrctp);
123         consumerParameters.setPeeredMode(EventHandlerPeeredMode.REQUESTOR, true);
124         rrctp.setHttpMethod(RestRequestorCarrierTechnologyParameters.HttpMethod.GET);
125         rrctp.setUrl("http://www.onap.org");
126         consumerParameters.setPeerTimeout(EventHandlerPeeredMode.REQUESTOR, 0);
127
128         // Test should time out requests
129         try {
130             consumer.init(consumerName, consumerParameters, incomingEventReceiver);
131             consumer.start();
132             ApexRestRequest request = new ApexRestRequest(123, null,"EventName", "Event body");
133             consumer.processRestRequest(request);
134             ThreadUtilities.sleep(2000);
135             consumer.stop();
136             assertEquals(0, consumer.getEventsReceived());
137         } catch (ApexEventException aee) {
138             fail("test should not throw an exception");
139         }
140     }
141
142     @Test
143     public void testApexRestRequestorConsumerUrlUpdate() {
144         ApexRestRequestorConsumer consumer = new ApexRestRequestorConsumer();
145         assertNotNull(consumer);
146
147         String consumerName = "ConsumerName";
148
149         EventHandlerParameters consumerParameters = new EventHandlerParameters();
150         ApexEventReceiver incomingEventReceiver = null;
151         RestRequestorCarrierTechnologyParameters rrctp = new RestRequestorCarrierTechnologyParameters();
152         consumerParameters.setCarrierTechnologyParameters(rrctp);
153         consumerParameters.setPeeredMode(EventHandlerPeeredMode.REQUESTOR, true);
154         rrctp.setHttpMethod(RestRequestorCarrierTechnologyParameters.HttpMethod.GET);
155
156         rrctp.setUrl("http://www.{site}.{site}.{net}");
157         consumerParameters.setPeerTimeout(EventHandlerPeeredMode.REQUESTOR, 2000);
158         Properties properties = new Properties();
159         properties.put("site", "onap");
160         properties.put("net", "org");
161         try {
162             consumer.init(consumerName, consumerParameters, incomingEventReceiver);
163             consumer.start();
164             ApexRestRequest request = new ApexRestRequest(123, properties,"EventName", "Event body");
165             consumer.processRestRequest(request);
166             ThreadUtilities.sleep(2000);
167             consumer.stop();
168             assertEquals(0, consumer.getEventsReceived());
169         } catch (Exception aee) {
170             fail("test should not throw an exception");
171         }
172     }
173
174     @Test
175     public void testApexRestRequestorConsumerUrlUpdateError() {
176         ApexRestRequestorConsumer consumer = new ApexRestRequestorConsumer();
177         assertNotNull(consumer);
178
179         String consumerName = "ConsumerName";
180
181         EventHandlerParameters consumerParameters = new EventHandlerParameters();
182         ApexEventReceiver incomingEventReceiver = null;
183         RestRequestorCarrierTechnologyParameters rrctp = new RestRequestorCarrierTechnologyParameters();
184         consumerParameters.setCarrierTechnologyParameters(rrctp);
185         consumerParameters.setPeeredMode(EventHandlerPeeredMode.REQUESTOR, true);
186         rrctp.setHttpMethod(RestRequestorCarrierTechnologyParameters.HttpMethod.GET);
187
188         rrctp.setUrl("http://www.{site}.{net}");
189         consumerParameters.setPeerTimeout(EventHandlerPeeredMode.REQUESTOR, 2000);
190         Properties properties = new Properties();
191         properties.put("site", "onap");
192         try {
193             consumer.init(consumerName, consumerParameters, incomingEventReceiver);
194             consumer.start();
195             ApexRestRequest request = new ApexRestRequest(123, properties,"EventName", "Event body");
196             consumer.processRestRequest(request);
197             ThreadUtilities.sleep(2000);
198             consumer.stop();
199             assertEquals(0, consumer.getEventsReceived());
200         } catch (Exception aee) {
201             fail("test should not throw an exception");
202         }
203     }
204 }