aboutsummaryrefslogtreecommitdiffstats
path: root/runtime/src/test/java/org/onap/policy/clamp/clds/sdc/controller/installer/BlueprintParserTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/src/test/java/org/onap/policy/clamp/clds/sdc/controller/installer/BlueprintParserTest.java')
-rw-r--r--runtime/src/test/java/org/onap/policy/clamp/clds/sdc/controller/installer/BlueprintParserTest.java208
1 files changed, 208 insertions, 0 deletions
diff --git a/runtime/src/test/java/org/onap/policy/clamp/clds/sdc/controller/installer/BlueprintParserTest.java b/runtime/src/test/java/org/onap/policy/clamp/clds/sdc/controller/installer/BlueprintParserTest.java
new file mode 100644
index 000000000..085b3d187
--- /dev/null
+++ b/runtime/src/test/java/org/onap/policy/clamp/clds/sdc/controller/installer/BlueprintParserTest.java
@@ -0,0 +1,208 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2019 Nokia Intellectual Property. All rights
+ * reserved.
+ * ================================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END============================================
+ * ===================================================================
+ *
+ */
+
+package org.onap.policy.clamp.clds.sdc.controller.installer;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import com.google.gson.Gson;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import org.json.JSONObject;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.onap.policy.clamp.clds.exception.sdc.controller.BlueprintParserException;
+import org.onap.policy.clamp.clds.util.ResourceFileUtils;
+import org.yaml.snakeyaml.Yaml;
+
+public class BlueprintParserTest {
+ private static final Gson GSON = new Gson();
+ private static final String FIRST_APPP = "first_app";
+ private static final String SECOND_APPP = "second_app";
+ private static final String THIRD_APPP = "third_app";
+ private static final String MODEL_TYPE1 = "type1";
+ private static final String MODEL_TYPE_TCA = "onap.policies.monitoring.cdap.tca.hi.lo.app";
+ private static final String VERSION = "1.0.0";
+
+ private static String microServiceTheWholeBlueprintValid;
+ private static String newMicroServiceBlueprint;
+ private static JsonObject jsonObjectBlueprintInvalid;
+ private static JsonObject jsonObjectBlueprintWithoutName;
+ private static JsonObject jsonObjectBlueprintWithoutProperties;
+ private static JsonObject jsonObjectBlueprintWithoutRelationships;
+ private static JsonObject jsonObjectBlueprintValidWithVersion;
+
+ /**
+ * Method to load Blueprints before all test.
+ *
+ * @throws IOException In case of issues when opening the files
+ */
+ @BeforeClass
+ public static void loadBlueprints() throws IOException {
+ microServiceTheWholeBlueprintValid = ResourceFileUtils
+ .getResourceAsString("clds/blueprint-with-microservice-chain.yaml");
+
+ newMicroServiceBlueprint = ResourceFileUtils.getResourceAsString("clds/new-microservice.yaml");
+
+ String microServiceBlueprintInvalid = ResourceFileUtils
+ .getResourceAsString("clds/single-microservice-fragment-invalid.yaml");
+ jsonObjectBlueprintInvalid = yamlToJson(microServiceBlueprintInvalid);
+ String microServiceBlueprintWithoutName = ResourceFileUtils
+ .getResourceAsString("clds/single-microservice-fragment-without-name.yaml");
+ jsonObjectBlueprintWithoutName = yamlToJson(microServiceBlueprintWithoutName);
+ String microServiceBlueprintWithoutProperties = ResourceFileUtils
+ .getResourceAsString("clds/single-microservice-fragment-without-properties.yaml");
+ jsonObjectBlueprintWithoutProperties = yamlToJson(microServiceBlueprintWithoutProperties);
+ String microServiceBlueprintValidWithVersion = ResourceFileUtils
+ .getResourceAsString("clds/single-microservice-fragment-valid-with-version.yaml");
+ jsonObjectBlueprintValidWithVersion = yamlToJson(microServiceBlueprintValidWithVersion);
+
+ String microServiceBlueprintWithoutRelationships = ResourceFileUtils
+ .getResourceAsString("clds/single-microservice-fragment-without-relationships.yaml");
+ jsonObjectBlueprintWithoutRelationships = yamlToJson(microServiceBlueprintWithoutRelationships);
+
+ }
+
+ @Test
+ public void getNameShouldReturnDefinedName() {
+ final JsonObject jsonObject = jsonObjectBlueprintInvalid;
+ String expectedName = jsonObject.get(jsonObject.keySet().iterator().next()).getAsJsonObject().get("properties")
+ .getAsJsonObject().get("name").getAsString();
+ Entry<String, JsonElement> entry = jsonObject.entrySet().iterator().next();
+ String actualName = BlueprintParser.getName(entry);
+
+ Assert.assertEquals(expectedName, actualName);
+ }
+
+ @Test
+ public void getNameShouldReturnServiceNameWhenNoNameDefined() {
+ final JsonObject jsonObject = jsonObjectBlueprintWithoutName;
+
+ String expectedName = jsonObject.keySet().iterator().next();
+ Entry<String, JsonElement> entry = jsonObject.entrySet().iterator().next();
+ String actualName = BlueprintParser.getName(entry);
+
+ Assert.assertEquals(expectedName, actualName);
+ }
+
+ @Test
+ public void getNameShouldReturnServiceNameWhenNoPropertiesDefined() {
+ final JsonObject jsonObject = jsonObjectBlueprintWithoutProperties;
+
+ String expectedName = jsonObject.keySet().iterator().next();
+ Entry<String, JsonElement> entry = jsonObject.entrySet().iterator().next();
+ String actualName = BlueprintParser.getName(entry);
+
+ Assert.assertEquals(expectedName, actualName);
+ }
+
+ @Test
+ public void getInputShouldReturnInputWhenPresent() {
+ final JsonObject jsonObject = jsonObjectBlueprintInvalid;
+
+ String expected = FIRST_APPP;
+ Entry<String, JsonElement> entry = jsonObject.entrySet().iterator().next();
+ String actual = BlueprintParser.getInput(entry);
+
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void getInputShouldReturnEmptyStringWhenAbsent() {
+ final JsonObject jsonObject = jsonObjectBlueprintWithoutRelationships;
+
+ String expected = "";
+ Entry<String, JsonElement> entry = jsonObject.entrySet().iterator().next();
+ String actual = BlueprintParser.getInput(entry);
+
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test(expected = BlueprintParserException.class)
+ public void getNodeRepresentationFromIncompleteYaml() throws BlueprintParserException {
+ BlueprintParser.getNodeRepresentation(jsonObjectBlueprintInvalid.entrySet().iterator().next(),
+ jsonObjectBlueprintInvalid, null);
+ }
+
+ @Test
+ public void getNodeRepresentationFromCompleteYamlWithModelVersion() throws BlueprintParserException {
+ final JsonObject jsonObject = jsonObjectBlueprintValidWithVersion;
+
+ BlueprintMicroService expected = new BlueprintMicroService(SECOND_APPP, MODEL_TYPE1, "", "10.0.0");
+ Entry<String, JsonElement> entry = jsonObject.entrySet().iterator().next();
+ BlueprintMicroService actual = BlueprintParser.getNodeRepresentation(entry, jsonObject, null);
+
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void getMicroServicesFromBlueprintTest() throws BlueprintParserException {
+ BlueprintMicroService thirdApp = new BlueprintMicroService(THIRD_APPP, MODEL_TYPE_TCA, SECOND_APPP, VERSION);
+ BlueprintMicroService firstApp = new BlueprintMicroService(FIRST_APPP, MODEL_TYPE_TCA, "", VERSION);
+ BlueprintMicroService secondApp = new BlueprintMicroService(SECOND_APPP, MODEL_TYPE_TCA, FIRST_APPP, VERSION);
+
+ Set<BlueprintMicroService> expected = new HashSet<>(Arrays.asList(firstApp, secondApp, thirdApp));
+ Set<BlueprintMicroService> actual = BlueprintParser.getMicroServices(microServiceTheWholeBlueprintValid);
+
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void fallBackToOneMicroServiceTcaTest() {
+ BlueprintMicroService tcaMs = new BlueprintMicroService(BlueprintParser.TCA,
+ "onap.policies.monitoring.cdap.tca.hi.lo.app", "", VERSION);
+ List<BlueprintMicroService> expected = Collections.singletonList(tcaMs);
+ List<BlueprintMicroService> actual = BlueprintParser.fallbackToOneMicroService();
+
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void newMicroServiceTest() throws BlueprintParserException {
+ List<BlueprintMicroService> microServicesChain = new ChainGenerator()
+ .getChainOfMicroServices(BlueprintParser.getMicroServices(newMicroServiceBlueprint));
+ if (microServicesChain.isEmpty()) {
+ microServicesChain = BlueprintParser.fallbackToOneMicroService();
+ }
+ assertThat(microServicesChain.size()).isEqualTo(1);
+ assertThat(microServicesChain.get(0).getName()).isEqualTo("pmsh");
+ }
+
+ private static JsonObject yamlToJson(String yamlString) {
+ Yaml yaml = new Yaml();
+ Map<String, Object> map = yaml.load(yamlString);
+ JSONObject jsonObject = new JSONObject(map);
+ return GSON.fromJson(jsonObject.toString(), JsonObject.class);
+ }
+}