1744979667a11d7006a4af2818bdaa6a165d8d23
[policy/clamp.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2024-2025 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
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
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.
16  *
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.clamp.acm.participant.sim.main.handler;
22
23 import static org.assertj.core.api.Assertions.assertThat;
24 import static org.junit.jupiter.api.Assertions.assertEquals;
25 import static org.mockito.ArgumentMatchers.any;
26 import static org.mockito.Mockito.mock;
27 import static org.mockito.Mockito.times;
28 import static org.mockito.Mockito.verify;
29 import static org.mockito.Mockito.when;
30
31 import java.util.HashMap;
32 import java.util.Map;
33 import java.util.UUID;
34 import org.junit.jupiter.api.Test;
35 import org.onap.policy.clamp.acm.participant.intermediary.api.ParticipantIntermediaryApi;
36 import org.onap.policy.clamp.acm.participant.sim.comm.CommonTestData;
37 import org.onap.policy.clamp.models.acm.concepts.AutomationCompositionElementDefinition;
38 import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
39 import org.onap.policy.models.tosca.authorative.concepts.ToscaNodeTemplate;
40
41 class SimulatorServiceTest {
42
43     @Test
44     void testGetAutomationCompositions() {
45         var intermediaryApi = mock(ParticipantIntermediaryApi.class);
46         var simulatorService = new SimulatorService(intermediaryApi);
47
48         var map = CommonTestData.getTestAutomationCompositionMap();
49         when(intermediaryApi.getAutomationCompositions()).thenReturn(map);
50         var result = simulatorService.getAutomationCompositions();
51         assertEquals(map.values().iterator().next(), result.getAutomationCompositionList().get(0));
52     }
53
54     @Test
55     void testGetAutomationComposition() {
56         var intermediaryApi = mock(ParticipantIntermediaryApi.class);
57         var simulatorService = new SimulatorService(intermediaryApi);
58
59         var instance = CommonTestData.getTestAutomationCompositionMap().values().iterator().next();
60         when(intermediaryApi.getAutomationComposition(instance.getInstanceId())).thenReturn(instance);
61         var result = simulatorService.getAutomationComposition(instance.getInstanceId());
62         assertEquals(instance, result);
63     }
64
65     @Test
66     void testSetOutProperties() {
67         var intermediaryApi = mock(ParticipantIntermediaryApi.class);
68         var simulatorService = new SimulatorService(intermediaryApi);
69
70         var instanceId = UUID.randomUUID();
71         var elementId = UUID.randomUUID();
72         var useState = "useState";
73         var operationalState = "operationalState";
74         Map<String, Object> map = Map.of("id", "1234");
75
76         simulatorService.setOutProperties(instanceId, elementId, useState, operationalState, map);
77         verify(intermediaryApi).sendAcElementInfo(instanceId, elementId, useState, operationalState, map);
78     }
79
80     @Test
81     void testGetDataList() {
82         var intermediaryApi = mock(ParticipantIntermediaryApi.class);
83         var simulatorService = new SimulatorService(intermediaryApi);
84
85         var map = CommonTestData.getTestAutomationCompositionMap();
86         when(intermediaryApi.getAutomationCompositions()).thenReturn(map);
87         var result = simulatorService.getDataList();
88         var data = result.getList().get(0);
89         var automationcomposition = map.values().iterator().next();
90         assertEquals(automationcomposition.getInstanceId(), data.getAutomationCompositionId());
91         var element = automationcomposition.getElements().values().iterator().next();
92         assertEquals(element.getId(), data.getAutomationCompositionElementId());
93     }
94
95     @Test
96     void testGetCompositionDataList() {
97         var acElementDefinition = new AutomationCompositionElementDefinition();
98         var toscaConceptIdentifier = new ToscaConceptIdentifier("code", "1.0.0");
99         acElementDefinition.setAcElementDefinitionId(toscaConceptIdentifier);
100         acElementDefinition.setAutomationCompositionElementToscaNodeTemplate(new ToscaNodeTemplate());
101         Map<String, Object> outProperties = Map.of("code", "value");
102         Map<String, Object> inProperties = Map.of("key", "value");
103         acElementDefinition.getAutomationCompositionElementToscaNodeTemplate().setProperties(inProperties);
104         acElementDefinition.setOutProperties(outProperties);
105         var elementsDefinitions = Map.of(toscaConceptIdentifier, acElementDefinition);
106         var compositionId = UUID.randomUUID();
107         var map = Map.of(compositionId, elementsDefinitions);
108         var intermediaryApi = mock(ParticipantIntermediaryApi.class);
109         when(intermediaryApi.getAcElementsDefinitions()).thenReturn(map);
110         var simulatorService = new SimulatorService(intermediaryApi);
111
112         var result = simulatorService.getCompositionDataList();
113         assertThat(result.getList()).hasSize(1);
114         assertEquals(result.getList().get(0).getCompositionId(), compositionId);
115         assertEquals(result.getList().get(0).getCompositionDefinitionElementId(), toscaConceptIdentifier);
116         assertEquals(result.getList().get(0).getOutProperties(), outProperties);
117         assertEquals(result.getList().get(0).getIntProperties(), inProperties);
118     }
119
120     @Test
121     void testSetCompositionData() {
122         var intermediaryApi = mock(ParticipantIntermediaryApi.class);
123         var simulatorService = new SimulatorService(intermediaryApi);
124
125         var compositionId = UUID.randomUUID();
126         simulatorService.setCompositionOutProperties(compositionId, null, Map.of());
127         verify(intermediaryApi).sendAcDefinitionInfo(compositionId, null, Map.of());
128     }
129
130     @Test
131     void testInterrupted() {
132         var intermediaryApi = mock(ParticipantIntermediaryApi.class);
133         var simulatorService = new SimulatorService(intermediaryApi) {
134             @Override
135             protected boolean execution(int timeMs, String msg, UUID elementId) {
136                 return false;
137             }
138         };
139
140         simulatorService.deploy(UUID.randomUUID(), UUID.randomUUID(), new HashMap<>());
141         simulatorService.undeploy(UUID.randomUUID(), UUID.randomUUID(), new HashMap<>());
142         simulatorService.lock(UUID.randomUUID(), UUID.randomUUID());
143         simulatorService.unlock(UUID.randomUUID(), UUID.randomUUID());
144         simulatorService.delete(UUID.randomUUID(), UUID.randomUUID());
145         simulatorService.update(UUID.randomUUID(), UUID.randomUUID());
146         simulatorService.review(UUID.randomUUID(), UUID.randomUUID());
147         simulatorService.prepare(UUID.randomUUID(), UUID.randomUUID());
148         simulatorService.migratePrecheck(UUID.randomUUID(), UUID.randomUUID());
149         verify(intermediaryApi, times(0)).sendAcDefinitionInfo(any(), any(), any());
150
151     }
152
153 }