2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2022 Nordix Foundation.
4 * ================================================================================
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * 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.clamp.acm.element.handler;
23 import static org.assertj.core.api.Assertions.assertThat;
24 import static org.mockito.Mockito.mock;
25 import static org.mockito.Mockito.verify;
26 import static org.mockito.Mockito.when;
28 import java.util.List;
29 import org.junit.jupiter.api.Test;
30 import org.onap.policy.clamp.acm.element.main.parameters.AcElement;
31 import org.onap.policy.clamp.acm.element.service.ElementService;
32 import org.onap.policy.clamp.models.acm.messages.dmaap.element.ElementStatus;
33 import org.onap.policy.clamp.models.acm.messages.rest.element.ElementConfig;
34 import org.onap.policy.clamp.models.acm.messages.rest.element.ElementType;
35 import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
37 class MessageHandlerTest {
39 private static final String NAME = "name";
40 private static final String VERSION = "1.0.0";
43 void testAppliesTo() {
44 var messageHandler = createMessageHandler(List.of());
46 assertThat(messageHandler.appliesTo(new ToscaConceptIdentifier(NAME, "0.0.2"))).isFalse();
47 assertThat(messageHandler.appliesTo(new ToscaConceptIdentifier("different", VERSION))).isFalse();
48 assertThat(messageHandler.appliesTo(new ToscaConceptIdentifier(NAME, VERSION))).isTrue();
53 var starter = createMockElementService(ElementType.STARTER);
54 var bridge = createMockElementService(ElementType.BRIDGE);
55 var sink = createMockElementService(ElementType.SINK);
56 var messageHandler = createMessageHandler(List.of(starter, bridge, sink));
58 var elementConfig = new ElementConfig();
59 elementConfig.setElementType(ElementType.STARTER);
61 messageHandler.active(elementConfig);
62 verify(starter).active(elementConfig);
63 assertThat(messageHandler.getActiveService()).isEqualTo(starter);
64 messageHandler.deactivateElement();
69 var starter = createMockElementService(ElementType.STARTER);
70 var bridge = createMockElementService(ElementType.BRIDGE);
71 var sink = createMockElementService(ElementType.SINK);
72 var messageHandler = createMessageHandler(List.of(starter, bridge, sink));
74 var elementConfig = new ElementConfig();
75 elementConfig.setElementType(ElementType.BRIDGE);
76 messageHandler.active(elementConfig);
77 verify(bridge).active(elementConfig);
78 assertThat(messageHandler.getActiveService()).isEqualTo(bridge);
80 messageHandler.update(elementConfig);
81 verify(bridge).update(elementConfig);
83 var message = new ElementStatus();
84 messageHandler.handleMessage(message);
85 verify(bridge).handleMessage(message);
86 assertThat(messageHandler.getMessages()).hasSize(1);
87 assertThat(messageHandler.getMessages().get(0)).isEqualTo(message);
88 messageHandler.deactivateElement();
93 var starter = createMockElementService(ElementType.STARTER);
94 var bridge = createMockElementService(ElementType.BRIDGE);
95 var sink = createMockElementService(ElementType.SINK);
96 var messageHandler = createMessageHandler(List.of(starter, bridge, sink));
98 var elementConfig = new ElementConfig();
99 elementConfig.setElementType(ElementType.SINK);
100 messageHandler.active(elementConfig);
101 verify(sink).active(elementConfig);
102 assertThat(messageHandler.getActiveService()).isEqualTo(sink);
104 var message = new ElementStatus();
105 messageHandler.handleMessage(message);
106 verify(sink).handleMessage(message);
107 assertThat(messageHandler.getMessages()).hasSize(1);
108 assertThat(messageHandler.getMessages().get(0)).isEqualTo(message);
109 messageHandler.deactivateElement();
112 private MessageHandler createMessageHandler(List<ElementService> elementServices) {
113 var acElement = new AcElement();
114 acElement.setElementId(new ToscaConceptIdentifier(NAME, VERSION));
115 return new MessageHandler(acElement, elementServices);
118 private ElementService createMockElementService(ElementType elementType) {
119 var starter = mock(ElementService.class);
120 when(starter.getType()).thenReturn(elementType);