46390f9d61c31e87b092e68dcc22ac24de7a22d9
[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     // String constants
43     private static final String CONSUMER_NAME = "ConsumerName";
44     private static final String EVENT_NAME = "EventName";
45     private static final String EVENT_BODY = "Event body";
46
47     @Test
48     public void testApexRestRequestorConsumerSetup() throws ApexEventException {
49         ApexRestRequestorConsumer consumer = new ApexRestRequestorConsumer();
50         assertNotNull(consumer);
51
52         EventHandlerParameters consumerParameters = new EventHandlerParameters();
53         ApexEventReceiver incomingEventReceiver = null;
54
55         try {
56             consumer.init(CONSUMER_NAME, consumerParameters, incomingEventReceiver);
57             fail("test should throw an exception here");
58         } catch (ApexEventException aee) {
59             assertEquals("specified consumer properties are not applicable to REST Requestor consumer (ConsumerName)",
60                     aee.getMessage());
61         }
62
63         RestRequestorCarrierTechnologyParameters rrctp = new RestRequestorCarrierTechnologyParameters();
64         consumerParameters.setCarrierTechnologyParameters(rrctp);
65         try {
66             consumer.init(CONSUMER_NAME, consumerParameters, incomingEventReceiver);
67             fail("test should throw an exception here");
68         } catch (ApexEventException aee) {
69             assertEquals("REST Requestor consumer (ConsumerName) must run in peered requestor mode "
70                     + "with a REST Requestor producer", aee.getMessage());
71         }
72
73         consumerParameters.setPeeredMode(EventHandlerPeeredMode.REQUESTOR, true);
74         rrctp.setHttpMethod(null);
75         try {
76             consumer.init(CONSUMER_NAME, consumerParameters, incomingEventReceiver);
77             fail("test should throw an exception here");
78         } catch (ApexEventException aee) {
79             assertEquals("no URL has been specified on REST Requestor consumer (ConsumerName)", aee.getMessage());
80         }
81
82         rrctp.setHttpMethod(RestRequestorCarrierTechnologyParameters.HttpMethod.GET);
83         rrctp.setUrl("ZZZZ");
84         try {
85             consumer.init(CONSUMER_NAME, consumerParameters, incomingEventReceiver);
86             fail("test should throw an exception here");
87         } catch (ApexEventException aee) {
88             assertEquals("invalid URL has been specified on REST Requestor consumer (ConsumerName)", aee.getMessage());
89         }
90
91         rrctp.setHttpMethod(RestRequestorCarrierTechnologyParameters.HttpMethod.GET);
92         rrctp.setUrl("http://www.onap.org");
93         rrctp.setHttpCodeFilter("[1-5][0][0-5]");
94         consumerParameters.setPeerTimeout(EventHandlerPeeredMode.REQUESTOR, 0);
95
96         consumer.init(CONSUMER_NAME, consumerParameters, incomingEventReceiver);
97
98         try {
99             consumer.processRestRequest(null);
100             fail("test should throw an exception here");
101         } catch (Exception ex) {
102             assertEquals("could not queue request \"null\" on REST Requestor consumer (ConsumerName)", ex.getMessage());
103         }
104
105         assertEquals(CONSUMER_NAME, consumer.getName());
106         assertEquals(0, consumer.getEventsReceived());
107         assertEquals(null, consumer.getPeeredReference(EventHandlerPeeredMode.REQUESTOR));
108     }
109
110     @Test
111     public void testApexRestRequestorConsumerRequest() throws ApexEventException {
112         ApexRestRequestorConsumer consumer = new ApexRestRequestorConsumer();
113         assertNotNull(consumer);
114
115         EventHandlerParameters consumerParameters = new EventHandlerParameters();
116         RestRequestorCarrierTechnologyParameters rrctp = new RestRequestorCarrierTechnologyParameters();
117         consumerParameters.setCarrierTechnologyParameters(rrctp);
118         consumerParameters.setPeeredMode(EventHandlerPeeredMode.REQUESTOR, true);
119         rrctp.setHttpMethod(RestRequestorCarrierTechnologyParameters.HttpMethod.GET);
120         rrctp.setUrl("http://www.onap.org");
121         rrctp.setHttpCodeFilter("[1-5][0][0-5]");
122         consumerParameters.setPeerTimeout(EventHandlerPeeredMode.REQUESTOR, 0);
123
124         // Test should time out requests
125         consumer.init(CONSUMER_NAME, consumerParameters, null);
126         consumer.start();
127         ApexRestRequest request = new ApexRestRequest(123, null, EVENT_NAME, EVENT_BODY);
128         consumer.processRestRequest(request);
129         ThreadUtilities.sleep(200);
130         consumer.stop();
131         assertEquals(0, consumer.getEventsReceived());
132     }
133
134     @Test
135     public void testApexRestRequestorConsumerUrlUpdate() throws ApexEventException {
136         ApexRestRequestorConsumer consumer = new ApexRestRequestorConsumer();
137         assertNotNull(consumer);
138
139         EventHandlerParameters consumerParameters = new EventHandlerParameters();
140         RestRequestorCarrierTechnologyParameters rrctp = new RestRequestorCarrierTechnologyParameters();
141         consumerParameters.setCarrierTechnologyParameters(rrctp);
142         consumerParameters.setPeeredMode(EventHandlerPeeredMode.REQUESTOR, true);
143         rrctp.setHttpMethod(RestRequestorCarrierTechnologyParameters.HttpMethod.GET);
144
145         rrctp.setUrl("http://www.{site}.{site}.{net}");
146         consumerParameters.setPeerTimeout(EventHandlerPeeredMode.REQUESTOR, 2000);
147         Properties properties = new Properties();
148         properties.put("site", "onap");
149         properties.put("net", "org");
150
151         consumer.init(CONSUMER_NAME, consumerParameters, null);
152         consumer.start();
153         ApexRestRequest request = new ApexRestRequest(123, properties, EVENT_NAME, EVENT_BODY);
154         consumer.processRestRequest(request);
155         ThreadUtilities.sleep(2000);
156         consumer.stop();
157         assertEquals(0, consumer.getEventsReceived());
158     }
159
160     @Test
161     public void testApexRestRequestorConsumerUrlUpdateError() throws ApexEventException {
162         ApexRestRequestorConsumer consumer = new ApexRestRequestorConsumer();
163         assertNotNull(consumer);
164
165         EventHandlerParameters consumerParameters = new EventHandlerParameters();
166         RestRequestorCarrierTechnologyParameters rrctp = new RestRequestorCarrierTechnologyParameters();
167         consumerParameters.setCarrierTechnologyParameters(rrctp);
168         consumerParameters.setPeeredMode(EventHandlerPeeredMode.REQUESTOR, true);
169         rrctp.setHttpMethod(RestRequestorCarrierTechnologyParameters.HttpMethod.GET);
170
171         rrctp.setUrl("http://www.{site}.{net}");
172         consumerParameters.setPeerTimeout(EventHandlerPeeredMode.REQUESTOR, 2000);
173         Properties properties = new Properties();
174         properties.put("site", "onap");
175
176         consumer.init(CONSUMER_NAME, consumerParameters, null);
177         consumer.start();
178         ApexRestRequest request = new ApexRestRequest(123, properties, EVENT_NAME, EVENT_BODY);
179         consumer.processRestRequest(request);
180         ThreadUtilities.sleep(2000);
181         consumer.stop();
182         assertEquals(0, consumer.getEventsReceived());
183     }
184 }