summaryrefslogtreecommitdiffstats
path: root/controlloop/common/policy-yaml/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'controlloop/common/policy-yaml/src/test')
-rw-r--r--controlloop/common/policy-yaml/src/test/java/org/onap/policy/controlloop/compiler/CompilerExceptionTest.java30
-rw-r--r--controlloop/common/policy-yaml/src/test/java/org/onap/policy/controlloop/compiler/ControlLoopCompilerTest.java167
-rw-r--r--controlloop/common/policy-yaml/src/test/java/org/onap/policy/controlloop/policy/ControlLoopPolicyBuilderTest.java363
-rw-r--r--controlloop/common/policy-yaml/src/test/java/org/onap/policy/controlloop/policy/ControlLoopTest.java171
-rw-r--r--controlloop/common/policy-yaml/src/test/java/org/onap/policy/controlloop/policy/OperationsAccumulateParamsTest.java116
-rw-r--r--controlloop/common/policy-yaml/src/test/java/org/onap/policy/controlloop/policy/guard/ConstraintTest.java249
-rw-r--r--controlloop/common/policy-yaml/src/test/java/org/onap/policy/controlloop/policy/guard/ControlLoopGuardTest.java64
-rw-r--r--controlloop/common/policy-yaml/src/test/java/org/onap/policy/controlloop/policy/guard/GuardPolicyTest.java267
-rw-r--r--controlloop/common/policy-yaml/src/test/resources/v1.0.0/bad_control_loop_no_control_loop_name.yaml23
-rw-r--r--controlloop/common/policy-yaml/src/test/resources/v1.0.0/bad_policy_failure_connected_to_unknown_policy.yaml (renamed from controlloop/common/policy-yaml/src/test/resources/v1.0.0/bad_policies_1.yaml)10
-rw-r--r--controlloop/common/policy-yaml/src/test/resources/v1.0.0/bad_policy_failure_exception_connected_to_unknown_policy.yaml23
-rw-r--r--controlloop/common/policy-yaml/src/test/resources/v1.0.0/bad_policy_failure_guard_connected_to_unknown_policy.yaml23
-rw-r--r--controlloop/common/policy-yaml/src/test/resources/v1.0.0/bad_policy_failure_retries_connected_to_unknown_policy.yaml23
-rw-r--r--controlloop/common/policy-yaml/src/test/resources/v1.0.0/bad_policy_failure_timeout_connected_to_unknown_policy.yaml23
-rw-r--r--controlloop/common/policy-yaml/src/test/resources/v1.0.0/bad_policy_success_connected_to_unknown_policy.yaml23
-rw-r--r--controlloop/common/policy-yaml/src/test/resources/v1.0.0/bad_trigger_no_trigger_id.yaml21
-rw-r--r--controlloop/common/policy-yaml/src/test/resources/v1.0.0/empty.yaml0
-rw-r--r--controlloop/common/policy-yaml/src/test/resources/v1.0.0/test.yaml273
18 files changed, 1799 insertions, 70 deletions
diff --git a/controlloop/common/policy-yaml/src/test/java/org/onap/policy/controlloop/compiler/CompilerExceptionTest.java b/controlloop/common/policy-yaml/src/test/java/org/onap/policy/controlloop/compiler/CompilerExceptionTest.java
new file mode 100644
index 000000000..0ec882fef
--- /dev/null
+++ b/controlloop/common/policy-yaml/src/test/java/org/onap/policy/controlloop/compiler/CompilerExceptionTest.java
@@ -0,0 +1,30 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2018 Ericsson. 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.policy.controlloop.compiler;
+
+import org.junit.Test;
+import org.onap.policy.common.utils.test.ExceptionsTester;
+
+public class CompilerExceptionTest extends ExceptionsTester{
+
+ @Test
+ public void test() throws Exception {
+ test(CompilerException.class);
+ }
+
+}
diff --git a/controlloop/common/policy-yaml/src/test/java/org/onap/policy/controlloop/compiler/ControlLoopCompilerTest.java b/controlloop/common/policy-yaml/src/test/java/org/onap/policy/controlloop/compiler/ControlLoopCompilerTest.java
index ee5ed785d..048aef270 100644
--- a/controlloop/common/policy-yaml/src/test/java/org/onap/policy/controlloop/compiler/ControlLoopCompilerTest.java
+++ b/controlloop/common/policy-yaml/src/test/java/org/onap/policy/controlloop/compiler/ControlLoopCompilerTest.java
@@ -27,48 +27,135 @@ import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.onap.policy.controlloop.policy.ControlLoopPolicy;
+import org.onap.policy.controlloop.policy.FinalResult;
public class ControlLoopCompilerTest {
+
+ @Rule
+ public ExpectedException expectedException = ExpectedException.none();
@Test
- public void testTest() {
- try {
- this.test("src/test/resources/v1.0.0/test.yaml");
- } catch (Exception e) {
- fail(e.getMessage());
- }
+ public void testTest() throws Exception {
+ List<String> expectedOnErrorMessages = new ArrayList<>();
+ expectedOnErrorMessages.add("Operational Policy has an bad ID");
+ expectedOnErrorMessages.add("Policy id is set to a PolicyResult SUCCESS");
+ expectedOnErrorMessages.add("Policy id is set to a FinalResult FINAL_SUCCESS");
+ expectedOnErrorMessages.add("Policy actor is null");
+ expectedOnErrorMessages.add("Policy actor is invalid");
+ expectedOnErrorMessages.add("Policy recipe is null");
+ expectedOnErrorMessages.add("Policy recipe is invalid");
+ expectedOnErrorMessages.add("Policy recipe is invalid");
+ expectedOnErrorMessages.add("Policy recipe is invalid");
+ expectedOnErrorMessages.add("Policy target is null");
+ expectedOnErrorMessages.add("Policy target is invalid");
+ expectedOnErrorMessages.add("Policy success is neither another policy nor FINAL_SUCCESS");
+ expectedOnErrorMessages.add("Policy failure is neither another policy nor FINAL_FAILURE");
+ expectedOnErrorMessages.add("Policy failure retries is neither another policy nor FINAL_FAILURE_RETRIES");
+ expectedOnErrorMessages.add("Policy failure timeout is neither another policy nor FINAL_FAILURE_TIMEOUT");
+ expectedOnErrorMessages.add("Policy failure exception is neither another policy nor FINAL_FAILURE_EXCEPTION");
+ expectedOnErrorMessages.add("Policy failure guard is neither another policy nor FINAL_FAILURE_GUARD");
+ expectedOnErrorMessages.add("Unsupported version for this compiler");
+ expectedOnErrorMessages.add("controlLoop overall timeout is less than the sum of operational policy timeouts.");
+
+ TestControlLoopCompilerCallback testControlLoopCompilerCallback = new TestControlLoopCompilerCallback(expectedOnErrorMessages);
+ ControlLoopPolicy controlLoopPolicy = this.test("src/test/resources/v1.0.0/test.yaml", testControlLoopCompilerCallback);
+ assertEquals(22, controlLoopPolicy.getPolicies().size());
+ assertTrue(testControlLoopCompilerCallback.areAllExpectedOnErrorsReceived());
+ }
+
+ @Test
+ public void testSuccessConnectedToUnknownPolicy() throws Exception {
+ expectedException.expect(CompilerException.class);
+ expectedException.expectMessage("Operation Policy unique-policy-id-1-restart is connected to unknown policy unknown-policy");
+ this.test("src/test/resources/v1.0.0/bad_policy_success_connected_to_unknown_policy.yaml");
+ }
+
+ @Test
+ public void testFailureConnectedToUnknownPolicy() throws Exception {
+ expectedException.expect(CompilerException.class);
+ expectedException.expectMessage("Operation Policy unique-policy-id-1-restart is connected to unknown policy unknown-policy");
+ this.test("src/test/resources/v1.0.0/bad_policy_failure_connected_to_unknown_policy.yaml");
+ }
+
+ @Test
+ public void testFailureTimeoutToUnknownPolicy() throws Exception {
+ expectedException.expect(CompilerException.class);
+ expectedException.expectMessage("Operation Policy unique-policy-id-1-restart is connected to unknown policy unknown-policy");
+ this.test("src/test/resources/v1.0.0/bad_policy_failure_timeout_connected_to_unknown_policy.yaml");
+ }
+
+ @Test
+ public void testFailureRetriesToUnknownPolicy() throws Exception {
+ expectedException.expect(CompilerException.class);
+ expectedException.expectMessage("Operation Policy unique-policy-id-1-restart is connected to unknown policy unknown-policy");
+ this.test("src/test/resources/v1.0.0/bad_policy_failure_retries_connected_to_unknown_policy.yaml");
+ }
+
+ @Test
+ public void testFailureExceptionToUnknownPolicy() throws Exception {
+ expectedException.expect(CompilerException.class);
+ expectedException.expectMessage("Operation Policy unique-policy-id-1-restart is connected to unknown policy unknown-policy");
+ this.test("src/test/resources/v1.0.0/bad_policy_failure_exception_connected_to_unknown_policy.yaml");
+ }
+
+ @Test
+ public void testFailureGuardToUnknownPolicy() throws Exception {
+ expectedException.expect(CompilerException.class);
+ expectedException.expectMessage("Operation Policy unique-policy-id-1-restart is connected to unknown policy unknown-policy");
+ this.test("src/test/resources/v1.0.0/bad_policy_failure_guard_connected_to_unknown_policy.yaml");
}
@Test
- public void testBad1() {
- try {
- this.test("src/test/resources/v1.0.0/bad_trigger_1.yaml");
- } catch (Exception e) {
- e.printStackTrace();
- }
+ public void testInvalidTriggerPolicyId() throws Exception {
+ expectedException.expect(CompilerException.class);
+ expectedException.expectMessage("Unexpected value for trigger_policy, should only be " + FinalResult.FINAL_OPENLOOP.toString() + " or a valid Policy ID");
+ this.test("src/test/resources/v1.0.0/bad_trigger_1.yaml");
}
+
@Test
- public void testBad2() {
- try {
- this.test("src/test/resources/v1.0.0/bad_trigger_2.yaml");
- } catch (Exception e) {
- e.printStackTrace();
- }
+ public void testNoTriggerPolicyId() throws Exception {
+ expectedException.expect(CompilerException.class);
+ this.test("src/test/resources/v1.0.0/bad_trigger_no_trigger_id.yaml");
}
@Test
- public void testBad() {
- try {
- this.test("src/test/resources/v1.0.0/bad_policies_1.yaml");
- } catch (Exception e) {
- }
+ public void testNoControlLoopName() throws Exception {
+ List<String> expectedOnErrorMessages = new ArrayList<>();
+ expectedOnErrorMessages.add("Missing controlLoopName");
+ expectedOnErrorMessages.add("Unsupported version for this compiler");
+ TestControlLoopCompilerCallback testControlLoopCompilerCallback = new TestControlLoopCompilerCallback(expectedOnErrorMessages);
+ this.test("src/test/resources/v1.0.0/bad_control_loop_no_control_loop_name.yaml", testControlLoopCompilerCallback);
+ assertTrue(testControlLoopCompilerCallback.areAllExpectedOnErrorsReceived());
+ }
+
+ @Test
+ public void testInvalidFinalResult() throws Exception {
+ expectedException.expect(CompilerException.class);
+ expectedException.expectMessage("Unexpected Final Result for trigger_policy, should only be FINAL_OPENLOOP or a valid Policy ID");
+ this.test("src/test/resources/v1.0.0/bad_trigger_2.yaml");
+ }
+
+ @Test
+ public void testCompileEmptyFile() throws Exception {
+ expectedException.expect(CompilerException.class);
+ expectedException.expectMessage("Could not parse yaml specification.");
+ this.test("src/test/resources/v1.0.0/empty.yaml");
+ }
+
+ public ControlLoopPolicy test(String testFile) throws Exception {
+ return test(testFile, null);
}
- public void test(String testFile) throws Exception {
+ public ControlLoopPolicy test(String testFile, ControlLoopCompilerCallback controlLoopCompilerCallback) throws Exception {
try (InputStream is = new FileInputStream(new File(testFile))) {
- ControlLoopCompiler.compile(is, null);
+ return ControlLoopCompiler.compile(is, controlLoopCompilerCallback);
} catch (FileNotFoundException e) {
fail(e.getMessage());
} catch (IOException e) {
@@ -76,6 +163,36 @@ public class ControlLoopCompilerTest {
} catch (Exception e) {
throw e;
}
+ return null;
}
+
+ class TestControlLoopCompilerCallback implements ControlLoopCompilerCallback{
+
+ private List<String> expectedOnErrorMessages;
+
+ public TestControlLoopCompilerCallback(List<String> expectedOnErrorMessages){
+ this.expectedOnErrorMessages = expectedOnErrorMessages;
+ }
+
+ @Override
+ public boolean onWarning(String message) {
+ return true;
+ }
+
+ @Override
+ public boolean onError(String message) {
+ if (!expectedOnErrorMessages.remove(message)){
+ fail("Unexpected onError message: " + message);
+ }
+ return true;
+ }
+
+ public boolean areAllExpectedOnErrorsReceived(){
+ return expectedOnErrorMessages.size() == 0;
+ }
+
+ };
}
+
+
diff --git a/controlloop/common/policy-yaml/src/test/java/org/onap/policy/controlloop/policy/ControlLoopPolicyBuilderTest.java b/controlloop/common/policy-yaml/src/test/java/org/onap/policy/controlloop/policy/ControlLoopPolicyBuilderTest.java
index f1681247d..05d4e469d 100644
--- a/controlloop/common/policy-yaml/src/test/java/org/onap/policy/controlloop/policy/ControlLoopPolicyBuilderTest.java
+++ b/controlloop/common/policy-yaml/src/test/java/org/onap/policy/controlloop/policy/ControlLoopPolicyBuilderTest.java
@@ -20,8 +20,10 @@
package org.onap.policy.controlloop.policy;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@@ -31,8 +33,12 @@ import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;
-
+import org.junit.Ignore;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.onap.policy.aai.PNF;
+import org.onap.policy.aai.PNFType;
import org.onap.policy.controlloop.policy.builder.BuilderException;
import org.onap.policy.controlloop.policy.builder.ControlLoopPolicyBuilder;
import org.onap.policy.controlloop.policy.builder.Message;
@@ -47,6 +53,9 @@ import org.yaml.snakeyaml.error.YAMLException;
public class ControlLoopPolicyBuilderTest {
+
+ @Rule
+ public ExpectedException expectedException = ExpectedException.none();
@Test
public void testControlLoop() {
@@ -85,18 +94,203 @@ public class ControlLoopPolicyBuilderTest {
assertTrue(builder.getControlLoop().getResources().size() == 2);
builder = builder.removeAllResources();
assertTrue(builder.getControlLoop().getResources().size() == 0);
- //
- // Test set abatement
- //
- assertFalse(builder.getControlLoop().getAbatement());
- builder = builder.setAbatement(true);
- assertTrue(builder.getControlLoop().getAbatement());
} catch (BuilderException e) {
fail(e.getMessage());
}
}
@Test
+ public void testAddNullService() throws BuilderException {
+ ControlLoopPolicyBuilder builder = ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+ expectedException.expect(BuilderException.class);
+ expectedException.expectMessage("Service must not be null");
+ builder.addService((Service)null);
+ }
+
+ @Test
+ public void testAddInvalidService() throws BuilderException {
+ ControlLoopPolicyBuilder builder = ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+ expectedException.expect(BuilderException.class);
+ expectedException.expectMessage("Invalid service - need either a serviceUUID or serviceName");
+ builder.addService(new Service());
+ }
+
+ @Test
+ public void testAddServiceWithUUID() throws BuilderException {
+ ControlLoopPolicyBuilder builder = ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+ UUID uuid = UUID.randomUUID();
+ Service serviceWithUUID = new Service(uuid);
+ builder.addService(serviceWithUUID);
+ assertTrue(builder.getControlLoop().getServices().size() == 1);
+ }
+
+ @Test
+ public void testAddNullResource() throws BuilderException {
+ ControlLoopPolicyBuilder builder = ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+ expectedException.expect(BuilderException.class);
+ expectedException.expectMessage("Resource must not be null");
+ builder.addResource((Resource)null);
+ }
+
+
+ @Test
+ public void testAddInvalidResource() throws BuilderException {
+ ControlLoopPolicyBuilder builder = ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+ expectedException.expect(BuilderException.class);
+ expectedException.expectMessage("Invalid resource - need either resourceUUID or resourceName");
+ builder.addResource(new Resource());
+ }
+
+ @Test
+ public void testAddAndRemoveResourceWithUUID() throws BuilderException {
+ ControlLoopPolicyBuilder builder = ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+ UUID uuid = UUID.randomUUID();
+ Resource resourceWithUUID = new Resource(uuid);
+ builder.addResource(resourceWithUUID);
+ assertTrue(builder.getControlLoop().getResources().size() == 1);
+
+ builder.removeResource(resourceWithUUID);
+ assertTrue(builder.getControlLoop().getResources().size() == 0);
+ }
+
+ @Test
+ public void testRemoveNullResource() throws BuilderException {
+ ControlLoopPolicyBuilder builder = ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+ Resource resource = new Resource("resource1", ResourceType.VF);
+ builder.addResource(resource);
+ expectedException.expect(BuilderException.class);
+ expectedException.expectMessage("Resource must not be null");
+ builder.removeResource((Resource)null);
+ }
+
+ @Test
+ public void testRemoveResourceNoExistingResources() throws BuilderException {
+ ControlLoopPolicyBuilder builder = ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+ expectedException.expect(BuilderException.class);
+ expectedException.expectMessage("No existing resources to remove");
+ builder.removeResource(new Resource("resource1", ResourceType.VF));
+ }
+
+ @Test
+ public void testRemoveInvalidResource() throws BuilderException {
+ ControlLoopPolicyBuilder builder = ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+ Resource resource = new Resource("resource1", ResourceType.VF);
+ builder.addResource(resource);
+ expectedException.expect(BuilderException.class);
+ expectedException.expectMessage("Invalid resource - need either a resourceUUID or resourceName");
+ builder.removeResource(new Resource());
+ }
+
+ @Test
+ public void testRemoveUnknownResource() throws BuilderException {
+ ControlLoopPolicyBuilder builder = ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+ Resource resource = new Resource("resource1", ResourceType.VF);
+ builder.addResource(resource);
+ final String unknownResourceName = "reource2";
+ expectedException.expect(BuilderException.class);
+ expectedException.expectMessage("Unknown resource " + unknownResourceName);
+ builder.removeResource(new Resource(unknownResourceName, ResourceType.VF));
+ }
+
+ @Test
+ public void testControlLoopWithInitialResourceAndServices() {
+ try {
+ Resource vCTS = new Resource("vCTS", ResourceType.VF);
+ Service vSCP = new Service("vSCP");
+ Service vUSP = new Service("vUSP");
+ ControlLoopPolicyBuilder builder = ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400, vCTS, vSCP, vUSP);
+ assertTrue(builder.getControlLoop().getResources().size() == 1);
+ assertTrue(builder.getControlLoop().getServices().size() == 2);
+ } catch (BuilderException e) {
+ fail(e.getMessage());
+ }
+ }
+
+ @Test
+ public void testControlLoopWithInitialResourcesAndService() {
+ try {
+ Resource vCTS = new Resource("vCTS", ResourceType.VF);
+ Resource vCOM = new Resource("vCTS", ResourceType.VF);
+ Service vSCP = new Service("vSCP");
+ ControlLoopPolicyBuilder builder = ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400, vSCP, vCTS, vCOM);
+ assertTrue(builder.getControlLoop().getServices().size() == 1);
+ assertTrue(builder.getControlLoop().getResources().size() == 2);
+ } catch (BuilderException e) {
+ fail(e.getMessage());
+ }
+ }
+
+ @Test
+ @Ignore
+ // I'VE MARKED THIS TEST CASE AS IGNORE BECAUSE THE TEST CASE FAILS
+ // This test case fails because builder.getControlLoop() returns an instance of ControlLoop copied using
+ // the ControlLoop(ControlLoop controlLoop) constructor.
+ // This constructor does not copy the value of pnf into the newly created object
+ // On the face of it, this looks like a bug, but perhaps there is a reason for this
+ // PLEASE ADVISE IF THE BEHAVIOUR IS INCORRECT OR THE TEST CASE IS INVALID
+ public void testControlLoopForPnf() {
+ try {
+ PNF pnf = new PNF();
+ pnf.setPNFType(PNFType.ENODEB);
+ ControlLoopPolicyBuilder builder = ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400, pnf);
+ assertEquals(pnf, builder.getControlLoop().getPnf());
+
+ builder.removePNF();
+ assertNull(builder.getControlLoop().getPnf());
+ } catch (BuilderException e) {
+ fail(e.getMessage());
+ }
+ }
+
+ @Test
+ @Ignore
+ // Fails for the same reason as the above test case
+ public void testSetAndRemovePnf() throws BuilderException {
+ ControlLoopPolicyBuilder builder = ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+ assertNull(builder.getControlLoop().getPnf());
+
+ PNF pnf = new PNF();
+ pnf.setPNFType(PNFType.ENODEB);
+ builder.setPNF(pnf);
+ assertEquals(pnf, builder.getControlLoop().getPnf());
+
+ builder.removePNF();
+ assertNull(builder.getControlLoop().getPnf());
+ }
+
+ @Test
+ public void testSetNullPnf() throws BuilderException {
+ ControlLoopPolicyBuilder builder = ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+ expectedException.expect(BuilderException.class);
+ expectedException.expectMessage("PNF must not be null");
+ builder.setPNF(null);
+ }
+
+ @Test
+ public void testSetInvalidPnf() throws BuilderException {
+ ControlLoopPolicyBuilder builder = ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+ expectedException.expect(BuilderException.class);
+ expectedException.expectMessage("Invalid PNF - need either pnfName or pnfType");
+ builder.setPNF(new PNF());
+ }
+
+ @Test
+ public void testSetAbatement() throws BuilderException {
+ ControlLoopPolicyBuilder builder = ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+ assertFalse(builder.getControlLoop().getAbatement());
+ builder = builder.setAbatement(true);
+ assertTrue(builder.getControlLoop().getAbatement());
+ }
+
+ @Test
+ public void testSetNullAbatement() throws BuilderException {
+ ControlLoopPolicyBuilder builder = ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+ expectedException.expect(BuilderException.class);
+ expectedException.expectMessage("abatement must not be null");
+ builder = builder.setAbatement(null);
+ }
+
+ @Test
public void testTimeout() {
try {
//
@@ -192,6 +386,41 @@ public class ControlLoopPolicyBuilderTest {
fail(e.getMessage());
}
}
+
+ @Test
+ public void testSetTriggerPolicyNullPolicyId() throws BuilderException {
+ ControlLoopPolicyBuilder builder = ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+ expectedException.expect(BuilderException.class);
+ expectedException.expectMessage("Id must not be null");
+ builder.setTriggerPolicy(null);
+ }
+
+ @Test
+ public void testSetTriggerPolicyNoPoliciesExist() throws BuilderException {
+ ControlLoopPolicyBuilder builder = ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+ final String unknownPolicyId = "100";
+ expectedException.expect(BuilderException.class);
+ expectedException.expectMessage("Unknown policy " + unknownPolicyId);
+ builder.setTriggerPolicy(unknownPolicyId);
+ }
+
+ @Test
+ public void testSetTriggerPolicyUnknownPolicy() throws BuilderException {
+ ControlLoopPolicyBuilder builder = ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+ builder.setTriggerPolicy(
+ "Restart the VM",
+ "Upon getting the trigger event, restart the VM",
+ "APPC",
+ new Target(TargetType.VM),
+ "Restart",
+ null,
+ 2,
+ 300);
+ final String unknownPolicyId = "100";
+ expectedException.expect(BuilderException.class);
+ expectedException.expectMessage("Unknown policy " + unknownPolicyId);
+ builder.setTriggerPolicy(unknownPolicyId);
+ }
@Test
public void testAddRemovePolicies() {
@@ -220,14 +449,34 @@ public class ControlLoopPolicyBuilderTest {
600,
triggerPolicy.getId(),
PolicyResult.FAILURE,
+ PolicyResult.FAILURE_EXCEPTION,
PolicyResult.FAILURE_RETRIES,
PolicyResult.FAILURE_TIMEOUT,
PolicyResult.FAILURE_GUARD);
//
assertTrue(builder.getTriggerPolicy().getFailure().equals(onRestartFailurePolicy1.getId()));
+ assertTrue(builder.getTriggerPolicy().getFailure_exception().equals(onRestartFailurePolicy1.getId()));
assertTrue(builder.getTriggerPolicy().getFailure_retries().equals(onRestartFailurePolicy1.getId()));
assertTrue(builder.getTriggerPolicy().getFailure_timeout().equals(onRestartFailurePolicy1.getId()));
assertTrue(builder.getTriggerPolicy().getFailure_guard().equals(onRestartFailurePolicy1.getId()));
+
+ //
+ // Test create a policy and chain it to the results of trigger policy success
+ //
+ Policy onSuccessPolicy1 = builder.setPolicyForPolicyResult(
+ "Do something",
+ "If the restart succeeds, do something else.",
+ "APPC",
+ new Target(TargetType.VM),
+ "SomethingElse",
+ null,
+ 1,
+ 600,
+ triggerPolicy.getId(),
+ PolicyResult.SUCCESS);
+ //
+ assertTrue(builder.getTriggerPolicy().getSuccess().equals(onSuccessPolicy1.getId()));
+
//
// Test remove policy
//
@@ -272,6 +521,24 @@ public class ControlLoopPolicyBuilderTest {
assertTrue(builder.getTriggerPolicy().getFailure().equals(onRestartFailurePolicy2.getId()));
assertTrue(builder.getTriggerPolicy().getFailure_retries().equals(onRestartFailurePolicy2.getId()));
assertTrue(builder.getTriggerPolicy().getFailure_timeout().equals(onRestartFailurePolicy2.getId()));
+ //
+ // Test set the policy result for success to an existing operational policy
+ //
+ onRestartFailurePolicy2 = builder.setPolicyForPolicyResult(
+ onRestartFailurePolicy2.getId(),
+ triggerPolicy.getId(),
+ PolicyResult.FAILURE,
+ PolicyResult.FAILURE_EXCEPTION,
+ PolicyResult.FAILURE_GUARD,
+ PolicyResult.FAILURE_RETRIES,
+ PolicyResult.FAILURE_TIMEOUT,
+ PolicyResult.SUCCESS);
+ assertTrue(builder.getTriggerPolicy().getFailure().equals(onRestartFailurePolicy2.getId()));
+ assertTrue(builder.getTriggerPolicy().getFailure_exception().equals(onRestartFailurePolicy2.getId()));
+ assertTrue(builder.getTriggerPolicy().getFailure_guard().equals(onRestartFailurePolicy2.getId()));
+ assertTrue(builder.getTriggerPolicy().getFailure_retries().equals(onRestartFailurePolicy2.getId()));
+ assertTrue(builder.getTriggerPolicy().getFailure_timeout().equals(onRestartFailurePolicy2.getId()));
+ assertTrue(builder.getTriggerPolicy().getSuccess().equals(onRestartFailurePolicy2.getId()));
//
// Test remove all existing operational policies
@@ -283,6 +550,88 @@ public class ControlLoopPolicyBuilderTest {
fail(e.getMessage());
}
}
+
+ @Test
+ public void testAddToUnknownPolicy() throws BuilderException {
+ ControlLoopPolicyBuilder builder = ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+ final String policyId = "100";
+ expectedException.expect(BuilderException.class);
+ expectedException.expectMessage("Unknown policy " + policyId);
+
+ builder.setPolicyForPolicyResult(
+ "Rebuild VM",
+ "If the restart fails, rebuild it.",
+ "APPC",
+ new Target(TargetType.VM),
+ "Rebuild",
+ null,
+ 1,
+ 600,
+ policyId,
+ PolicyResult.FAILURE,
+ PolicyResult.FAILURE_RETRIES,
+ PolicyResult.FAILURE_TIMEOUT,
+ PolicyResult.FAILURE_GUARD);
+ }
+
+ @Test
+ public void testAddExistingPolicyToUnknownPolicy() throws BuilderException {
+ ControlLoopPolicyBuilder builder = ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+ Policy triggerPolicy = builder.setTriggerPolicy(
+ "Restart the VM",
+ "Upon getting the trigger event, restart the VM",
+ "APPC",
+ new Target(TargetType.VM),
+ "Restart",
+ null,
+ 2,
+ 300);
+
+
+ Policy onRestartFailurePolicy = builder.setPolicyForPolicyResult(
+ "Rebuild VM",
+ "If the restart fails, rebuild it.",
+ "APPC",
+ new Target(TargetType.VM),
+ "Rebuild",
+ null,
+ 1,
+ 600,
+ triggerPolicy.getId(),
+ PolicyResult.FAILURE);
+
+ final String unknownPolicyId = "100";
+ expectedException.expect(BuilderException.class);
+ expectedException.expectMessage(unknownPolicyId + " does not exist");
+
+ builder.setPolicyForPolicyResult(
+ onRestartFailurePolicy.getId(),
+ unknownPolicyId,
+ PolicyResult.FAILURE);
+ }
+
+ @Test
+ public void testAddUnknownExistingPolicyToPolicy() throws BuilderException {
+ ControlLoopPolicyBuilder builder = ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+ Policy triggerPolicy = builder.setTriggerPolicy(
+ "Restart the VM",
+ "Upon getting the trigger event, restart the VM",
+ "APPC",
+ new Target(TargetType.VM),
+ "Restart",
+ null,
+ 2,
+ 300);
+
+ final String unknownPolicyId = "100";
+ expectedException.expect(BuilderException.class);
+ expectedException.expectMessage("Operational policy " + unknownPolicyId + " does not exist");
+
+ builder.setPolicyForPolicyResult(
+ unknownPolicyId,
+ triggerPolicy.getId(),
+ PolicyResult.FAILURE);
+ }
@Test
public void testAddOperationsAccumulateParams() {
diff --git a/controlloop/common/policy-yaml/src/test/java/org/onap/policy/controlloop/policy/ControlLoopTest.java b/controlloop/common/policy-yaml/src/test/java/org/onap/policy/controlloop/policy/ControlLoopTest.java
new file mode 100644
index 000000000..0b2f62def
--- /dev/null
+++ b/controlloop/common/policy-yaml/src/test/java/org/onap/policy/controlloop/policy/ControlLoopTest.java
@@ -0,0 +1,171 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2018 Ericsson. 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.policy.controlloop.policy;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.onap.policy.aai.PNF;
+import org.onap.policy.sdc.Resource;
+import org.onap.policy.sdc.ResourceType;
+import org.onap.policy.sdc.Service;
+
+public class ControlLoopTest {
+
+ private String controlLoopName = "control loop 1";
+ private String version = "1.0.1";
+ private String triggerPolicy = FinalResult.FINAL_OPENLOOP.toString();
+ private Integer timeout = 100;
+ private Boolean abatement = false;
+
+ @Test
+ public void testEqualsSameInstance() {
+ ControlLoop controlLoop1 = new ControlLoop();
+ assertTrue(controlLoop1.equals(controlLoop1));
+ }
+
+ @Test
+ public void testEqualsNull() {
+ ControlLoop controlLoop1 = new ControlLoop();
+ assertFalse(controlLoop1.equals(null));
+ }
+ @Test
+ public void testEqualsInstanceOfDiffClass() {
+ ControlLoop controlLoop1 = new ControlLoop();
+ assertFalse(controlLoop1.equals(""));
+ }
+
+ @Test
+ public void testEqualsNoServicesAndResourcesOrTimeout() {
+ final PNF pnf = new PNF();
+ pnf.setPNFName("pnf 1");
+
+ ControlLoop controlLoop1 = new ControlLoop();
+ controlLoop1.setControlLoopName(controlLoopName);
+ controlLoop1.setVersion(version);
+ controlLoop1.setPnf(pnf);
+ controlLoop1.setTrigger_policy(triggerPolicy);
+ controlLoop1.setAbatement(abatement);
+
+ ControlLoop controlLoop2 = new ControlLoop();
+ controlLoop2.setControlLoopName(controlLoopName);
+ controlLoop2.setVersion(version);
+ controlLoop2.setPnf(pnf);
+ controlLoop2.setTrigger_policy(triggerPolicy);
+ controlLoop2.setAbatement(abatement);
+
+ assertTrue(controlLoop1.equals(controlLoop2));
+ }
+
+ @Test
+ public void testEquals() {
+ final PNF pnf = new PNF();
+ pnf.setPNFName("pnf 1");
+
+ ControlLoop controlLoop1 = new ControlLoop();
+ controlLoop1.setControlLoopName(controlLoopName);
+ controlLoop1.setVersion(version);
+ Service service1 = new Service("service1");
+ Service service2 = new Service("service2");
+ List<Service> services = new ArrayList<>();
+ services.add(service1);
+ services.add(service2);
+ controlLoop1.setServices(services);
+ Resource resource1 = new Resource("resource1", ResourceType.VF);
+ Resource resource2 = new Resource("resource2", ResourceType.VFC);
+ List<Resource> resources = new ArrayList<>();
+ resources.add(resource1);
+ resources.add(resource2);
+ controlLoop1.setResources(resources);
+ controlLoop1.setPnf(pnf);
+ controlLoop1.setTrigger_policy(triggerPolicy);
+ controlLoop1.setTimeout(timeout);
+ controlLoop1.setAbatement(abatement);
+
+ ControlLoop controlLoop2 = new ControlLoop();
+ controlLoop2.setControlLoopName(controlLoopName);
+ controlLoop2.setVersion(version);
+ Service controlLoop2_service1 = new Service("service1");
+ Service controlLoop2_service2 = new Service("service2");
+ List<Service> controlLoop2_services = new ArrayList<>();
+ controlLoop2_services.add(controlLoop2_service1);
+ controlLoop2_services.add(controlLoop2_service2);
+ controlLoop2.setServices(controlLoop2_services);
+ Resource controlLoop2_resource1 = new Resource("resource1", ResourceType.VF);
+ Resource controlLoop2_resource2 = new Resource("resource2", ResourceType.VFC);
+ List<Resource> controlLoop2_resources = new ArrayList<>();
+ controlLoop2_resources.add(controlLoop2_resource1);
+ controlLoop2_resources.add(controlLoop2_resource2);
+ controlLoop2.setResources(controlLoop2_resources);
+ controlLoop2.setPnf(pnf);
+ controlLoop2.setTrigger_policy(triggerPolicy);
+ controlLoop2.setTimeout(timeout);
+ controlLoop1.setAbatement(abatement);
+
+ assertTrue(controlLoop1.equals(controlLoop2));
+ assertEquals(controlLoop1.hashCode(), controlLoop2.hashCode());
+ }
+
+ @Test
+ @Ignore
+ // I'VE MARKED THIS TEST CASE AS IGNORE BECAUSE THE TEST CASE FAILS
+ // This test case fails because the ControlLoop(ControlLoop controlLoop) constructor.
+ // does not copy the value of pnf and version into the newly created object
+ // PLEASE ADVISE IF THE EXISTING BEHAVIOUR IS CORRECT
+ public void testControlLoop() {
+ final PNF pnf = new PNF();
+ pnf.setPNFName("pnf 1");
+
+ ControlLoop controlLoop1 = new ControlLoop();
+ controlLoop1.setControlLoopName(controlLoopName);
+ controlLoop1.setVersion(version);
+ Service service1 = new Service("service1");
+ Service service2 = new Service("service2");
+ List<Service> services = new ArrayList<>();
+ services.add(service1);
+ services.add(service2);
+ controlLoop1.setServices(services);
+ Resource resource1 = new Resource("resource1", ResourceType.VF);
+ Resource resource2 = new Resource("resource2", ResourceType.VFC);
+ List<Resource> resources = new ArrayList<>();
+ resources.add(resource1);
+ resources.add(resource2);
+ controlLoop1.setResources(resources);
+ controlLoop1.setPnf(pnf);
+ controlLoop1.setTrigger_policy(triggerPolicy);
+ controlLoop1.setAbatement(abatement);
+
+ ControlLoop controlLoop2 = new ControlLoop(controlLoop1);
+
+ assertEquals(controlLoop1.getControlLoopName(), controlLoop2.getControlLoopName());
+ assertEquals(controlLoop1.getVersion(), controlLoop2.getVersion());
+ assertEquals(controlLoop1.getServices(), controlLoop2.getServices());
+ assertEquals(controlLoop1.getResources(), controlLoop2.getResources());
+ assertEquals(controlLoop1.getPnf(), controlLoop2.getPnf());
+ assertEquals(controlLoop1.getTrigger_policy(), controlLoop2.getTrigger_policy());
+ assertEquals(controlLoop1.getAbatement(), controlLoop2.getAbatement());
+
+ assertTrue(controlLoop1.equals(controlLoop2));
+ }
+
+}
diff --git a/controlloop/common/policy-yaml/src/test/java/org/onap/policy/controlloop/policy/OperationsAccumulateParamsTest.java b/controlloop/common/policy-yaml/src/test/java/org/onap/policy/controlloop/policy/OperationsAccumulateParamsTest.java
new file mode 100644
index 000000000..5d627a906
--- /dev/null
+++ b/controlloop/common/policy-yaml/src/test/java/org/onap/policy/controlloop/policy/OperationsAccumulateParamsTest.java
@@ -0,0 +1,116 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2018 Ericsson. 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.policy.controlloop.policy;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+public class OperationsAccumulateParamsTest {
+
+ @Test
+ public void testConstructor() {
+ OperationsAccumulateParams operationsAccumulateParams = new OperationsAccumulateParams();
+ assertNull(operationsAccumulateParams.getPeriod());
+ assertNull(operationsAccumulateParams.getLimit());
+ }
+
+ @Test
+ public void testConstructorOperationsAccumulateParams() {
+ String period = "15m";
+ Integer limit = 10;
+ OperationsAccumulateParams operationsAccumulateParams1 = new OperationsAccumulateParams(period, limit);
+ OperationsAccumulateParams operationsAccumulateParams2 = new OperationsAccumulateParams(operationsAccumulateParams1);
+ assertEquals(period, operationsAccumulateParams1.getPeriod());
+ assertEquals(limit, operationsAccumulateParams2.getLimit());
+ }
+
+ @Test
+ public void testOperationsAccumulateParamsStringInteger() {
+ String period = "15m";
+ Integer limit = 10;
+ OperationsAccumulateParams operationsAccumulateParams = new OperationsAccumulateParams(period, limit);
+ assertEquals(period, operationsAccumulateParams.getPeriod());
+ assertEquals(limit, operationsAccumulateParams.getLimit());
+ }
+
+ @Test
+ public void testSetAndGetPeriod() {
+ String period = "15m";
+ OperationsAccumulateParams operationsAccumulateParams = new OperationsAccumulateParams();
+ operationsAccumulateParams.setPeriod(period);
+ assertEquals(period, operationsAccumulateParams.getPeriod());
+ }
+
+ @Test
+ public void testSetLimit() {
+ Integer limit = 10;
+ OperationsAccumulateParams operationsAccumulateParams = new OperationsAccumulateParams();
+ operationsAccumulateParams.setLimit(limit);
+ assertEquals(limit, operationsAccumulateParams.getLimit()); }
+
+ @Test
+ public void testToString() {
+ String period = "15m";
+ Integer limit = 10;
+ OperationsAccumulateParams operationsAccumulateParams = new OperationsAccumulateParams(period, limit);
+ assertEquals("OperationsAccumulateParams [period=15m, limit=10]", operationsAccumulateParams.toString());
+ }
+
+ @Test
+ public void testEqualsAndHashCode() {
+ String period = "15m";
+ Integer limit = 10;
+ OperationsAccumulateParams operationsAccumulateParams1 = new OperationsAccumulateParams();
+ OperationsAccumulateParams operationsAccumulateParams2 = new OperationsAccumulateParams();
+
+ assertTrue(operationsAccumulateParams1.equals(operationsAccumulateParams2));
+
+ operationsAccumulateParams1.setPeriod(period);
+ assertFalse(operationsAccumulateParams1.equals(operationsAccumulateParams2));
+ operationsAccumulateParams2.setPeriod(period);
+ assertTrue(operationsAccumulateParams1.equals(operationsAccumulateParams2));
+ assertEquals(operationsAccumulateParams1.hashCode(), operationsAccumulateParams2.hashCode());
+
+ operationsAccumulateParams1.setLimit(limit);;
+ assertFalse(operationsAccumulateParams1.equals(operationsAccumulateParams2));
+ operationsAccumulateParams2.setLimit(limit);
+ assertTrue(operationsAccumulateParams1.equals(operationsAccumulateParams2));
+ assertEquals(operationsAccumulateParams1.hashCode(), operationsAccumulateParams2.hashCode());
+ }
+
+
+ @Test
+ public void testEqualsSameObject(){
+ OperationsAccumulateParams operationsAccumulateParams = new OperationsAccumulateParams();
+ assertTrue(operationsAccumulateParams.equals(operationsAccumulateParams));
+ }
+
+ @Test
+ public void testEqualsNull(){
+ OperationsAccumulateParams operationsAccumulateParams = new OperationsAccumulateParams();
+ assertFalse(operationsAccumulateParams.equals(null));
+ }
+
+ @Test
+ public void testEqualsInstanceOfDiffClass(){
+ OperationsAccumulateParams operationsAccumulateParams = new OperationsAccumulateParams();
+ assertFalse(operationsAccumulateParams.equals(""));
+ }
+
+}
diff --git a/controlloop/common/policy-yaml/src/test/java/org/onap/policy/controlloop/policy/guard/ConstraintTest.java b/controlloop/common/policy-yaml/src/test/java/org/onap/policy/controlloop/policy/guard/ConstraintTest.java
new file mode 100644
index 000000000..d0aa2e675
--- /dev/null
+++ b/controlloop/common/policy-yaml/src/test/java/org/onap/policy/controlloop/policy/guard/ConstraintTest.java
@@ -0,0 +1,249 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2018 Ericsson. 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.policy.controlloop.policy.guard;
+
+import static org.junit.Assert.*;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.junit.Test;
+
+public class ConstraintTest {
+
+ @Test
+ public void testConstraint() {
+ Constraint constraint = new Constraint();
+
+ assertNull(constraint.getFreq_limit_per_target());
+ assertNull(constraint.getTime_window());
+ assertNull(constraint.getActive_time_range());
+ assertNull(constraint.getBlacklist());
+ }
+
+ @Test
+ public void testGetAndSetFreq_limit_per_target() {
+ Integer freqLimitPerTarget = 10;
+ Constraint constraint = new Constraint();
+ constraint.setFreq_limit_per_target(freqLimitPerTarget);
+ assertEquals(freqLimitPerTarget, constraint.getFreq_limit_per_target());
+ }
+
+ @Test
+ public void testGetAndSetTime_window() {
+ Map<String, String> timeWindow = new HashMap<>();
+ timeWindow.put("timeWindowKey", "timeWindowValue");
+ Constraint constraint = new Constraint();
+ constraint.setTime_window(timeWindow);
+ assertEquals(timeWindow, constraint.getTime_window());
+ }
+
+ @Test
+ public void testGetAndSetActive_time_range() {
+ Map<String, String> activeTimeRange = new HashMap<>();
+ activeTimeRange.put("timeWindowKey", "timeWindowValue");
+ Constraint constraint = new Constraint();
+ constraint.setActive_time_range(activeTimeRange);;
+ assertEquals(activeTimeRange, constraint.getActive_time_range());
+ }
+
+ @Test
+ public void testGetAndSetBlacklist() {
+ List<String> blacklist = new ArrayList<>();
+ blacklist.add("blacklist item");
+ Constraint constraint = new Constraint();
+ constraint.setBlacklist(blacklist);
+ assertEquals(blacklist, constraint.getBlacklist());
+ }
+
+ @Test
+ public void testConstraintIntegerMapOfStringString() {
+ Integer freqLimitPerTarget = 10;
+ Map<String, String> timeWindow = new HashMap<>();
+
+ Constraint constraint = new Constraint(freqLimitPerTarget, timeWindow);
+
+ assertEquals(freqLimitPerTarget, constraint.getFreq_limit_per_target());
+ assertEquals(timeWindow, constraint.getTime_window());
+ assertNull(constraint.getActive_time_range());
+ assertNull(constraint.getBlacklist());
+ }
+
+ @Test
+ public void testConstraintListOfString() {
+ List<String> blacklist = new ArrayList<>();
+ blacklist.add("blacklist item");
+ Constraint constraint = new Constraint(blacklist);
+
+ assertNull(constraint.getFreq_limit_per_target());
+ assertNull(constraint.getTime_window());
+ assertNull(constraint.getActive_time_range());
+ assertEquals(blacklist, constraint.getBlacklist());
+ }
+
+ @Test
+ public void testConstraintIntegerMapOfStringStringListOfString() {
+ Integer freqLimitPerTarget = 10;
+ Map<String, String> timeWindow = new HashMap<>();
+ List<String> blacklist = new ArrayList<>();
+ blacklist.add("blacklist item");
+ Constraint constraint = new Constraint(freqLimitPerTarget, timeWindow, blacklist);
+
+ assertEquals(freqLimitPerTarget, constraint.getFreq_limit_per_target());
+ assertEquals(timeWindow, constraint.getTime_window());
+ assertNull(constraint.getActive_time_range());
+ assertEquals(blacklist, constraint.getBlacklist());
+ }
+
+ @Test
+ public void testConstraintIntegerMapOfStringStringMapOfStringString() {
+ Integer freqLimitPerTarget = 10;
+ Map<String, String> timeWindow = new HashMap<>();
+ Map<String, String> activeTimeRange = new HashMap<>();
+ activeTimeRange.put("timeWindowKey", "timeWindowValue");
+ Constraint constraint = new Constraint(freqLimitPerTarget, timeWindow, activeTimeRange);
+
+ assertEquals(freqLimitPerTarget, constraint.getFreq_limit_per_target());
+ assertEquals(timeWindow, constraint.getTime_window());
+ assertEquals(activeTimeRange, constraint.getActive_time_range());
+ assertNull(constraint.getBlacklist());
+
+ }
+
+ @Test
+ public void testConstraintIntegerMapOfStringStringMapOfStringStringListOfString() {
+ Integer freqLimitPerTarget = 10;
+ Map<String, String> timeWindow = new HashMap<>();
+ Map<String, String> activeTimeRange = new HashMap<>();
+ activeTimeRange.put("timeWindowKey", "timeWindowValue");
+ List<String> blacklist = new ArrayList<>();
+ blacklist.add("blacklist item");
+ Constraint constraint = new Constraint(freqLimitPerTarget, timeWindow, activeTimeRange, blacklist);
+
+ assertEquals(freqLimitPerTarget, constraint.getFreq_limit_per_target());
+ assertEquals(timeWindow, constraint.getTime_window());
+ assertEquals(activeTimeRange, constraint.getActive_time_range());
+ assertEquals(blacklist, constraint.getBlacklist());
+ }
+
+ @Test
+ public void testConstraintConstraint() {
+ Integer freqLimitPerTarget = 10;
+ Map<String, String> timeWindow = new HashMap<>();
+ Map<String, String> activeTimeRange = new HashMap<>();
+ activeTimeRange.put("timeWindowKey", "timeWindowValue");
+ List<String> blacklist = new ArrayList<>();
+ blacklist.add("blacklist item");
+ Constraint constraint1 = new Constraint(freqLimitPerTarget, timeWindow, activeTimeRange, blacklist);
+ Constraint constraint2 = new Constraint(constraint1);
+
+ assertEquals(freqLimitPerTarget, constraint2.getFreq_limit_per_target());
+ assertEquals(timeWindow, constraint2.getTime_window());
+ assertEquals(activeTimeRange, constraint2.getActive_time_range());
+ assertEquals(blacklist, constraint2.getBlacklist());
+ }
+
+ @Test
+ public void testIsValid() {
+ Integer freqLimitPerTarget = 10;
+ Map<String, String> timeWindow = new HashMap<>();
+
+ Constraint constraint = new Constraint();
+ assertTrue(constraint.isValid());
+
+ constraint.setFreq_limit_per_target(freqLimitPerTarget);
+ assertFalse(constraint.isValid());
+
+ constraint.setTime_window(timeWindow);
+ assertTrue(constraint.isValid());
+
+ constraint.setFreq_limit_per_target(null);
+ assertFalse(constraint.isValid());
+ }
+
+ @Test
+ public void testToString() {
+ Integer freqLimitPerTarget = 10;
+ Map<String, String> timeWindow = new HashMap<>();
+ Map<String, String> activeTimeRange = new HashMap<>();
+ activeTimeRange.put("timeWindowKey", "timeWindowValue");
+ List<String> blacklist = new ArrayList<>();
+ blacklist.add("blacklist item");
+ Constraint constraint = new Constraint(freqLimitPerTarget, timeWindow, activeTimeRange, blacklist);
+
+ assertEquals(constraint.toString(), "Constraint [freq_limit_per_target=" + freqLimitPerTarget + ", time_window=" + timeWindow + ", active_time_range=" + activeTimeRange + ", blacklist=" + blacklist + "]");
+ }
+
+ @Test
+ public void testEquals() {
+ Integer freqLimitPerTarget = 10;
+ Map<String, String> timeWindow = new HashMap<>();
+ Map<String, String> activeTimeRange = new HashMap<>();
+ List<String> blacklist = new ArrayList<>();
+ blacklist.add("blacklist item");
+
+ Constraint constraint1 = new Constraint();
+ Constraint constraint2 = new Constraint();
+ assertTrue(constraint1.equals(constraint2));
+
+ constraint1.setFreq_limit_per_target(freqLimitPerTarget);
+ assertFalse(constraint1.equals(constraint2));
+ constraint2.setFreq_limit_per_target(freqLimitPerTarget);
+ assertTrue(constraint1.equals(constraint2));
+ assertEquals(constraint1.hashCode(), constraint2.hashCode());
+
+ constraint1.setTime_window(timeWindow);
+ assertFalse(constraint1.equals(constraint2));
+ constraint2.setTime_window(timeWindow);
+ assertTrue(constraint1.equals(constraint2));
+ assertEquals(constraint1.hashCode(), constraint2.hashCode());
+
+ constraint1.setActive_time_range(activeTimeRange);
+ assertFalse(constraint1.equals(constraint2));
+ constraint2.setActive_time_range(activeTimeRange);
+ assertTrue(constraint1.equals(constraint2));
+ assertEquals(constraint1.hashCode(), constraint2.hashCode());
+
+ constraint1.setBlacklist(blacklist);
+ assertFalse(constraint1.equals(constraint2));
+ constraint2.setBlacklist(blacklist);
+ assertTrue(constraint1.equals(constraint2));
+ assertEquals(constraint1.hashCode(), constraint2.hashCode());
+ }
+
+ @Test
+ public void testEqualsSameObject(){
+ Constraint constraint = new Constraint();
+ assertTrue(constraint.equals(constraint));
+ }
+
+ @Test
+ public void testEqualsNull(){
+ Constraint constraint = new Constraint();
+ assertFalse(constraint.equals(null));
+ }
+
+ @Test
+ public void testEqualsInstanceOfDiffClass(){
+ Constraint constraint = new Constraint();
+ assertFalse(constraint.equals(""));
+ }
+
+}
diff --git a/controlloop/common/policy-yaml/src/test/java/org/onap/policy/controlloop/policy/guard/ControlLoopGuardTest.java b/controlloop/common/policy-yaml/src/test/java/org/onap/policy/controlloop/policy/guard/ControlLoopGuardTest.java
index d1a35413e..711997dac 100644
--- a/controlloop/common/policy-yaml/src/test/java/org/onap/policy/controlloop/policy/guard/ControlLoopGuardTest.java
+++ b/controlloop/common/policy-yaml/src/test/java/org/onap/policy/controlloop/policy/guard/ControlLoopGuardTest.java
@@ -27,6 +27,7 @@ import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
+import java.util.LinkedList;
import org.junit.Test;
import org.slf4j.Logger;
@@ -49,6 +50,69 @@ public class ControlLoopGuardTest {
this.test("src/test/resources/v2.0.0-guard/policy_guard_appc_restart.yaml");
}
+ @Test
+ public void testConstructorControlLoopGuard(){
+ Guard guard1 = new Guard();
+ GuardPolicy guardPolicy1 = new GuardPolicy();
+ GuardPolicy guardPolicy2 = new GuardPolicy();
+ LinkedList<GuardPolicy> guardPolicies = new LinkedList<>();
+ guardPolicies.add(guardPolicy1);
+ guardPolicies.add(guardPolicy2);
+
+ ControlLoopGuard controlLoopGuard1 = new ControlLoopGuard();
+ controlLoopGuard1.setGuard(guard1);
+ controlLoopGuard1.setGuards(guardPolicies);
+ ControlLoopGuard controlLoopGuard2 = new ControlLoopGuard(controlLoopGuard1);
+
+ assertEquals(guard1, controlLoopGuard2.getGuard());
+ assertEquals(guardPolicies, controlLoopGuard2.getGuards());
+ }
+
+ @Test
+ public void testEqualsAndHashCode(){
+ Guard guard1 = new Guard();
+ GuardPolicy guardPolicy1 = new GuardPolicy();
+ GuardPolicy guardPolicy2 = new GuardPolicy();
+ LinkedList<GuardPolicy> guardPolicies = new LinkedList<>();
+ guardPolicies.add(guardPolicy1);
+ guardPolicies.add(guardPolicy2);
+
+ ControlLoopGuard controlLoopGuard1 = new ControlLoopGuard();
+ ControlLoopGuard controlLoopGuard2 = new ControlLoopGuard();
+
+ assertTrue(controlLoopGuard1.equals(controlLoopGuard2));
+ assertEquals(controlLoopGuard1.hashCode(), controlLoopGuard2.hashCode());
+
+ controlLoopGuard1.setGuard(guard1);
+ assertFalse(controlLoopGuard1.equals(controlLoopGuard2));
+ controlLoopGuard2.setGuard(guard1);
+ assertTrue(controlLoopGuard1.equals(controlLoopGuard2));
+ assertEquals(controlLoopGuard1.hashCode(), controlLoopGuard2.hashCode());
+
+ controlLoopGuard1.setGuards(guardPolicies);
+ assertFalse(controlLoopGuard1.equals(controlLoopGuard2));
+ controlLoopGuard2.setGuards(guardPolicies);
+ assertTrue(controlLoopGuard1.equals(controlLoopGuard2));
+ assertEquals(controlLoopGuard1.hashCode(), controlLoopGuard2.hashCode());
+ }
+
+ @Test
+ public void testEqualsSameObject(){
+ ControlLoopGuard controlLoopGuard = new ControlLoopGuard();
+ assertTrue(controlLoopGuard.equals(controlLoopGuard));
+ }
+
+ @Test
+ public void testEqualsNull(){
+ ControlLoopGuard controlLoopGuard = new ControlLoopGuard();
+ assertFalse(controlLoopGuard.equals(null));
+ }
+
+ @Test
+ public void testEqualsInstanceOfDiffClass(){
+ ControlLoopGuard controlLoopGuard = new ControlLoopGuard();
+ assertFalse(controlLoopGuard.equals(""));
+ }
public void test(String testFile) {
try (InputStream is = new FileInputStream(new File(testFile))) {
diff --git a/controlloop/common/policy-yaml/src/test/java/org/onap/policy/controlloop/policy/guard/GuardPolicyTest.java b/controlloop/common/policy-yaml/src/test/java/org/onap/policy/controlloop/policy/guard/GuardPolicyTest.java
new file mode 100644
index 000000000..3bf801d57
--- /dev/null
+++ b/controlloop/common/policy-yaml/src/test/java/org/onap/policy/controlloop/policy/guard/GuardPolicyTest.java
@@ -0,0 +1,267 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2018 Ericsson. 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.policy.controlloop.policy.guard;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import org.junit.Test;
+
+public class GuardPolicyTest {
+
+ @Test
+ public void testConstructor(){
+ GuardPolicy guardPolicy = new GuardPolicy();
+
+ assertNotNull(guardPolicy.getId());
+ assertNull(guardPolicy.getName());
+ assertNull(guardPolicy.getDescription());
+ assertNull(guardPolicy.getMatch_parameters());
+ assertNull(guardPolicy.getLimit_constraints());
+ }
+
+ @Test
+ public void testConstructorString(){
+ String id = "guard id";
+ GuardPolicy guardPolicy = new GuardPolicy(id);
+
+ assertEquals(id, guardPolicy.getId());
+ assertNull(guardPolicy.getName());
+ assertNull(guardPolicy.getDescription());
+ assertNull(guardPolicy.getMatch_parameters());
+ assertNull(guardPolicy.getLimit_constraints());
+ }
+
+ @Test
+ public void testConstructorStringStringStringMatchParameters(){
+ String id = "guard id";
+ String name = "guard name";
+ String description = "guard description";
+ MatchParameters matchParameters = new MatchParameters();
+ List<Constraint> limitConstraints = new LinkedList<>();
+ limitConstraints.add(new Constraint());
+ GuardPolicy guardPolicy = new GuardPolicy(id, name, description, matchParameters);
+
+ assertNotNull(guardPolicy.getId());
+ assertEquals(name, guardPolicy.getName());
+ assertEquals(description, guardPolicy.getDescription());
+ assertEquals(matchParameters, guardPolicy.getMatch_parameters());
+ assertNull(guardPolicy.getLimit_constraints());
+ }
+
+ @Test
+ public void testConstructorStringMatchParametersList(){
+ String name = "guard name";
+ MatchParameters matchParameters = new MatchParameters();
+ List<Constraint> limitConstraints = new LinkedList<>();
+ limitConstraints.add(new Constraint());
+ GuardPolicy guardPolicy = new GuardPolicy(name, matchParameters, limitConstraints);
+
+ assertNotNull(guardPolicy.getId());
+ assertEquals(name, guardPolicy.getName());
+ assertNull(guardPolicy.getDescription());
+ assertEquals(matchParameters, guardPolicy.getMatch_parameters());
+ assertEquals(limitConstraints, guardPolicy.getLimit_constraints());
+ }
+
+ @Test
+ public void testConstructorStringStringMatchParametersList(){
+ String name = "guard name";
+ String description = "guard description";
+ MatchParameters matchParameters = new MatchParameters();
+ List<Constraint> limitConstraints = new LinkedList<>();
+ limitConstraints.add(new Constraint());
+ GuardPolicy guardPolicy = new GuardPolicy(name, description, matchParameters, limitConstraints);
+
+ assertNotNull(guardPolicy.getId());
+ assertEquals(name, guardPolicy.getName());
+ assertEquals(description, guardPolicy.getDescription());
+ assertEquals(matchParameters, guardPolicy.getMatch_parameters());
+ assertEquals(limitConstraints, guardPolicy.getLimit_constraints());
+ }
+
+ @Test
+ public void testConstructorStringStringStringMatchParametersList(){
+ String id = "guard id";
+ String name = "guard name";
+ String description = "guard description";
+ MatchParameters matchParameters = new MatchParameters();
+ List<Constraint> limitConstraints = new LinkedList<>();
+ limitConstraints.add(new Constraint());
+ GuardPolicy guardPolicy = new GuardPolicy(id, name, description, matchParameters, limitConstraints);
+
+ assertEquals(id, guardPolicy.getId());
+ assertEquals(name, guardPolicy.getName());
+ assertEquals(description, guardPolicy.getDescription());
+ assertEquals(matchParameters, guardPolicy.getMatch_parameters());
+ assertEquals(limitConstraints, guardPolicy.getLimit_constraints());
+ }
+
+ @Test
+ public void testConstructorGuardPolicy(){
+ String id = "guard id";
+ String name = "guard name";
+ String description = "guard description";
+ MatchParameters matchParameters = new MatchParameters();
+ List<Constraint> limitConstraints = new LinkedList<>();
+ limitConstraints.add(new Constraint());
+ GuardPolicy guardPolicy1 = new GuardPolicy(id, name, description, matchParameters, limitConstraints);
+
+ GuardPolicy guardPolicy2 = new GuardPolicy(guardPolicy1);
+
+
+ assertEquals(id, guardPolicy2.getId());
+ assertEquals(name, guardPolicy2.getName());
+ assertEquals(description, guardPolicy2.getDescription());
+ assertEquals(matchParameters, guardPolicy2.getMatch_parameters());
+ assertEquals(limitConstraints, guardPolicy2.getLimit_constraints());
+ }
+
+ @Test
+ public void testSetAndGetId(){
+ String id = "guard id";
+ GuardPolicy guardPolicy = new GuardPolicy();
+ guardPolicy.setId(id);
+ assertEquals(id, guardPolicy.getId());
+ }
+
+ @Test
+ public void testSetAndGetName(){
+ String name = "guard name";
+ GuardPolicy guardPolicy = new GuardPolicy();
+ guardPolicy.setName(name);
+ assertEquals(name, guardPolicy.getName());
+ }
+
+ @Test
+ public void testSetAndGetDescription(){
+ String description = "guard description";
+ GuardPolicy guardPolicy = new GuardPolicy();
+ guardPolicy.setDescription(description);
+ assertEquals(description, guardPolicy.getDescription());
+ }
+
+ @Test
+ public void testSetAndGetMatchParameters(){
+ MatchParameters matchParameters = new MatchParameters();
+ GuardPolicy guardPolicy = new GuardPolicy();
+ guardPolicy.setMatch_parameters(matchParameters);
+ assertEquals(matchParameters, guardPolicy.getMatch_parameters());
+ }
+
+ @Test
+ public void testSetAndGetLimitConstraints(){
+ LinkedList<Constraint> limitConstraints = new LinkedList<>();
+ limitConstraints.add(new Constraint());
+ GuardPolicy guardPolicy = new GuardPolicy();
+ guardPolicy.setLimit_constraints(limitConstraints);
+ assertEquals(limitConstraints, guardPolicy.getLimit_constraints());
+ }
+
+ @Test
+ public void testIsValid(){
+ GuardPolicy guardPolicy = new GuardPolicy();
+ assertFalse(guardPolicy.isValid());
+
+ guardPolicy.setName("guard name");
+ assertTrue(guardPolicy.isValid());
+
+ guardPolicy.setId(null);
+ assertFalse(guardPolicy.isValid());
+ }
+
+ @Test
+ public void testToString(){
+ String id = "guard id";
+ String name = "guard name";
+ String description = "guard description";
+ MatchParameters matchParameters = new MatchParameters();
+ List<Constraint> limitConstraints = new LinkedList<>();
+ limitConstraints.add(new Constraint());
+ GuardPolicy guardPolicy = new GuardPolicy(id, name, description, matchParameters, limitConstraints);
+
+ assertEquals(guardPolicy.toString(), "Policy [id=guard id, name=guard name, description=guard description, "
+ + "match_parameters=MatchParameters [controlLoopName=null, actor=null, recipe=null, targets=null], "
+ + "limitConstraints=[Constraint [freq_limit_per_target=null, time_window=null, active_time_range=null, blacklist=null]]]", guardPolicy.toString());
+ }
+
+ @Test
+ public void testEquals(){
+ String id = "guard id";
+ String name = "guard name";
+ String description = "guard description";
+ GuardPolicy guardPolicy1 = new GuardPolicy(id);
+ GuardPolicy guardPolicy2 = new GuardPolicy();
+ assertFalse(guardPolicy1.equals(guardPolicy2));
+
+ guardPolicy2.setId(id);
+ assertTrue(guardPolicy1.equals(guardPolicy2));
+ assertEquals(guardPolicy1.hashCode(), guardPolicy2.hashCode());
+
+ guardPolicy1.setName(name);
+ assertFalse(guardPolicy1.equals(guardPolicy2));
+ guardPolicy2.setName(name);
+ assertTrue(guardPolicy1.equals(guardPolicy2));
+ assertEquals(guardPolicy1.hashCode(), guardPolicy2.hashCode());
+
+ guardPolicy1.setDescription(description);
+ assertFalse(guardPolicy1.equals(guardPolicy2));
+ guardPolicy2.setDescription(description);
+ assertTrue(guardPolicy1.equals(guardPolicy2));
+ assertEquals(guardPolicy1.hashCode(), guardPolicy2.hashCode());
+
+ MatchParameters matchParameters = new MatchParameters();
+ guardPolicy1.setMatch_parameters(matchParameters);
+ assertFalse(guardPolicy1.equals(guardPolicy2));
+ guardPolicy2.setMatch_parameters(matchParameters);
+ assertTrue(guardPolicy1.equals(guardPolicy2));
+ assertEquals(guardPolicy1.hashCode(), guardPolicy2.hashCode());
+
+ LinkedList<Constraint> limitConstraints = new LinkedList<>();
+ limitConstraints.add(new Constraint());
+ guardPolicy1.setLimit_constraints(limitConstraints);
+ assertFalse(guardPolicy1.equals(guardPolicy2));
+ guardPolicy2.setLimit_constraints(limitConstraints);
+ assertTrue(guardPolicy1.equals(guardPolicy2));
+ assertEquals(guardPolicy1.hashCode(), guardPolicy2.hashCode());
+ }
+
+ @Test
+ public void testEqualsSameObject(){
+ GuardPolicy guardPolicy = new GuardPolicy();
+ assertTrue(guardPolicy.equals(guardPolicy));
+ }
+
+ @Test
+ public void testEqualsNull(){
+ GuardPolicy guardPolicy = new GuardPolicy();
+ assertFalse(guardPolicy.equals(null));
+ }
+
+ @Test
+ public void testEqualsInstanceOfDiffClass(){
+ GuardPolicy guardPolicy = new GuardPolicy();
+ assertFalse(guardPolicy.equals(""));
+ }
+}
diff --git a/controlloop/common/policy-yaml/src/test/resources/v1.0.0/bad_control_loop_no_control_loop_name.yaml b/controlloop/common/policy-yaml/src/test/resources/v1.0.0/bad_control_loop_no_control_loop_name.yaml
new file mode 100644
index 000000000..ce51ff618
--- /dev/null
+++ b/controlloop/common/policy-yaml/src/test/resources/v1.0.0/bad_control_loop_no_control_loop_name.yaml
@@ -0,0 +1,23 @@
+controlLoop:
+ controlLoopName:
+ version: 1.0.0
+ services:
+ - serviceName: Foo Service
+ resources:
+ - resourceName: Bar VNF
+ resourceType: VF
+ trigger_policy: unique-policy-id-1-restart
+ timeout: 1200
+
+policies:
+ - id: unique-policy-id-1-restart
+ name: Restart Policy for Trigger Event
+ description:
+ actor: APPC
+ recipe: Restart
+ target:
+ type: VM
+ resourceID: vm1
+ retry: 2
+ timeout: 300
+
diff --git a/controlloop/common/policy-yaml/src/test/resources/v1.0.0/bad_policies_1.yaml b/controlloop/common/policy-yaml/src/test/resources/v1.0.0/bad_policy_failure_connected_to_unknown_policy.yaml
index f6ad68425..ad65dbfcf 100644
--- a/controlloop/common/policy-yaml/src/test/resources/v1.0.0/bad_policies_1.yaml
+++ b/controlloop/common/policy-yaml/src/test/resources/v1.0.0/bad_policy_failure_connected_to_unknown_policy.yaml
@@ -15,11 +15,9 @@ policies:
description:
actor: APPC
recipe: Restart
- target: VM
+ target:
+ type: VM
+ resourceID: vm1
retry: 2
timeout: 300
- success: FINAL_FAILURE
- failure: unique-policy-id-3-rebuild
- failure_timeout: unique-policy-id-3-rebuild
- failure_retries: unique-policy-id-3-rebuild
- failure_exception: final_failure_exception
+ failure: unknown-policy
diff --git a/controlloop/common/policy-yaml/src/test/resources/v1.0.0/bad_policy_failure_exception_connected_to_unknown_policy.yaml b/controlloop/common/policy-yaml/src/test/resources/v1.0.0/bad_policy_failure_exception_connected_to_unknown_policy.yaml
new file mode 100644
index 000000000..334f2aa6e
--- /dev/null
+++ b/controlloop/common/policy-yaml/src/test/resources/v1.0.0/bad_policy_failure_exception_connected_to_unknown_policy.yaml
@@ -0,0 +1,23 @@
+controlLoop:
+ controlLoopName: ControlLoop-TEST-5dfa8fce-bd7a-4424-b60d-ee2ad2f254a3
+ version: 1.0.0
+ services:
+ - serviceName: Foo Service
+ resources:
+ - resourceName: Bar VNF
+ resourceType: VF
+ trigger_policy: unique-policy-id-1-restart
+ timeout: 1200
+
+policies:
+ - id: unique-policy-id-1-restart
+ name: Restart Policy for Trigger Event
+ description:
+ actor: APPC
+ recipe: Restart
+ target:
+ type: VM
+ resourceID: vm1
+ retry: 2
+ timeout: 300
+ failure_exception: unknown-policy
diff --git a/controlloop/common/policy-yaml/src/test/resources/v1.0.0/bad_policy_failure_guard_connected_to_unknown_policy.yaml b/controlloop/common/policy-yaml/src/test/resources/v1.0.0/bad_policy_failure_guard_connected_to_unknown_policy.yaml
new file mode 100644
index 000000000..8d39ee86d
--- /dev/null
+++ b/controlloop/common/policy-yaml/src/test/resources/v1.0.0/bad_policy_failure_guard_connected_to_unknown_policy.yaml
@@ -0,0 +1,23 @@
+controlLoop:
+ controlLoopName: ControlLoop-TEST-5dfa8fce-bd7a-4424-b60d-ee2ad2f254a3
+ version: 1.0.0
+ services:
+ - serviceName: Foo Service
+ resources:
+ - resourceName: Bar VNF
+ resourceType: VF
+ trigger_policy: unique-policy-id-1-restart
+ timeout: 1200
+
+policies:
+ - id: unique-policy-id-1-restart
+ name: Restart Policy for Trigger Event
+ description:
+ actor: APPC
+ recipe: Restart
+ target:
+ type: VM
+ resourceID: vm1
+ retry: 2
+ timeout: 300
+ failure_guard: unknown-policy
diff --git a/controlloop/common/policy-yaml/src/test/resources/v1.0.0/bad_policy_failure_retries_connected_to_unknown_policy.yaml b/controlloop/common/policy-yaml/src/test/resources/v1.0.0/bad_policy_failure_retries_connected_to_unknown_policy.yaml
new file mode 100644
index 000000000..4108369a5
--- /dev/null
+++ b/controlloop/common/policy-yaml/src/test/resources/v1.0.0/bad_policy_failure_retries_connected_to_unknown_policy.yaml
@@ -0,0 +1,23 @@
+controlLoop:
+ controlLoopName: ControlLoop-TEST-5dfa8fce-bd7a-4424-b60d-ee2ad2f254a3
+ version: 1.0.0
+ services:
+ - serviceName: Foo Service
+ resources:
+ - resourceName: Bar VNF
+ resourceType: VF
+ trigger_policy: unique-policy-id-1-restart
+ timeout: 1200
+
+policies:
+ - id: unique-policy-id-1-restart
+ name: Restart Policy for Trigger Event
+ description:
+ actor: APPC
+ recipe: Restart
+ target:
+ type: VM
+ resourceID: vm1
+ retry: 2
+ timeout: 300
+ failure_retries: unknown-policy
diff --git a/controlloop/common/policy-yaml/src/test/resources/v1.0.0/bad_policy_failure_timeout_connected_to_unknown_policy.yaml b/controlloop/common/policy-yaml/src/test/resources/v1.0.0/bad_policy_failure_timeout_connected_to_unknown_policy.yaml
new file mode 100644
index 000000000..5dcc96a86
--- /dev/null
+++ b/controlloop/common/policy-yaml/src/test/resources/v1.0.0/bad_policy_failure_timeout_connected_to_unknown_policy.yaml
@@ -0,0 +1,23 @@
+controlLoop:
+ controlLoopName: ControlLoop-TEST-5dfa8fce-bd7a-4424-b60d-ee2ad2f254a3
+ version: 1.0.0
+ services:
+ - serviceName: Foo Service
+ resources:
+ - resourceName: Bar VNF
+ resourceType: VF
+ trigger_policy: unique-policy-id-1-restart
+ timeout: 1200
+
+policies:
+ - id: unique-policy-id-1-restart
+ name: Restart Policy for Trigger Event
+ description:
+ actor: APPC
+ recipe: Restart
+ target:
+ type: VM
+ resourceID: vm1
+ retry: 2
+ timeout: 300
+ failure_timeout: unknown-policy
diff --git a/controlloop/common/policy-yaml/src/test/resources/v1.0.0/bad_policy_success_connected_to_unknown_policy.yaml b/controlloop/common/policy-yaml/src/test/resources/v1.0.0/bad_policy_success_connected_to_unknown_policy.yaml
new file mode 100644
index 000000000..6df86e390
--- /dev/null
+++ b/controlloop/common/policy-yaml/src/test/resources/v1.0.0/bad_policy_success_connected_to_unknown_policy.yaml
@@ -0,0 +1,23 @@
+controlLoop:
+ controlLoopName: ControlLoop-TEST-5dfa8fce-bd7a-4424-b60d-ee2ad2f254a3
+ version: 1.0.0
+ services:
+ - serviceName: Foo Service
+ resources:
+ - resourceName: Bar VNF
+ resourceType: VF
+ trigger_policy: unique-policy-id-1-restart
+ timeout: 1200
+
+policies:
+ - id: unique-policy-id-1-restart
+ name: Restart Policy for Trigger Event
+ description:
+ actor: APPC
+ recipe: Restart
+ target:
+ type: VM
+ resourceID: vm1
+ retry: 2
+ timeout: 300
+ success: unknown-policy
diff --git a/controlloop/common/policy-yaml/src/test/resources/v1.0.0/bad_trigger_no_trigger_id.yaml b/controlloop/common/policy-yaml/src/test/resources/v1.0.0/bad_trigger_no_trigger_id.yaml
new file mode 100644
index 000000000..8231b2498
--- /dev/null
+++ b/controlloop/common/policy-yaml/src/test/resources/v1.0.0/bad_trigger_no_trigger_id.yaml
@@ -0,0 +1,21 @@
+controlLoop:
+ controlLoopName: ControlLoop-TEST-5dfa8fce-bd7a-4424-b60d-ee2ad2f254a3
+ version: 1.0.0
+ services:
+ - serviceName: Foo Service
+ resources:
+ - resourceName: Bar VNF
+ resourceType: VF
+ trigger_policy:
+ timeout: 1200
+
+policies:
+ - id: unique-policy-id-1-restart
+ name: Restart Policy for Trigger Event
+ description:
+ actor: APPC
+ recipe: Restart
+ target: VM
+ retry: 2
+ timeout: 300
+
diff --git a/controlloop/common/policy-yaml/src/test/resources/v1.0.0/empty.yaml b/controlloop/common/policy-yaml/src/test/resources/v1.0.0/empty.yaml
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/controlloop/common/policy-yaml/src/test/resources/v1.0.0/empty.yaml
diff --git a/controlloop/common/policy-yaml/src/test/resources/v1.0.0/test.yaml b/controlloop/common/policy-yaml/src/test/resources/v1.0.0/test.yaml
index b89a725cf..55caa0b9f 100644
--- a/controlloop/common/policy-yaml/src/test/resources/v1.0.0/test.yaml
+++ b/controlloop/common/policy-yaml/src/test/resources/v1.0.0/test.yaml
@@ -15,81 +15,290 @@ policies:
description:
actor: APPC
recipe: Restart
- target: VM
+ target:
+ type: VM
+ resourceID: vm1
retry: 2
timeout: 300
- success: unique-policy-id-2-healthcheck-restart
+ success: unique-policy-id-2-modifyconfig
failure: unique-policy-id-3-rebuild
failure_timeout: unique-policy-id-3-rebuild
failure_retries: unique-policy-id-3-rebuild
- failure_exception: final_failure_exception
+ failure_exception: unique-policy-id-7-modifyconfig-for-failure
+ failure_guard: unique-policy-id-7-modifyconfig-for-failure
- - id: unique-policy-id-2-healthcheck-restart
- name: HealthCheck Policy
+ - id: unique-policy-id-2-modifyconfig
+ name: ModifyConfig Policy
description:
actor: APPC
- recipe: HealthCheck
- target: VM
+ recipe: ModifyConfig
+ target:
+ type: VM
+ resourceID: vm1
retry: 2
timeout: 300
- success: final_success
+ success: FINAL_SUCCESS
failure: unique-policy-id-3-rebuild
failure_timeout: unique-policy-id-3-rebuild
failure_retries: unique-policy-id-3-rebuild
- failure_exception: final_failure_exception
+ failure_exception: FINAL_FAILURE_EXCEPTION
- id: unique-policy-id-3-rebuild
name: Rebuild Policy
description:
actor: APPC
recipe: Rebuild
- target: VM
+ target:
+ type: VM
+ resourceID: vm1
retry: 0
timeout: 600
- success: unique-policy-id-4-healthcheck-rebuild
+ success: unique-policy-id-4-modifyconfig
failure: unique-policy-id-5-migrate
failure_timeout: unique-policy-id-5-migrate
failure_retries: unique-policy-id-5-migrate
- failure_exception: final_failure_exception
+ failure_exception: FINAL_FAILURE_EXCEPTION
- - id: unique-policy-id-4-healthcheck-rebuild
+ - id: unique-policy-id-4-modifyconfig
name: HealthCheck the Rebuild Policy
description:
actor: APPC
- recipe: HealthCheck
- target: VM
+ recipe: ModifyConfig
+ target:
+ type: VM
+ resourceID: vm1
retry: 2
timeout: 300
- success: final_success
+ success: FINAL_SUCCESS
failure: unique-policy-id-5-migrate
failure_timeout: unique-policy-id-5-migrate
failure_retries: unique-policy-id-5-migrate
- failure_exception: final_failure_exception
+ failure_exception: FINAL_FAILURE_EXCEPTION
- id: unique-policy-id-5-migrate
name: Migrate Policy
description:
actor: APPC
recipe: Migrate
- target: VM
+ target:
+ type: VM
+ resourceID: vm1
retry: 0
timeout: 600
- success: unique-policy-id-6-healthcheck-migrate
- failure: final_failure
- failure_timeout: final_failure_timeout
- failure_retries: final_failure_retries
- failure_exception: final_failure_exception
+ success: unique-policy-id-6-modifyconfig
+ failure: FINAL_FAILURE
+ failure_timeout: FINAL_FAILURE_TIMEOUT
+ failure_retries: FINAL_FAILURE_RETRIES
+ failure_exception: FINAL_FAILURE_EXCEPTION
- - id: unique-policy-id-6-healthcheck-migrate
- name: Healthcheck the Migrate Policy
+ - id: unique-policy-id-6-modifyconfig
+ name: ModifyConfig after Migrate Policy
description:
actor: APPC
- recipe: HealthCheck
- target: VM
+ recipe: ModifyConfig
+ target:
+ type: VM
+ resourceID: vm1
retry: 2
timeout: 300
- success: final_success
- failure: final_failure
- failure_timeout: final_failure_timeout
- failure_retries: final_failure_retries
- failure_exception: final_failure_exception
+ success: FINAL_SUCCESS
+ failure: FINAL_FAILURE
+ failure_timeout: FINAL_FAILURE_TIMEOUT
+ failure_retries: FINAL_FAILURE_RETRIES
+ failure_exception: FINAL_FAILURE_EXCEPTION
+
+ - id: unique-policy-id-7-modifyconfig-for-failure
+ name: ModifyConfig for Failure
+ description:
+ actor: APPC
+ recipe: ModifyConfig
+ target:
+ type: VM
+ resourceID: vm1
+ retry: 2
+ timeout: 300
+ success: FINAL_SUCCESS
+ failure: FINAL_FAILURE
+ failure_timeout: FINAL_FAILURE_TIMEOUT
+ failure_retries: FINAL_FAILURE_RETRIES
+ failure_exception: FINAL_FAILURE_EXCEPTION
+
+ - id:
+ name: invalid policy - id is null
+ description:
+ actor: APPC
+ recipe: ModifyConfig
+ target:
+ type: VM
+ resourceID: vm1
+ retry: 2
+ timeout: 300
+ success: FINAL_SUCCESS
+
+ - id: SUCCESS
+ name: invalid policy - id is a PolicyResult
+ description:
+ actor: APPC
+ recipe: ModifyConfig
+ target:
+ type: VM
+ resourceID: vm1
+ retry: 2
+ timeout: 300
+ success: FINAL_SUCCESS
+
+ - id: FINAL_SUCCESS
+ name: invalid policy - id is a FinalResult
+ description:
+ actor: APPC
+ recipe: ModifyConfig
+ target:
+ type: VM
+ resourceID: vm1
+ retry: 2
+ timeout: 300
+ success: FINAL_SUCCESS
+
+ - id: invalid-policy-null-actor
+ name: invalid policy - actor is null
+ description:
+ actor:
+ recipe: ModifyConfig
+ target:
+ type: VM
+ resourceID: vm1
+ retry: 2
+ timeout: 300
+ success: FINAL_SUCCESS
+
+ - id: invalid-policy-unknown-actor
+ name: invalid policy - actor is unknown
+ description:
+ actor: UnknownActor
+ recipe: ModifyConfig
+ target:
+ type: VM
+ resourceID: vm1
+ retry: 2
+ timeout: 300
+ success: FINAL_SUCCESS
+
+ - id: invalid-policy-null-receipe
+ name: invalid policy - receipe is null
+ description:
+ actor: APPC
+ recipe:
+ target:
+ type: VM
+ resourceID: vm1
+ retry: 2
+ timeout: 300
+ success: FINAL_SUCCESS
+
+ - id: invalid-policy-unknown-receipe
+ name: invalid policy - unknown receipe
+ description:
+ actor: APPC
+ recipe: UnknownReceipe
+ target:
+ type: VM
+ resourceID: vm1
+ retry: 2
+ timeout: 300
+ success: FINAL_SUCCESS
+
+ - id: invalid-policy-null-target
+ name: invalid policy - target is null
+ description:
+ actor: APPC
+ recipe: ModifyConfig
+ target:
+ retry: 2
+ timeout: 300
+ success: FINAL_SUCCESS
+
+ - id: invalid-policy-null-target-type
+ name: invalid policy - target type is null
+ description:
+ actor: APPC
+ recipe: ModifyConfig
+ target:
+ type:
+ resourceID: vm1
+ retry: 2
+ timeout: 300
+ success: FINAL_SUCCESS
+
+ - id: invalid-policy-invalid-success-policy
+ name: invalid policy - success policy is invalid
+ description:
+ actor: APPC
+ recipe: ModifyConfig
+ target:
+ type: VM
+ resourceID: vm1
+ retry: 2
+ timeout: 300
+ success: FINAL_FAILURE
+
+ - id: invalid-policy-invalid-failure-policy
+ name: invalid policy - failure policy is invalid
+ description:
+ actor: APPC
+ recipe: ModifyConfig
+ target:
+ type: VM
+ resourceID: vm1
+ retry: 2
+ timeout: 300
+ failure: FINAL_FAILURE_TIMEOUT
+
+ - id: invalid-policy-invalid-failure-timeout-policy
+ name: invalid policy - failure timeout policy is invalid
+ description:
+ actor: APPC
+ recipe: ModifyConfig
+ target:
+ type: VM
+ resourceID: vm1
+ retry: 2
+ timeout: 300
+ failure_timeout: FINAL_FAILURE_RETRIES
+
+ - id: invalid-policy-invalid-failure-retries-policy
+ name: invalid policy - failure retries policy is invalid
+ description:
+ actor: APPC
+ recipe: ModifyConfig
+ target:
+ type: VM
+ resourceID: vm1
+ retry: 2
+ timeout: 300
+ failure_retries: FINAL_FAILURE_EXCEPTION
+
+ - id: invalid-policy-invalid-failure-exception-policy
+ name: invalid policy - failure exception policy is invalid
+ description:
+ actor: APPC
+ recipe: ModifyConfig
+ target:
+ type: VM
+ resourceID: vm1
+ retry: 2
+ timeout: 300
+ failure_exception: FINAL_FAILURE_GUARD
+
+ - id: invalid-policy-invalid-failure-guard-policy
+ name: invalid policy - failure guard policy is invalid
+ description:
+ actor: APPC
+ recipe: ModifyConfig
+ target:
+ type: VM
+ resourceID: vm1
+ retry: 2
+ timeout: 300
+ failure_guard: FINAL_SUCCESS
+
+