diff options
author | Krysiak Adam <adam.krysiak@nokia.com> | 2019-03-01 15:32:19 +0100 |
---|---|---|
committer | Krysiak Adam <adam.krysiak@nokia.com> | 2019-03-07 13:08:41 +0100 |
commit | 5f14c7ada8aca6bdfecdb4ac3bd2d1387315250c (patch) | |
tree | 3ac6c5b9a7abbc8a7dd6643cd02a0dc71d6d52ec /src/test/java | |
parent | e577b6a44e1dda60fb68543bcdfc627f111b4a97 (diff) |
created Api for closed loop managing
Change-Id: Ib6bd92d1ae3119a857c5a63df10e8f9bb130f75f
Issue-ID: CLAMP-301
Signed-off-by: Krysiak Adam <adam.krysiak@nokia.com>
Diffstat (limited to 'src/test/java')
-rw-r--r-- | src/test/java/org/onap/clamp/clds/it/HttpsItCase.java | 2 | ||||
-rw-r--r-- | src/test/java/org/onap/clamp/loop/LoopRepositoriesItCase.java (renamed from src/test/java/org/onap/clamp/it/dao/model/LoopRepositoriesItCase.java) | 45 | ||||
-rw-r--r-- | src/test/java/org/onap/clamp/loop/LoopServiceTestItCase.java | 270 | ||||
-rw-r--r-- | src/test/java/org/onap/clamp/loop/LoopToJsonTest.java (renamed from src/test/java/org/onap/clamp/dao/model/LoopToJsonTest.java) | 33 |
4 files changed, 307 insertions, 43 deletions
diff --git a/src/test/java/org/onap/clamp/clds/it/HttpsItCase.java b/src/test/java/org/onap/clamp/clds/it/HttpsItCase.java index 81b6b835..57dbcf7a 100644 --- a/src/test/java/org/onap/clamp/clds/it/HttpsItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/HttpsItCase.java @@ -130,7 +130,7 @@ public class HttpsItCase { }); template.setRequestFactory(factory); ResponseEntity<String> httpsEntity = template - .getForEntity("https://localhost:" + this.httpsPort + "/restservices/clds/v1/api-doc", String.class); + .getForEntity("https://localhost:" + this.httpsPort + "/restservices/clds/api-doc", String.class); assertThat(httpsEntity.getStatusCode()).isEqualTo(HttpStatus.OK); assertThat(httpsEntity.getBody()).contains("swagger"); FileUtils.writeStringToFile( diff --git a/src/test/java/org/onap/clamp/it/dao/model/LoopRepositoriesItCase.java b/src/test/java/org/onap/clamp/loop/LoopRepositoriesItCase.java index 8a523fc0..c524eec3 100644 --- a/src/test/java/org/onap/clamp/it/dao/model/LoopRepositoriesItCase.java +++ b/src/test/java/org/onap/clamp/loop/LoopRepositoriesItCase.java @@ -21,7 +21,7 @@ * */ -package org.onap.clamp.it.dao.model; +package org.onap.clamp.loop; import static org.assertj.core.api.Assertions.assertThat; @@ -31,19 +31,17 @@ import com.google.gson.JsonObject; import java.time.Instant; +import java.util.HashSet; import org.junit.Test; import org.junit.runner.RunWith; import org.onap.clamp.clds.Application; -import org.onap.clamp.dao.LoopLogRepository; -import org.onap.clamp.dao.LoopsRepository; -import org.onap.clamp.dao.MicroServicePolicyRepository; -import org.onap.clamp.dao.OperationalPolicyRepository; -import org.onap.clamp.dao.model.LogType; -import org.onap.clamp.dao.model.Loop; -import org.onap.clamp.dao.model.LoopLog; -import org.onap.clamp.dao.model.LoopState; -import org.onap.clamp.dao.model.MicroServicePolicy; -import org.onap.clamp.dao.model.OperationalPolicy; +import org.onap.clamp.loop.log.LogType; +import org.onap.clamp.loop.log.LoopLog; +import org.onap.clamp.loop.log.LoopLogRepository; +import org.onap.clamp.policy.microservice.MicroServicePolicy; +import org.onap.clamp.policy.microservice.MicroservicePolicyService; +import org.onap.clamp.policy.operational.OperationalPolicy; +import org.onap.clamp.policy.operational.OperationalPolicyService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @@ -59,19 +57,16 @@ public class LoopRepositoriesItCase { private LoopsRepository loopRepository; @Autowired - private MicroServicePolicyRepository microServicePolicyRepository; + private MicroservicePolicyService microServicePolicyService; @Autowired - private OperationalPolicyRepository operationalPolicyRepository; + private OperationalPolicyService operationalPolicyService; @Autowired private LoopLogRepository loopLogRepository; private OperationalPolicy getOperationalPolicy(String configJson, String name) { - OperationalPolicy opPolicy = new OperationalPolicy(); - opPolicy.setName(name); - opPolicy.setConfigurationsJson(new Gson().fromJson(configJson, JsonObject.class)); - return opPolicy; + return new OperationalPolicy(name, null, new Gson().fromJson(configJson, JsonObject.class)); } private Loop getLoop(String name, String svgRepresentation, String blueprint, String globalPropertiesJson, @@ -90,13 +85,9 @@ public class LoopRepositoriesItCase { private MicroServicePolicy getMicroServicePolicy(String name, String jsonRepresentation, String policyTosca, String jsonProperties, boolean shared) { - MicroServicePolicy µService = new MicroServicePolicy(); - µService.setJsonRepresentation(new Gson().fromJson(jsonRepresentation, JsonObject.class)); - µService.setPolicyTosca(policyTosca); + MicroServicePolicy µService = new MicroServicePolicy(name, policyTosca, shared, + gson.fromJson(jsonRepresentation, JsonObject.class), new HashSet<>()); µService.setProperties(new Gson().fromJson(jsonProperties, JsonObject.class)); - µService.setShared(shared); - - µService.setName(name); return µService; } @@ -129,8 +120,8 @@ public class LoopRepositoriesItCase { assertThat(loopInDb).isEqualToComparingFieldByField(loopTest); assertThat(loopRepository.existsById(loopTest.getName())).isEqualTo(true); - assertThat(operationalPolicyRepository.existsById(opPolicy.getName())).isEqualTo(true); - assertThat(microServicePolicyRepository.existsById(microServicePolicy.getName())).isEqualTo(true); + assertThat(operationalPolicyService.isExisting(opPolicy.getName())).isEqualTo(true); + assertThat(microServicePolicyService.isExisting(microServicePolicy.getName())).isEqualTo(true); assertThat(loopLogRepository.existsById(loopLog.getId())).isEqualTo(true); // Now attempt to read from database @@ -152,8 +143,8 @@ public class LoopRepositoriesItCase { // Attempt to delete the object and check it has well been cascaded loopRepository.delete(loopInDbRetrieved); assertThat(loopRepository.existsById(loopTest.getName())).isEqualTo(false); - assertThat(operationalPolicyRepository.existsById(opPolicy.getName())).isEqualTo(false); - assertThat(microServicePolicyRepository.existsById(microServicePolicy.getName())).isEqualTo(false); + assertThat(operationalPolicyService.isExisting(opPolicy.getName())).isEqualTo(false); + assertThat(microServicePolicyService.isExisting(microServicePolicy.getName())).isEqualTo(false); assertThat(loopLogRepository.existsById(loopLog.getId())).isEqualTo(false); } diff --git a/src/test/java/org/onap/clamp/loop/LoopServiceTestItCase.java b/src/test/java/org/onap/clamp/loop/LoopServiceTestItCase.java new file mode 100644 index 00000000..a9c30873 --- /dev/null +++ b/src/test/java/org/onap/clamp/loop/LoopServiceTestItCase.java @@ -0,0 +1,270 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2019 Nokia Intellectual Property. All rights + * reserved. + * ================================================================================ + * 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.clamp.loop; + +import static org.assertj.core.api.Assertions.assertThat; + +import com.google.gson.JsonObject; +import java.util.Set; +import java.util.stream.Collectors; +import org.assertj.core.util.Lists; +import org.junit.After; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.onap.clamp.clds.Application; +import org.onap.clamp.clds.util.JsonUtils; +import org.onap.clamp.policy.microservice.MicroServicePolicy; +import org.onap.clamp.policy.operational.OperationalPolicy; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.transaction.annotation.Transactional; + +@RunWith(SpringJUnit4ClassRunner.class) +@SpringBootTest(classes = Application.class) +public class LoopServiceTestItCase { + + private static final String EXAMPLE_LOOP_NAME = "ClosedLoopTest"; + private static final String EXAMPLE_JSON = "{\"testName\":\"testValue\"}"; + + @Autowired + LoopService loopService; + + @Autowired + LoopsRepository loopsRepository; + + @After + public void tearDown() { + loopsRepository.deleteAll(); + } + + @Test + public void shouldCreateEmptyLoop() { + //given + String loopBlueprint = "blueprint"; + String loopSvg = "representation"; + Loop testLoop = createTestLoop(EXAMPLE_LOOP_NAME, loopBlueprint, loopSvg); + testLoop.setGlobalPropertiesJson(JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class)); + testLoop.setLastComputedState(LoopState.DESIGN); + + //when + Loop actualLoop = loopService.addNewLoop(testLoop); + + //then + assertThat(actualLoop).isNotNull(); + assertThat(actualLoop).isEqualTo(loopsRepository.findById(actualLoop.getName()).get()); + assertThat(actualLoop.getName()).isEqualTo(EXAMPLE_LOOP_NAME); + assertThat(actualLoop.getBlueprint()).isEqualTo(loopBlueprint); + assertThat(actualLoop.getSvgRepresentation()).isEqualTo(loopSvg); + assertThat(actualLoop.getGlobalPropertiesJson().getAsJsonPrimitive("testName").getAsString()) + .isEqualTo("testValue"); + } + + @Test + public void shouldAddOperationalPolicyToLoop() { + //given + saveTestLoopToDb(); + JsonObject confJson = JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class); + String policyName = "policyName"; + OperationalPolicy operationalPolicy = new OperationalPolicy(policyName, null, confJson); + + //when + Loop actualLoop = loopService + .updateOperationalPolicies(EXAMPLE_LOOP_NAME, Lists.newArrayList(operationalPolicy)); + + //then + assertThat(actualLoop).isNotNull(); + assertThat(actualLoop.getName()).isEqualTo(EXAMPLE_LOOP_NAME); + Set<OperationalPolicy> savedPolicies = actualLoop.getOperationalPolicies(); + assertThat(savedPolicies).hasSize(1); + assertThat(savedPolicies) + .usingElementComparatorIgnoringFields("loop") + .contains(operationalPolicy); + OperationalPolicy savedPolicy = savedPolicies.iterator().next(); + assertThat(savedPolicy.getLoop().getName()).isEqualTo(EXAMPLE_LOOP_NAME); + + } + + @Test + public void shouldAddMicroservicePolicyToLoop() { + //given + saveTestLoopToDb(); + JsonObject confJson = JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class); + String policyName = "policyName"; + String policyTosca = "policyTosca"; + MicroServicePolicy microServicePolicy = new MicroServicePolicy(policyName, policyTosca, false, confJson, null); + + //when + Loop actualLoop = loopService + .updateMicroservicePolicies(EXAMPLE_LOOP_NAME, Lists.newArrayList(microServicePolicy)); + + //then + assertThat(actualLoop).isNotNull(); + assertThat(actualLoop.getName()).isEqualTo(EXAMPLE_LOOP_NAME); + Set<MicroServicePolicy> savedPolicies = actualLoop.getMicroServicePolicies(); + assertThat(savedPolicies).hasSize(1); + assertThat(savedPolicies).usingElementComparatorIgnoringFields("usedByLoops") + .containsExactly(microServicePolicy); + assertThat(savedPolicies).extracting("usedByLoops") + .hasSize(1); + + } + + @Test + @Transactional + public void shouldCreateNewMicroservicePolicyAndUpdateJsonRepresentationOfOldOne() { + //given + saveTestLoopToDb(); + String firstPolicyName = "firstPolicyName"; + JsonObject newJsonRepresentation = JsonUtils.GSON.fromJson("{}", JsonObject.class); + String secondPolicyName = "secondPolicyName"; + String secondPolicyTosca = "secondPolicyTosca"; + MicroServicePolicy firstMicroServicePolicy = new MicroServicePolicy(firstPolicyName, "policyTosca", + false, JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class), null); + loopService.updateMicroservicePolicies(EXAMPLE_LOOP_NAME, Lists.newArrayList(firstMicroServicePolicy)); + + MicroServicePolicy secondMicroServicePolicy = new MicroServicePolicy(secondPolicyName, secondPolicyTosca, true, + newJsonRepresentation, null); + + //when + firstMicroServicePolicy.setJsonRepresentation(newJsonRepresentation); + Loop actualLoop = loopService.updateMicroservicePolicies(EXAMPLE_LOOP_NAME, + Lists.newArrayList(firstMicroServicePolicy, secondMicroServicePolicy)); + + //then + assertThat(actualLoop).isNotNull(); + assertThat(actualLoop.getName()).isEqualTo(EXAMPLE_LOOP_NAME); + Set<MicroServicePolicy> savedPolicies = actualLoop.getMicroServicePolicies(); + assertThat(savedPolicies).hasSize(2); + assertThat(savedPolicies).usingElementComparatorIgnoringFields("usedByLoops") + .containsExactlyInAnyOrder(firstMicroServicePolicy, secondMicroServicePolicy); + + } + + private void saveTestLoopToDb() { + Loop testLoop = createTestLoop(EXAMPLE_LOOP_NAME, "blueprint", "representation"); + testLoop.setGlobalPropertiesJson(JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class)); + loopService.addNewLoop(testLoop); + } + + @Test + public void shouldRemoveOldMicroservicePolicyIfNotInUpdatedList() { + //given + saveTestLoopToDb(); + + JsonObject jsonRepresentation = JsonUtils.GSON.fromJson("{}", JsonObject.class); + String firstPolicyName = "firstPolicyName"; + String secondPolicyName = "policyName"; + String secondPolicyTosca = "secondPolicyTosca"; + MicroServicePolicy firstMicroServicePolicy = new MicroServicePolicy(firstPolicyName, "policyTosca", + false, JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class), null); + loopService.updateMicroservicePolicies(EXAMPLE_LOOP_NAME, Lists.newArrayList(firstMicroServicePolicy)); + + MicroServicePolicy secondMicroServicePolicy = new MicroServicePolicy(secondPolicyName, secondPolicyTosca, true, + jsonRepresentation, null); + + //when + Loop actualLoop = loopService + .updateMicroservicePolicies(EXAMPLE_LOOP_NAME, Lists.newArrayList(secondMicroServicePolicy)); + + //then + assertThat(actualLoop).isNotNull(); + assertThat(actualLoop.getName()).isEqualTo(EXAMPLE_LOOP_NAME); + Set<MicroServicePolicy> savedPolicies = actualLoop.getMicroServicePolicies(); + assertThat(savedPolicies).hasSize(1); + assertThat(savedPolicies).usingElementComparatorIgnoringFields("usedByLoops") + .containsExactly(secondMicroServicePolicy); + + } + + @Test + @Transactional + public void shouldCreateNewOperationalPolicyAndUpdateJsonRepresentationOfOldOne() { + //given + saveTestLoopToDb(); + + String firstPolicyName = "firstPolicyName"; + JsonObject newJsonConfiguration = JsonUtils.GSON.fromJson("{}", JsonObject.class); + String secondPolicyName = "secondPolicyName"; + OperationalPolicy firstOperationalPolicy = new OperationalPolicy(firstPolicyName, null, + JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class)); + loopService.updateOperationalPolicies(EXAMPLE_LOOP_NAME, Lists.newArrayList(firstOperationalPolicy)); + + OperationalPolicy secondOperationalPolicy = new OperationalPolicy(secondPolicyName, null, newJsonConfiguration); + + //when + firstOperationalPolicy.setConfigurationsJson(newJsonConfiguration); + Loop actualLoop = loopService.updateOperationalPolicies(EXAMPLE_LOOP_NAME, + Lists.newArrayList(firstOperationalPolicy, secondOperationalPolicy)); + + //then + assertThat(actualLoop).isNotNull(); + assertThat(actualLoop.getName()).isEqualTo(EXAMPLE_LOOP_NAME); + Set<OperationalPolicy> savedPolicies = actualLoop.getOperationalPolicies(); + assertThat(savedPolicies).hasSize(2); + assertThat(savedPolicies).usingElementComparatorIgnoringFields("loop") + .containsExactlyInAnyOrder(firstOperationalPolicy, secondOperationalPolicy); + Set<String> policiesLoops = Lists.newArrayList(savedPolicies).stream() + .map(OperationalPolicy::getLoop) + .map(Loop::getName) + .collect(Collectors.toSet()); + assertThat(policiesLoops) + .containsExactly(EXAMPLE_LOOP_NAME); + } + + @Test + public void shouldRemoveOldOperationalPolicyIfNotInUpdatedList() { + //given + saveTestLoopToDb(); + + JsonObject jsonRepresentation = JsonUtils.GSON.fromJson("{}", JsonObject.class); + String firstPolicyName = "firstPolicyName"; + String secondPolicyName = "policyName"; + OperationalPolicy firstOperationalPolicy = new OperationalPolicy(firstPolicyName, null, + JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class)); + loopService.updateOperationalPolicies(EXAMPLE_LOOP_NAME, Lists.newArrayList(firstOperationalPolicy)); + + OperationalPolicy secondOperationalPolicy = new OperationalPolicy(secondPolicyName, null, jsonRepresentation); + + //when + Loop actualLoop = loopService + .updateOperationalPolicies(EXAMPLE_LOOP_NAME, Lists.newArrayList(secondOperationalPolicy)); + + //then + assertThat(actualLoop).isNotNull(); + assertThat(actualLoop.getName()).isEqualTo(EXAMPLE_LOOP_NAME); + Set<OperationalPolicy> savedPolicies = actualLoop.getOperationalPolicies(); + assertThat(savedPolicies).hasSize(1); + assertThat(savedPolicies).usingElementComparatorIgnoringFields("loop") + .containsExactly(secondOperationalPolicy); + OperationalPolicy savedPolicy = savedPolicies.iterator().next(); + assertThat(savedPolicy.getLoop().getName()).isEqualTo(EXAMPLE_LOOP_NAME); + + } + + private Loop createTestLoop(String loopName, String loopBlueprint, String loopSvg) { + return new Loop(loopName, loopBlueprint, loopSvg); + } +}
\ No newline at end of file diff --git a/src/test/java/org/onap/clamp/dao/model/LoopToJsonTest.java b/src/test/java/org/onap/clamp/loop/LoopToJsonTest.java index 2d9bfd2d..92a0e14c 100644 --- a/src/test/java/org/onap/clamp/dao/model/LoopToJsonTest.java +++ b/src/test/java/org/onap/clamp/loop/LoopToJsonTest.java @@ -21,7 +21,7 @@ * */ -package org.onap.clamp.dao.model; +package org.onap.clamp.loop; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.assertNotNull; @@ -29,26 +29,27 @@ import static org.junit.Assert.assertNotNull; import com.google.gson.Gson; import com.google.gson.JsonObject; +import java.util.HashSet; import java.util.Random; import org.junit.Test; +import org.onap.clamp.loop.log.LogType; +import org.onap.clamp.loop.log.LoopLog; +import org.onap.clamp.policy.microservice.MicroServicePolicy; +import org.onap.clamp.policy.operational.OperationalPolicy; import org.onap.clamp.clds.util.JsonUtils; public class LoopToJsonTest { + private Gson gson = new Gson(); + private OperationalPolicy getOperationalPolicy(String configJson, String name) { - OperationalPolicy opPolicy = new OperationalPolicy(); - opPolicy.setName(name); - opPolicy.setConfigurationsJson(new Gson().fromJson(configJson, JsonObject.class)); - return opPolicy; + return new OperationalPolicy(name, null, gson.fromJson(configJson, JsonObject.class)); } private Loop getLoop(String name, String svgRepresentation, String blueprint, String globalPropertiesJson, String dcaeId, String dcaeUrl, String dcaeBlueprintId) { - Loop loop = new Loop(); - loop.setName(name); - loop.setSvgRepresentation(svgRepresentation); - loop.setBlueprint(blueprint); + Loop loop = new Loop(name, blueprint, svgRepresentation); loop.setGlobalPropertiesJson(new Gson().fromJson(globalPropertiesJson, JsonObject.class)); loop.setLastComputedState(LoopState.DESIGN); loop.setDcaeDeploymentId(dcaeId); @@ -59,13 +60,10 @@ public class LoopToJsonTest { private MicroServicePolicy getMicroServicePolicy(String name, String jsonRepresentation, String policyTosca, String jsonProperties, boolean shared) { - MicroServicePolicy µService = new MicroServicePolicy(); - µService.setJsonRepresentation(new Gson().fromJson(jsonRepresentation, JsonObject.class)); - µService.setPolicyTosca(policyTosca); + MicroServicePolicy µService = new MicroServicePolicy(name, policyTosca, shared, + gson.fromJson(jsonRepresentation, JsonObject.class), new HashSet<>()); µService.setProperties(new Gson().fromJson(jsonProperties, JsonObject.class)); - µService.setShared(shared); - µService.setName(name); return µService; } @@ -94,7 +92,12 @@ public class LoopToJsonTest { System.out.println(jsonSerialized); Loop loopTestDeserialized = JsonUtils.GSON_JPA_MODEL.fromJson(jsonSerialized, Loop.class); assertNotNull(loopTestDeserialized); - assertThat(loopTestDeserialized).isEqualToComparingFieldByField(loopTest); + assertThat(loopTestDeserialized).isEqualToIgnoringGivenFields(loopTest, "svgRepresentation", "blueprint"); + + //svg and blueprint not exposed so wont be deserialized + assertThat(loopTestDeserialized.getBlueprint()).isEqualTo(null); + assertThat(loopTestDeserialized.getSvgRepresentation()).isEqualTo(null); + assertThat(loopTestDeserialized.getOperationalPolicies()).containsExactly(opPolicy); assertThat(loopTestDeserialized.getMicroServicePolicies()).containsExactly(microServicePolicy); assertThat(loopTestDeserialized.getLoopLogs()).containsExactly(loopLog); |