2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.sdc.be.components.merge.heat;
23 import org.junit.Before;
24 import org.junit.Test;
25 import org.openecomp.sdc.be.components.utils.ArtifactBuilder;
26 import org.openecomp.sdc.be.components.utils.HeatParameterBuilder;
27 import org.openecomp.sdc.be.datatypes.elements.HeatParameterDataDefinition;
28 import org.openecomp.sdc.be.model.ArtifactDefinition;
29 import org.openecomp.sdc.be.model.HeatParameterDefinition;
31 import java.util.Arrays;
32 import java.util.Collections;
33 import java.util.List;
34 import java.util.stream.Stream;
36 import static org.junit.Assert.assertEquals;
38 public class HeatEnvArtifactsMergeBusinessLogicTest {
40 private HeatEnvArtifactsMergeBusinessLogic testInstance;
43 public void setUp() throws Exception {
44 testInstance = new HeatEnvArtifactsMergeBusinessLogic();
48 public void mergeHeatEnvParameter_diffArtifactLabel_noMerging() throws Exception {
49 HeatParameterDefinition newHeatParam1 = buildHeatParameterDefinition("param1", "type1", "param1NewValue");
50 HeatParameterDefinition prevHeatParam1 = buildHeatParameterDefinition("param1", "type1", "param1PrevValue");
52 ArtifactDefinition oldArtifact = buildHeatArtifact("artifact1", prevHeatParam1);
53 ArtifactDefinition newArtifact = buildHeatArtifact("artifact2", newHeatParam1);
54 List<ArtifactDefinition> mergedArtifacts = testInstance.mergeInstanceHeatEnvArtifacts(Collections.singletonList(oldArtifact), Collections.singletonList(newArtifact));
55 assertEquals(0, mergedArtifacts.size());
56 assertEquals("param1NewValue", newArtifact.getHeatParameters().get(0).getCurrentValue());
60 public void mergeHeatEnvParameter_diffHeatParamName_noMerge() throws Exception {
61 HeatParameterDefinition newHeatParam1 = buildHeatParameterDefinition("param1", "type1", "param1NewValue");
62 HeatParameterDefinition prevHeatParam1 = buildHeatParameterDefinition("param2", "type1", "param1PrevValue");
63 ArtifactDefinition oldArtifact = buildHeatArtifact("artifact1", prevHeatParam1);
64 ArtifactDefinition newArtifact = buildHeatArtifact("artifact1", newHeatParam1);
65 List<ArtifactDefinition> mergedArtifacts = testInstance.mergeInstanceHeatEnvArtifacts(Collections.singletonList(oldArtifact), Collections.singletonList(newArtifact));
66 assertEquals(0, mergedArtifacts.size());
67 assertEquals("param1NewValue", newArtifact.getHeatParameters().get(0).getCurrentValue());
71 public void mergeHeatEnvParameter_diffHeatParamType_noMerge() throws Exception {
72 HeatParameterDefinition newHeatParam1 = buildHeatParameterDefinition("param1", "type1", "param1NewValue");
73 HeatParameterDefinition prevHeatParam1 = buildHeatParameterDefinition("param1", "type2", "param1PrevValue");
74 ArtifactDefinition oldArtifact = buildHeatArtifact("artifact1", prevHeatParam1);
75 ArtifactDefinition newArtifact = buildHeatArtifact("artifact1", newHeatParam1);
76 List<ArtifactDefinition> mergedArtifacts = testInstance.mergeInstanceHeatEnvArtifacts(Collections.singletonList(oldArtifact), Collections.singletonList(newArtifact));
77 assertEquals(0, mergedArtifacts.size());
78 assertEquals("param1NewValue", newArtifact.getHeatParameters().get(0).getCurrentValue());
82 public void mergeHeatEnvParameter__diffOldAndNewValues_overrideNewValueWithOldValue() throws Exception {
83 HeatParameterDefinition newHeatParam1 = buildHeatParameterDefinition("param1", "type1", null);
84 HeatParameterDefinition newHeatParam2 = buildHeatParameterDefinition("param2", "type1", "param2value");
86 HeatParameterDefinition prevHeatParam1 = buildHeatParameterDefinition("param1", "type1", "param1PrevValue");
87 HeatParameterDefinition prevHeatParam2 = buildHeatParameterDefinition("param2", "type1", "param2PrevValue");
89 ArtifactDefinition oldArtifact = buildHeatArtifact("artifact1", prevHeatParam1, prevHeatParam2);
90 ArtifactDefinition newArtifact = buildHeatArtifact("artifact1", newHeatParam1, newHeatParam2);
92 List<ArtifactDefinition> mergedArtifacts = testInstance.mergeInstanceHeatEnvArtifacts(Collections.singletonList(oldArtifact), Collections.singletonList(newArtifact));
93 assertEquals(1, mergedArtifacts.size());
94 List<HeatParameterDataDefinition> heatParameters = mergedArtifacts.get(0).getHeatParameters();
95 assertEquals("param1PrevValue", heatParameters.get(0).getCurrentValue());
96 assertEquals("param2PrevValue", heatParameters.get(1).getCurrentValue());
100 public void mergeHeatEnvParameter_multipleArtifacts() throws Exception {
101 HeatParameterDefinition newHeatParam1 = buildHeatParameterDefinition("param1", "type1", "param1Newvalue");
102 HeatParameterDefinition newHeatParam2 = buildHeatParameterDefinition("param2", "type1", "param2Newvalue");
103 HeatParameterDefinition newHeatParam3 = buildHeatParameterDefinition("param2", "type1", "param3Newvalue");
105 HeatParameterDefinition prevHeatParam1 = buildHeatParameterDefinition("param1", "type1", "param1PrevValue");
106 HeatParameterDefinition prevHeatParam2 = buildHeatParameterDefinition("param2", "type1", "param2PrevValue");
107 HeatParameterDefinition prevHeatParam3 = buildHeatParameterDefinition("param3", "type2", "param3PrevValue");
109 ArtifactDefinition oldArtifact1 = buildHeatArtifact("artifact1", prevHeatParam1);
110 ArtifactDefinition oldArtifact2 = buildHeatArtifact("artifact2", prevHeatParam2);
111 ArtifactDefinition oldArtifact3 = buildHeatArtifact("artifact3", prevHeatParam3);
113 ArtifactDefinition newArtifact1 = buildHeatArtifact("artifact1", newHeatParam1);
114 ArtifactDefinition newArtifact2 = buildHeatArtifact("artifact2New", newHeatParam2);
115 ArtifactDefinition newArtifact3 = buildHeatArtifact("artifact3", newHeatParam3);
117 List<ArtifactDefinition> mergedArtifacts = testInstance.mergeInstanceHeatEnvArtifacts(Arrays.asList(oldArtifact1, oldArtifact2, oldArtifact3), Arrays.asList(newArtifact1, newArtifact2, newArtifact3));
118 assertEquals(1, mergedArtifacts.size());//artifact 2 not merged as it has different label, artifact 3 not merged as the heat parameter has diff types
119 assertEquals("artifact1", mergedArtifacts.get(0).getArtifactLabel());
122 private HeatParameterDefinition buildHeatParameterDefinition(String name, String type, String val) {
123 return new HeatParameterBuilder().setName(name).setType(type).setCurrentValue(val).build();
126 private ArtifactDefinition buildHeatArtifact(String label, HeatParameterDefinition ... heatParameterDefinitions) {
127 ArtifactBuilder artifactBuilder = new ArtifactBuilder().setLabel(label);
128 Stream.of(heatParameterDefinitions).forEach(artifactBuilder::addHeatParam);
129 return artifactBuilder.build();