2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2021 Nordix Foundation
4 * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
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
10 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
17 * SPDX-License-Identifier: Apache-2.0
18 * ============LICENSE_END=========================================================
21 package org.onap.policy.apex.service.engine.event.impl.eventrequestor;
23 import static org.assertj.core.api.Assertions.assertThatThrownBy;
24 import static org.junit.Assert.assertEquals;
25 import static org.mockito.ArgumentMatchers.any;
27 import java.util.Random;
28 import org.apache.commons.lang3.RandomStringUtils;
29 import org.junit.Before;
30 import org.junit.Test;
31 import org.junit.runner.RunWith;
32 import org.mockito.Mock;
33 import org.mockito.Mockito;
34 import org.mockito.junit.MockitoJUnitRunner;
35 import org.onap.policy.apex.service.engine.event.ApexEventException;
36 import org.onap.policy.apex.service.engine.event.ApexEventProducer;
37 import org.onap.policy.apex.service.engine.event.ApexEventRuntimeException;
38 import org.onap.policy.apex.service.engine.event.PeeredReference;
39 import org.onap.policy.apex.service.engine.event.SynchronousEventCache;
40 import org.onap.policy.apex.service.engine.event.impl.filecarrierplugin.consumer.ApexFileEventConsumer;
41 import org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters;
42 import org.onap.policy.apex.service.parameters.eventhandler.EventHandlerPeeredMode;
44 @RunWith(MockitoJUnitRunner.class)
45 public class EventRequestorProducerTest {
46 private final Random random = new Random();
47 private EventRequestorProducer producer;
50 private ApexEventProducer apexProducer;
52 private EventRequestorConsumer apexConsumer;
55 public void setUp() throws Exception {
56 producer = new EventRequestorProducer();
60 public void initWithEmptyParams() {
61 final String producerName = RandomStringUtils.random(4);
62 final EventHandlerParameters eventHandlerParameters = new EventHandlerParameters();
64 assertThatThrownBy(() -> producer.init(producerName, eventHandlerParameters))
65 .isInstanceOf(ApexEventException.class);
69 public void initNotPeered() {
70 final String producerName = RandomStringUtils.random(4);
71 final EventHandlerParameters eventHandlerParameters = new EventHandlerParameters();
72 eventHandlerParameters.setCarrierTechnologyParameters(new EventRequestorCarrierTechnologyParameters());
74 assertThatThrownBy(() -> producer.init(producerName, eventHandlerParameters))
75 .isInstanceOf(ApexEventException.class);
79 public void getName() throws ApexEventException {
80 final String expected = RandomStringUtils.random(4);
81 final EventHandlerParameters eventHandlerParameters = new EventHandlerParameters();
82 eventHandlerParameters.setCarrierTechnologyParameters(new EventRequestorCarrierTechnologyParameters());
83 eventHandlerParameters.setPeeredMode(EventHandlerPeeredMode.REQUESTOR, true);
85 producer.init(expected, eventHandlerParameters);
86 final String actual = producer.getName();
88 assertEquals(expected, actual);
92 public void getSetPeeredReference() {
93 final PeeredReference peeredReference = new PeeredReference(EventHandlerPeeredMode.SYNCHRONOUS, apexConsumer,
95 producer.setPeeredReference(EventHandlerPeeredMode.SYNCHRONOUS, peeredReference);
97 final PeeredReference actual = this.producer.getPeeredReference(EventHandlerPeeredMode.SYNCHRONOUS);
98 assertEquals(peeredReference, actual);
102 public void sendEventNoRequestor() {
103 final int id = random.nextInt(1000);
105 assertThatThrownBy(() -> producer.sendEvent(id, null, null, null))
106 .isInstanceOf(ApexEventRuntimeException.class);
110 public void sendEventNoEventRequestorConsumer() {
111 final int id = random.nextInt(1000);
113 final ApexFileEventConsumer fileEventConsumer = Mockito.mock(ApexFileEventConsumer.class);
115 final PeeredReference reference =
116 new PeeredReference(EventHandlerPeeredMode.REQUESTOR, fileEventConsumer, apexProducer);
118 producer.setPeeredReference(EventHandlerPeeredMode.REQUESTOR, reference);
120 assertThatThrownBy(() -> producer.sendEvent(id, null, null, null))
121 .isInstanceOf(ApexEventRuntimeException.class);
125 public void sendEvent() {
126 final int id = random.nextInt(1000);
128 final PeeredReference reference =
129 new PeeredReference(EventHandlerPeeredMode.REQUESTOR, apexConsumer, apexProducer);
130 producer.setPeeredReference(EventHandlerPeeredMode.REQUESTOR, reference);
132 producer.sendEvent(id, null, null, null);
133 Mockito.verify(apexConsumer, Mockito.times(1)).processEvent(any());
137 public void sendEventCached() {
138 final int id = random.nextInt(1000);
141 final SynchronousEventCache eventCache = Mockito.mock(SynchronousEventCache.class);
142 producer.setPeeredReference(EventHandlerPeeredMode.SYNCHRONOUS, eventCache);
144 final PeeredReference reference =
145 new PeeredReference(EventHandlerPeeredMode.REQUESTOR, apexConsumer, apexProducer);
146 producer.setPeeredReference(EventHandlerPeeredMode.REQUESTOR, reference);
148 producer.sendEvent(id, null, null, null);
149 Mockito.verify(apexConsumer, Mockito.times(1)).processEvent(any());
150 Mockito.verify(eventCache, Mockito.times(1)).removeCachedEventToApexIfExists(id);