import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.JsonSyntaxException;
-
import java.io.IOException;
-import java.util.HashSet;
import java.util.Set;
-
import javax.transaction.Transactional;
-
import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
import org.apache.camel.builder.ExchangeBuilder;
import org.junit.runner.RunWith;
import org.onap.clamp.clds.Application;
import org.onap.clamp.loop.template.LoopTemplate;
+import org.onap.clamp.loop.template.PolicyModel;
+import org.onap.clamp.loop.template.PolicyModelsService;
import org.onap.clamp.policy.microservice.MicroServicePolicy;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
-
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public class DeployFlowTestItCase {
@Autowired
CamelContext camelContext;
+ @Autowired
+ PolicyModelsService policyModelsService;
+
@Autowired
LoopService loopService;
+ @Autowired
+ LoopsRepository loopsRepository;
+
+ /**
+ * This method tests a deployment a single blueprint.
+ *
+ * @throws JsonSyntaxException In case of issues
+ * @throws IOException In case of issues
+ */
@Test
@Transactional
public void deployWithSingleBlueprintTest() throws JsonSyntaxException, IOException {
- Loop loopTest = createLoop("ControlLoopTest", "<xml></xml>", "yamlcontent", "{\"testname\":\"testvalue\"}",
- "UUID-blueprint");
+ Loop loopTest = createLoop("ControlLoopTest", "yamlcontent",
+ "{\"dcaeDeployParameters\":{\"uniqueBlueprintParameters\": {\"policy_id\": \"name\"}}}",
+ "UUID-blueprint");
LoopTemplate template = new LoopTemplate();
template.setName("templateName");
template.setBlueprint("yamlcontent");
"{\"param1\":\"value1\"}", true);
loopTest.addMicroServicePolicy(microServicePolicy);
loopService.saveOrUpdateLoop(loopTest);
- Exchange myCamelExchange = ExchangeBuilder.anExchange(camelContext)
- .withProperty("loopObject", loopTest).build();
+ Exchange myCamelExchange = ExchangeBuilder.anExchange(camelContext).withProperty("loopObject", loopTest)
+ .build();
- camelContext.createProducerTemplate()
- .send("direct:deploy-loop", myCamelExchange);
+ camelContext.createProducerTemplate().send("direct:deploy-loop", myCamelExchange);
Loop loopAfterTest = loopService.getLoop("ControlLoopTest");
assertThat(loopAfterTest.getDcaeDeploymentStatusUrl()).isNotNull();
assertThat(loopAfterTest.getDcaeDeploymentId()).isNotNull();
}
+ /**
+ * This method tests the deployment of multiple separated blueprints.
+ *
+ * @throws JsonSyntaxException In case of issues
+ * @throws IOException In case of issues
+ */
@Test
@Transactional
public void deployWithMultipleBlueprintTest() throws JsonSyntaxException, IOException {
- Loop loopTest2 = createLoop("ControlLoopTest2", "<xml></xml>", "yamlcontent", "{\"dcaeDeployParameters\": {"
- + "\"microService1\": {\"location_id\": \"\", \"policy_id\": \"TCA_h2NMX_v1_0_ResourceInstanceName1_tca\"},"
- + "\"microService2\": {\"location_id\": \"\", \"policy_id\": \"TCA_h2NMX_v1_0_ResourceInstanceName2_tca\"}"
- + "}}", "UUID-blueprint");
+ Loop loopTest2 = createLoop("ControlLoopTest2", "yamlcontent", "{\"dcaeDeployParameters\": {"
+ + "\"microService1\": {\"location_id\": \"\", \"policy_id\": \"TCA_ResourceInstanceName1_tca\"},"
+ + "\"microService2\": {\"location_id\": \"\", \"policy_id\": \"TCA_ResourceInstanceName2_tca\"}"
+ + "}}", "UUID-blueprint");
LoopTemplate template = new LoopTemplate();
template.setName("templateName");
loopTest2.setLoopTemplate(template);
- MicroServicePolicy microServicePolicy1 = getMicroServicePolicy("microService1", "",
- "{\"configtype\":\"json\"}", "tosca_definitions_version: tosca_simple_yaml_1_0_0",
- "{\"param1\":\"value1\"}", true);
- MicroServicePolicy microServicePolicy2 = getMicroServicePolicy("microService2", "",
- "{\"configtype\":\"json\"}", "tosca_definitions_version: tosca_simple_yaml_1_0_0",
- "{\"param1\":\"value1\"}", true);
+ MicroServicePolicy microServicePolicy1 = getMicroServicePolicy("microService1", "", "{\"configtype\":\"json\"}",
+ "tosca_definitions_version: tosca_simple_yaml_1_0_0", "{\"param1\":\"value1\"}", true);
+ MicroServicePolicy microServicePolicy2 = getMicroServicePolicy("microService2", "", "{\"configtype\":\"json\"}",
+ "tosca_definitions_version: tosca_simple_yaml_1_0_0", "{\"param1\":\"value1\"}", true);
loopTest2.addMicroServicePolicy(microServicePolicy1);
loopTest2.addMicroServicePolicy(microServicePolicy2);
- loopService.saveOrUpdateLoop(loopTest2);
- Exchange myCamelExchange = ExchangeBuilder.anExchange(camelContext)
- .withProperty("loopObject", loopTest2).build();
+ loopsRepository.saveAndFlush(loopTest2);
+ Exchange myCamelExchange = ExchangeBuilder.anExchange(camelContext).withProperty("loopObject", loopTest2)
+ .build();
- camelContext.createProducerTemplate()
- .send("direct:deploy-loop", myCamelExchange);
+ camelContext.createProducerTemplate().send("direct:deploy-loop", myCamelExchange);
Loop loopAfterTest = loopService.getLoop("ControlLoopTest2");
Set<MicroServicePolicy> policyList = loopAfterTest.getMicroServicePolicies();
assertThat(loopAfterTest.getDcaeDeploymentId()).isNull();
}
+ /**
+ * This method tests the undeployment of a single blueprint.
+ *
+ * @throws JsonSyntaxException In case of issues
+ * @throws IOException In case of issues
+ */
@Test
@Transactional
public void undeployWithSingleBlueprintTest() throws JsonSyntaxException, IOException {
- Loop loopTest = createLoop("ControlLoopTest", "<xml></xml>", "yamlcontent", "{\"testname\":\"testvalue\"}",
- "UUID-blueprint");
+ Loop loopTest = createLoop("ControlLoopTest", "yamlcontent", "{\"testname\":\"testvalue\"}",
+ "UUID-blueprint");
LoopTemplate template = new LoopTemplate();
template.setName("templateName");
template.setBlueprint("yamlcontent");
"{\"param1\":\"value1\"}", true);
loopTest.addMicroServicePolicy(microServicePolicy);
loopService.saveOrUpdateLoop(loopTest);
- Exchange myCamelExchange = ExchangeBuilder.anExchange(camelContext)
- .withProperty("loopObject", loopTest).build();
+ Exchange myCamelExchange = ExchangeBuilder.anExchange(camelContext).withProperty("loopObject", loopTest)
+ .build();
- camelContext.createProducerTemplate()
- .send("direct:undeploy-loop", myCamelExchange);
+ camelContext.createProducerTemplate().send("direct:undeploy-loop", myCamelExchange);
Loop loopAfterTest = loopService.getLoop("ControlLoopTest");
assertThat(loopAfterTest.getDcaeDeploymentStatusUrl().contains("/uninstall")).isTrue();
}
+ /**
+ * This method tests the undeployment of multiple separated blueprints.
+ *
+ * @throws JsonSyntaxException In case of issues
+ * @throws IOException In case of issues
+ */
@Test
@Transactional
public void undeployWithMultipleBlueprintTest() throws JsonSyntaxException, IOException {
- Loop loopTest2 = createLoop("ControlLoopTest2", "<xml></xml>", "yamlcontent", "{\"dcaeDeployParameters\": {"
- + "\"microService1\": {\"location_id\": \"\", \"policy_id\": \"TCA_h2NMX_v1_0_ResourceInstanceName1_tca\"},"
- + "\"microService2\": {\"location_id\": \"\", \"policy_id\": \"TCA_h2NMX_v1_0_ResourceInstanceName2_tca\"}"
- + "}}", "UUID-blueprint");
+ Loop loopTest2 = createLoop("ControlLoopTest2", "yamlcontent", "{\"dcaeDeployParameters\": {"
+ + "\"microService1\": {\"location_id\": \"\", \"policy_id\": \"TCA_ResourceInstanceName1_tca\"},"
+ + "\"microService2\": {\"location_id\": \"\", \"policy_id\": \"TCA_ResourceInstanceName2_tca\"}"
+ + "}}", "UUID-blueprint");
LoopTemplate template = new LoopTemplate();
template.setName("templateName");
loopTest2.setLoopTemplate(template);
- MicroServicePolicy microServicePolicy1 = getMicroServicePolicy("microService1", "",
- "{\"configtype\":\"json\"}", "tosca_definitions_version: tosca_simple_yaml_1_0_0",
- "{\"param1\":\"value1\"}", true, "testDeploymentId1", "testDeploymentStatusUrl1");
- MicroServicePolicy microServicePolicy2 = getMicroServicePolicy("microService2", "",
- "{\"configtype\":\"json\"}", "tosca_definitions_version: tosca_simple_yaml_1_0_0",
- "{\"param1\":\"value1\"}", true, "testDeploymentId2", "testDeploymentStatusUrl2");
+ MicroServicePolicy microServicePolicy1 = getMicroServicePolicy("microService1", "", "{\"configtype\":\"json\"}",
+ "tosca_definitions_version: tosca_simple_yaml_1_0_0", "{\"param1\":\"value1\"}", true,
+ "testDeploymentId1", "testDeploymentStatusUrl1");
+ MicroServicePolicy microServicePolicy2 = getMicroServicePolicy("microService2", "", "{\"configtype\":\"json\"}",
+ "tosca_definitions_version: tosca_simple_yaml_1_0_0", "{\"param1\":\"value1\"}", true,
+ "testDeploymentId2", "testDeploymentStatusUrl2");
loopTest2.addMicroServicePolicy(microServicePolicy1);
loopTest2.addMicroServicePolicy(microServicePolicy2);
- loopService.saveOrUpdateLoop(loopTest2);
- Exchange myCamelExchange = ExchangeBuilder.anExchange(camelContext)
- .withProperty("loopObject", loopTest2).build();
+ loopsRepository.saveAndFlush(loopTest2);
+ Exchange myCamelExchange = ExchangeBuilder.anExchange(camelContext).withProperty("loopObject", loopTest2)
+ .build();
- camelContext.createProducerTemplate()
- .send("direct:undeploy-loop", myCamelExchange);
+ camelContext.createProducerTemplate().send("direct:undeploy-loop", myCamelExchange);
Loop loopAfterTest = loopService.getLoop("ControlLoopTest2");
Set<MicroServicePolicy> policyList = loopAfterTest.getMicroServicePolicies();
assertThat(loopAfterTest.getDcaeDeploymentId()).isNull();
}
- private Loop createLoop(String name, String svgRepresentation, String blueprint, String globalPropertiesJson,
- String dcaeBlueprintId) throws JsonSyntaxException, IOException {
- Loop loop = new Loop(name, blueprint, svgRepresentation);
+ /**
+ * This method tests the DCAE get status for a single blueprint.
+ *
+ * @throws JsonSyntaxException In case of issues
+ * @throws IOException In case of issues
+ */
+ @Test
+ @Transactional
+ public void getStatusWithSingleBlueprintTest() throws JsonSyntaxException, IOException {
+ Loop loopTest = createLoop("ControlLoopTest", "yamlcontent", "{\"testname\":\"testvalue\"}",
+ "UUID-blueprint");
+ LoopTemplate template = new LoopTemplate();
+ template.setName("templateName");
+ template.setBlueprint("yamlcontent");
+ loopTest.setLoopTemplate(template);
+ MicroServicePolicy microServicePolicy = getMicroServicePolicy("configPolicyTest", "",
+ "{\"configtype\":\"json\"}", "tosca_definitions_version: tosca_simple_yaml_1_0_0",
+ "{\"param1\":\"value1\"}", true);
+ loopTest.addMicroServicePolicy(microServicePolicy);
+ loopService.saveOrUpdateLoop(loopTest);
+ assertThat(loopTest.getComponents().size()).isEqualTo(2);
+ assertThat(loopTest.getComponent("DCAE")).isNotNull();
+ assertThat(loopTest.getComponent("POLICY")).isNotNull();
+ Exchange myCamelExchange = ExchangeBuilder.anExchange(camelContext).withProperty("loopObject", loopTest)
+ .build();
+
+ camelContext.createProducerTemplate().send("direct:update-dcae-status-for-loop", myCamelExchange);
+
+ assertThat(loopTest.getComponent("DCAE").getState().getStateName()).isEqualTo("BLUEPRINT_DEPLOYED");
+
+ Loop loopAfterTest = loopService.getLoop("ControlLoopTest");
+ assertThat(loopAfterTest.getComponents().size()).isEqualTo(2);
+ assertThat(loopAfterTest.getComponent("DCAE")).isNotNull();
+ assertThat(loopAfterTest.getComponent("POLICY")).isNotNull();
+ }
+
+ /**
+ * This method tests the dcae get status for multiple blueprints.
+ *
+ * @throws JsonSyntaxException In case of issues
+ * @throws IOException In case of issues
+ */
+ @Test
+ @Transactional
+ public void getStatusWithMultipleBlueprintTest() throws JsonSyntaxException, IOException {
+ Loop loopTest = createLoop("ControlLoopTest", "yamlcontent", "{\"testname\":\"testvalue\"}",
+ "UUID-blueprint");
+ LoopTemplate template = new LoopTemplate();
+ template.setName("templateName");
+ loopTest.setLoopTemplate(template);
+ MicroServicePolicy microServicePolicy = getMicroServicePolicy("configPolicyTest", "",
+ "{\"configtype\":\"json\"}", "tosca_definitions_version: tosca_simple_yaml_1_0_0",
+ "{\"param1\":\"value1\"}", true);
+ MicroServicePolicy microServicePolicy2 = getMicroServicePolicy("configPolicyTest2", "",
+ "{\"configtype\":\"json\"}", "tosca_definitions_version: tosca_simple_yaml_1_0_0",
+ "{\"param1\":\"value1\"}", true);
+ loopTest.addMicroServicePolicy(microServicePolicy);
+ loopTest.addMicroServicePolicy(microServicePolicy2);
+ loopService.saveOrUpdateLoop(loopTest);
+ assertThat(loopTest.getComponents().size()).isEqualTo(3);
+ assertThat(loopTest.getComponent("DCAE")).isNull();
+ assertThat(loopTest.getComponent("DCAE_configPolicyTest")).isNotNull();
+ assertThat(loopTest.getComponent("DCAE_configPolicyTest2")).isNotNull();
+ assertThat(loopTest.getComponent("POLICY")).isNotNull();
+ Exchange myCamelExchange = ExchangeBuilder.anExchange(camelContext).withProperty("loopObject", loopTest)
+ .build();
+
+ camelContext.createProducerTemplate().send("direct:update-dcae-status-for-loop", myCamelExchange);
+
+ assertThat(loopTest.getComponent("DCAE_configPolicyTest").getState().getStateName())
+ .isEqualTo("BLUEPRINT_DEPLOYED");
+ assertThat(loopTest.getComponent("DCAE_configPolicyTest2").getState().getStateName())
+ .isEqualTo("BLUEPRINT_DEPLOYED");
+
+ Loop loopAfterTest = loopService.getLoop("ControlLoopTest");
+ assertThat(loopAfterTest.getComponents().size()).isEqualTo(3);
+ assertThat(loopAfterTest.getComponent("DCAE")).isNull();
+ assertThat(loopAfterTest.getComponent("POLICY")).isNotNull();
+ assertThat(loopTest.getComponent("DCAE_configPolicyTest")).isNotNull();
+ assertThat(loopTest.getComponent("DCAE_configPolicyTest2")).isNotNull();
+ }
+
+ private Loop createLoop(String name, String blueprint, String globalPropertiesJson,
+ String dcaeBlueprintId) throws JsonSyntaxException, IOException {
+ Loop loop = new Loop(name);
loop.setGlobalPropertiesJson(new Gson().fromJson(globalPropertiesJson, JsonObject.class));
loop.setLastComputedState(LoopState.DESIGN);
- loop.setDcaeBlueprintId(dcaeBlueprintId);
return loop;
}
private MicroServicePolicy getMicroServicePolicy(String name, String modelType, String jsonRepresentation,
- String policyTosca, String jsonProperties, boolean shared) {
- MicroServicePolicy microService = new MicroServicePolicy(name, modelType, policyTosca, shared,
- gson.fromJson(jsonRepresentation, JsonObject.class), new HashSet<>());
+ String policyTosca, String jsonProperties, boolean shared) {
+
+ PolicyModel policyModel = new PolicyModel(modelType, policyTosca, "1.0.0");
+ policyModelsService.saveOrUpdatePolicyModel(policyModel);
+ MicroServicePolicy microService = new MicroServicePolicy(name, policyModel,
+ shared,
+ gson.fromJson(jsonRepresentation, JsonObject.class), null, null, null);
+
microService.setConfigurationsJson(new Gson().fromJson(jsonProperties, JsonObject.class));
return microService;
}
private MicroServicePolicy getMicroServicePolicy(String name, String modelType, String jsonRepresentation,
- String policyTosca, String jsonProperties, boolean shared, String deploymengId, String deploymentStatusUrl) {
- MicroServicePolicy microService = getMicroServicePolicy(name, modelType, jsonRepresentation,
- policyTosca, jsonProperties, shared);
+ String policyTosca, String jsonProperties, boolean shared,
+ String deploymengId,
+ String deploymentStatusUrl) {
+ MicroServicePolicy microService = getMicroServicePolicy(name, modelType, jsonRepresentation, policyTosca,
+ jsonProperties, shared);
microService.setDcaeDeploymentId(deploymengId);
microService.setDcaeDeploymentStatusUrl(deploymentStatusUrl);