07818d068474c440b5c4c88a7c2b94d13a21fa0e
[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 java.util.Properties;
29
30 import org.junit.Test;
31 import org.onap.policy.apex.core.infrastructure.threading.ThreadUtilities;
32 import org.onap.policy.apex.service.engine.event.ApexEventException;
33 import org.onap.policy.apex.service.engine.event.ApexEventReceiver;
34 import org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters;
35 import org.onap.policy.apex.service.parameters.eventhandler.EventHandlerPeeredMode;
36
37 /**
38  * Test the ApexRestRequestorConsumer class.
39  *
40  */
41 public class ApexRestRequestorConsumerTest {
42
43     @Test
44     public void testApexRestRequestorConsumerSetup() throws ApexEventException {
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         rrctp.setHttpCodeFilter("[1-5][0][0-5]");
92         consumerParameters.setPeerTimeout(EventHandlerPeeredMode.REQUESTOR, 0);
93
94         consumer.init(consumerName, consumerParameters, incomingEventReceiver);
95
96         try {
97             consumer.processRestRequest(null);
98             fail("test should throw an exception here");
99         } catch (Exception ex) {
100             assertEquals("could not queue request \"null\" on REST Requestor consumer (ConsumerName)",
101                             ex.getMessage());
102         }
103
104         assertEquals("ConsumerName", consumer.getName());
105         assertEquals(0, consumer.getEventsReceived());
106         assertEquals(null, consumer.getPeeredReference(EventHandlerPeeredMode.REQUESTOR));
107     }
108
109     @Test
110     public void testApexRestRequestorConsumerRequest() throws ApexEventException {
111         ApexRestRequestorConsumer consumer = new ApexRestRequestorConsumer();
112         assertNotNull(consumer);
113
114         String consumerName = "ConsumerName";
115
116         EventHandlerParameters consumerParameters = new EventHandlerParameters();
117         ApexEventReceiver incomingEventReceiver = null;
118         RestRequestorCarrierTechnologyParameters rrctp = new RestRequestorCarrierTechnologyParameters();
119         consumerParameters.setCarrierTechnologyParameters(rrctp);
120         consumerParameters.setPeeredMode(EventHandlerPeeredMode.REQUESTOR, true);
121         rrctp.setHttpMethod(RestRequestorCarrierTechnologyParameters.HttpMethod.GET);
122         rrctp.setUrl("http://www.onap.org");
123         rrctp.setHttpCodeFilter("[1-5][0][0-5]");
124         consumerParameters.setPeerTimeout(EventHandlerPeeredMode.REQUESTOR, 0);
125
126         // Test should time out requests
127         consumer.init(consumerName, consumerParameters, incomingEventReceiver);
128         consumer.start();
129         ApexRestRequest request = new ApexRestRequest(123, null, "EventName", "Event body");
130         consumer.processRestRequest(request);
131         ThreadUtilities.sleep(200);
132         consumer.stop();
133         assertEquals(0, consumer.getEventsReceived());
134     }
135
136     @Test
137     public void testApexRestRequestorConsumerUrlUpdate() throws ApexEventException {
138         ApexRestRequestorConsumer consumer = new ApexRestRequestorConsumer();
139         assertNotNull(consumer);
140
141         String consumerName = "ConsumerName";
142
143         EventHandlerParameters consumerParameters = new EventHandlerParameters();
144         ApexEventReceiver incomingEventReceiver = null;
145         RestRequestorCarrierTechnologyParameters rrctp = new RestRequestorCarrierTechnologyParameters();
146         consumerParameters.setCarrierTechnologyParameters(rrctp);
147         consumerParameters.setPeeredMode(EventHandlerPeeredMode.REQUESTOR, true);
148         rrctp.setHttpMethod(RestRequestorCarrierTechnologyParameters.HttpMethod.GET);
149
150         rrctp.setUrl("http://www.{site}.{site}.{net}");
151         consumerParameters.setPeerTimeout(EventHandlerPeeredMode.REQUESTOR, 2000);
152         Properties properties = new Properties();
153         properties.put("site", "onap");
154         properties.put("net", "org");
155
156         consumer.init(consumerName, consumerParameters, incomingEventReceiver);
157         consumer.start();
158         ApexRestRequest request = new ApexRestRequest(123, properties,"EventName", "Event body");
159         consumer.processRestRequest(request);
160         ThreadUtilities.sleep(2000);
161         consumer.stop();
162         assertEquals(0, consumer.getEventsReceived());
163     }
164
165     @Test
166     public void testApexRestRequestorConsumerUrlUpdateError() throws ApexEventException {
167         ApexRestRequestorConsumer consumer = new ApexRestRequestorConsumer();
168         assertNotNull(consumer);
169
170         String consumerName = "ConsumerName";
171
172         EventHandlerParameters consumerParameters = new EventHandlerParameters();
173         ApexEventReceiver incomingEventReceiver = null;
174         RestRequestorCarrierTechnologyParameters rrctp = new RestRequestorCarrierTechnologyParameters();
175         consumerParameters.setCarrierTechnologyParameters(rrctp);
176         consumerParameters.setPeeredMode(EventHandlerPeeredMode.REQUESTOR, true);
177         rrctp.setHttpMethod(RestRequestorCarrierTechnologyParameters.HttpMethod.GET);
178
179         rrctp.setUrl("http://www.{site}.{net}");
180         consumerParameters.setPeerTimeout(EventHandlerPeeredMode.REQUESTOR, 2000);
181         Properties properties = new Properties();
182         properties.put("site", "onap");
183
184         consumer.init(consumerName, consumerParameters, incomingEventReceiver);
185         consumer.start();
186         ApexRestRequest request = new ApexRestRequest(123, properties,"EventName", "Event body");
187         consumer.processRestRequest(request);
188         ThreadUtilities.sleep(2000);
189         consumer.stop();
190         assertEquals(0, consumer.getEventsReceived());
191     }
192 }