aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--models-interactions/model-actors/actor.aai/src/main/java/org/onap/policy/controlloop/actor/aai/AaiGetPnfOperation.java4
-rw-r--r--models-interactions/model-actors/actor.aai/src/main/java/org/onap/policy/controlloop/actor/aai/AaiGetTenantOperation.java4
-rw-r--r--models-interactions/model-actors/actor.aai/src/test/java/org/onap/policy/controlloop/actor/aai/AaiGetPnfOperationTest.java17
-rw-r--r--models-interactions/model-actors/actor.aai/src/test/java/org/onap/policy/controlloop/actor/aai/AaiGetTenantOperationTest.java17
-rw-r--r--models-interactions/model-actors/actor.appclcm/src/main/java/org/onap/policy/controlloop/actor/appclcm/AppcLcmOperation.java4
-rw-r--r--models-interactions/model-actors/actor.appclcm/src/test/java/org/onap/policy/controlloop/actor/appclcm/AppcLcmOperationTest.java20
-rw-r--r--models-interactions/model-actors/actor.sdnc/src/main/java/org/onap/policy/controlloop/actor/sdnc/BandwidthOnDemandOperation.java10
-rw-r--r--models-interactions/model-actors/actor.sdnc/src/test/java/org/onap/policy/controlloop/actor/sdnc/BandwidthOnDemandOperationTest.java49
-rw-r--r--models-interactions/model-actors/actor.sdnr/src/main/java/org/onap/policy/controlloop/actor/sdnr/SdnrOperation.java4
-rw-r--r--models-interactions/model-actors/actor.sdnr/src/test/java/org/onap/policy/controlloop/actor/sdnr/SdnrOperationTest.java19
-rw-r--r--models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/ModifyNssi.java5
-rw-r--r--models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/SoOperation.java21
-rw-r--r--models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/VfModuleCreate.java6
-rw-r--r--models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/VfModuleDelete.java6
-rw-r--r--models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/ModifyNssiTest.java13
-rw-r--r--models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/SoOperationTest.java36
-rw-r--r--models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/VfModuleCreateTest.java25
-rw-r--r--models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/VfModuleDeleteTest.java25
-rw-r--r--models-interactions/model-actors/actor.so/src/test/resources/VfModuleDelete.json5
-rw-r--r--models-interactions/model-actors/actor.so/src/test/resources/vfModuleCreate.json5
20 files changed, 255 insertions, 40 deletions
diff --git a/models-interactions/model-actors/actor.aai/src/main/java/org/onap/policy/controlloop/actor/aai/AaiGetPnfOperation.java b/models-interactions/model-actors/actor.aai/src/main/java/org/onap/policy/controlloop/actor/aai/AaiGetPnfOperation.java
index c1582c51a..1f19918e1 100644
--- a/models-interactions/model-actors/actor.aai/src/main/java/org/onap/policy/controlloop/actor/aai/AaiGetPnfOperation.java
+++ b/models-interactions/model-actors/actor.aai/src/main/java/org/onap/policy/controlloop/actor/aai/AaiGetPnfOperation.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* ONAP
* ================================================================================
- * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2020-2021 AT&T 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.
@@ -72,7 +72,7 @@ public class AaiGetPnfOperation extends AaiGetOperation {
StringBuilder str = new StringBuilder(getClient().getBaseUrl());
- String target = getProperty(OperationProperties.AAI_TARGET_ENTITY);
+ String target = getRequiredProperty(OperationProperties.AAI_TARGET_ENTITY, "target entity");
String path = getPath() + URI_SEP + URLEncoder.encode(target, StandardCharsets.UTF_8);
WebTarget web = getClient().getWebTarget().path(path);
str.append(path);
diff --git a/models-interactions/model-actors/actor.aai/src/main/java/org/onap/policy/controlloop/actor/aai/AaiGetTenantOperation.java b/models-interactions/model-actors/actor.aai/src/main/java/org/onap/policy/controlloop/actor/aai/AaiGetTenantOperation.java
index b3bf4ce12..412e463eb 100644
--- a/models-interactions/model-actors/actor.aai/src/main/java/org/onap/policy/controlloop/actor/aai/AaiGetTenantOperation.java
+++ b/models-interactions/model-actors/actor.aai/src/main/java/org/onap/policy/controlloop/actor/aai/AaiGetTenantOperation.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* ONAP
* ================================================================================
- * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2020-2021 AT&T 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.
@@ -73,7 +73,7 @@ public class AaiGetTenantOperation extends AaiGetOperation {
WebTarget web = getClient().getWebTarget().path(path);
str.append(path);
- String target = getProperty(OperationProperties.AAI_TARGET_ENTITY);
+ String target = getRequiredProperty(OperationProperties.AAI_TARGET_ENTITY, "target entity");
web = addQuery(web, str, "?", "search-node-type", "vserver");
web = addQuery(web, str, "&", "filter", "vserver-name:EQUALS:" + target);
diff --git a/models-interactions/model-actors/actor.aai/src/test/java/org/onap/policy/controlloop/actor/aai/AaiGetPnfOperationTest.java b/models-interactions/model-actors/actor.aai/src/test/java/org/onap/policy/controlloop/actor/aai/AaiGetPnfOperationTest.java
index 9e72fe2e8..a5c115be4 100644
--- a/models-interactions/model-actors/actor.aai/src/test/java/org/onap/policy/controlloop/actor/aai/AaiGetPnfOperationTest.java
+++ b/models-interactions/model-actors/actor.aai/src/test/java/org/onap/policy/controlloop/actor/aai/AaiGetPnfOperationTest.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* ONAP
* ================================================================================
- * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2020-2021 AT&T 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.
@@ -21,6 +21,7 @@
package org.onap.policy.controlloop.actor.aai;
import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -164,6 +165,20 @@ public class AaiGetPnfOperationTest extends BasicAaiOperation {
assertEquals(OperationResult.FAILURE, future2.get().getResult());
}
+ /**
+ * Tests startOperationAsync() when a property is missing.
+ */
+ @Test
+ public void testStartOperationAsyncMissingProperty() throws Exception {
+ oper = new AaiGetPnfOperation(params, config);
+
+ oper.generateSubRequestId(1);
+ outcome.setSubRequestId(oper.getSubRequestId());
+
+ assertThatIllegalStateException().isThrownBy(() -> oper.startOperationAsync(1, outcome))
+ .withMessageContaining("missing target entity");
+ }
+
@Test
public void testGetKey() {
assertEquals("AAI.Pnf." + TARGET_ENTITY, AaiGetPnfOperation.getKey(TARGET_ENTITY));
diff --git a/models-interactions/model-actors/actor.aai/src/test/java/org/onap/policy/controlloop/actor/aai/AaiGetTenantOperationTest.java b/models-interactions/model-actors/actor.aai/src/test/java/org/onap/policy/controlloop/actor/aai/AaiGetTenantOperationTest.java
index a79a8f79a..86c52aeef 100644
--- a/models-interactions/model-actors/actor.aai/src/test/java/org/onap/policy/controlloop/actor/aai/AaiGetTenantOperationTest.java
+++ b/models-interactions/model-actors/actor.aai/src/test/java/org/onap/policy/controlloop/actor/aai/AaiGetTenantOperationTest.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* ONAP
* ================================================================================
- * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2020-2021 AT&T 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.
@@ -21,6 +21,7 @@
package org.onap.policy.controlloop.actor.aai;
import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -164,6 +165,20 @@ public class AaiGetTenantOperationTest extends BasicAaiOperation {
assertEquals(OperationResult.FAILURE, future2.get().getResult());
}
+ /**
+ * Tests startOperationAsync() when a property is missing.
+ */
+ @Test
+ public void testStartOperationAsyncMissingProperty() throws Exception {
+ oper = new AaiGetTenantOperation(params, config);
+
+ oper.generateSubRequestId(1);
+ outcome.setSubRequestId(oper.getSubRequestId());
+
+ assertThatIllegalStateException().isThrownBy(() -> oper.startOperationAsync(1, outcome))
+ .withMessageContaining("missing target entity");
+ }
+
@Test
public void testGetKey() {
assertEquals("AAI.Tenant." + TARGET_ENTITY, AaiGetTenantOperation.getKey(TARGET_ENTITY));
diff --git a/models-interactions/model-actors/actor.appclcm/src/main/java/org/onap/policy/controlloop/actor/appclcm/AppcLcmOperation.java b/models-interactions/model-actors/actor.appclcm/src/main/java/org/onap/policy/controlloop/actor/appclcm/AppcLcmOperation.java
index bf204781a..559709e9a 100644
--- a/models-interactions/model-actors/actor.appclcm/src/main/java/org/onap/policy/controlloop/actor/appclcm/AppcLcmOperation.java
+++ b/models-interactions/model-actors/actor.appclcm/src/main/java/org/onap/policy/controlloop/actor/appclcm/AppcLcmOperation.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* ONAP
* ================================================================================
- * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2020-2021 AT&T 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.
@@ -84,7 +84,7 @@ public class AppcLcmOperation extends BidirectionalTopicOperation<AppcLcmDmaapWr
* Action Identifiers are required for APPC LCM requests. For R1, the recipes
* supported by Policy only require a vnf-id.
*/
- String target = getProperty(OperationProperties.AAI_TARGET_ENTITY);
+ String target = getRequiredProperty(OperationProperties.AAI_TARGET_ENTITY, "target entity");
inputRequest.setActionIdentifiers(Map.of(VNF_ID_KEY, target));
/*
diff --git a/models-interactions/model-actors/actor.appclcm/src/test/java/org/onap/policy/controlloop/actor/appclcm/AppcLcmOperationTest.java b/models-interactions/model-actors/actor.appclcm/src/test/java/org/onap/policy/controlloop/actor/appclcm/AppcLcmOperationTest.java
index b9999f4a1..36496455a 100644
--- a/models-interactions/model-actors/actor.appclcm/src/test/java/org/onap/policy/controlloop/actor/appclcm/AppcLcmOperationTest.java
+++ b/models-interactions/model-actors/actor.appclcm/src/test/java/org/onap/policy/controlloop/actor/appclcm/AppcLcmOperationTest.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* ONAP
* ================================================================================
- * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2020-2021 AT&T 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.
@@ -22,7 +22,7 @@ package org.onap.policy.controlloop.actor.appclcm;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
@@ -159,6 +159,18 @@ public class AppcLcmOperationTest extends BasicBidirectionalTopicOperation<AppcL
assertEquals(subreq, request.getBody().getInput().getCommonHeader().getSubRequestId());
}
+ /**
+ * Tests makeRequest() when a property is missing.
+ */
+ @Test
+ public void testMakeRequestMissingProperty() throws Exception {
+ oper = new AppcLcmOperation(params, config);
+ oper.generateSubRequestId(1);
+
+ assertThatIllegalStateException().isThrownBy(() -> oper.makeRequest(1))
+ .withMessageContaining("missing target entity");
+ }
+
@Test
public void testConvertPayload() {
// only builds a payload for ConfigModify
@@ -183,9 +195,11 @@ public class AppcLcmOperationTest extends BasicBidirectionalTopicOperation<AppcL
}
};
+ oper.setProperty(OperationProperties.AAI_TARGET_ENTITY, TARGET_ENTITY);
oper.generateSubRequestId(2);
- assertThatThrownBy(() -> oper.makeRequest(2)).isInstanceOf(NullPointerException.class);
+ assertThatIllegalArgumentException().isThrownBy(() -> oper.makeRequest(2))
+ .withMessageContaining("Cannot convert payload");
}
@Test
diff --git a/models-interactions/model-actors/actor.sdnc/src/main/java/org/onap/policy/controlloop/actor/sdnc/BandwidthOnDemandOperation.java b/models-interactions/model-actors/actor.sdnc/src/main/java/org/onap/policy/controlloop/actor/sdnc/BandwidthOnDemandOperation.java
index 2946a2055..61bf8385a 100644
--- a/models-interactions/model-actors/actor.sdnc/src/main/java/org/onap/policy/controlloop/actor/sdnc/BandwidthOnDemandOperation.java
+++ b/models-interactions/model-actors/actor.sdnc/src/main/java/org/onap/policy/controlloop/actor/sdnc/BandwidthOnDemandOperation.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* ONAP
* ================================================================================
- * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2020-2021 AT&T 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.
@@ -73,11 +73,13 @@ public class BandwidthOnDemandOperation extends SdncOperation {
SdncHealVfModuleParameter bandwidth = new SdncHealVfModuleParameter();
bandwidth.setName(BANDWIDTH);
- bandwidth.setValue(getProperty(OperationProperties.ENRICHMENT_BANDWIDTH));
+ bandwidth.setValue(getRequiredProperty(OperationProperties.ENRICHMENT_BANDWIDTH,
+ "bandwidth from enrichment data"));
SdncHealVfModuleParameter timeStamp = new SdncHealVfModuleParameter();
timeStamp.setName(BANDWIDTH_CHANGE_TIME);
- timeStamp.setValue(getProperty(OperationProperties.ENRICHMENT_BANDWIDTH_CHANGE_TIME));
+ timeStamp.setValue(getRequiredProperty(OperationProperties.ENRICHMENT_BANDWIDTH_CHANGE_TIME,
+ "bandwidth change time from enrichment data"));
SdncHealVfModuleParametersInfo vfParametersInfo = new SdncHealVfModuleParametersInfo();
vfParametersInfo.addParameters(bandwidth);
@@ -102,7 +104,7 @@ public class BandwidthOnDemandOperation extends SdncOperation {
request.setUrl("/" + getPath());
SdncHealVnfInfo vnfInfo = new SdncHealVnfInfo();
- vnfInfo.setVnfId(getProperty(OperationProperties.ENRICHMENT_VNF_ID));
+ vnfInfo.setVnfId(getRequiredProperty(OperationProperties.ENRICHMENT_VNF_ID, "VNF id from enrichment data"));
SdncHealVfModuleInfo vfModuleInfo = new SdncHealVfModuleInfo();
vfModuleInfo.setVfModuleId("");
diff --git a/models-interactions/model-actors/actor.sdnc/src/test/java/org/onap/policy/controlloop/actor/sdnc/BandwidthOnDemandOperationTest.java b/models-interactions/model-actors/actor.sdnc/src/test/java/org/onap/policy/controlloop/actor/sdnc/BandwidthOnDemandOperationTest.java
index 8c12be8f9..ebfc04d24 100644
--- a/models-interactions/model-actors/actor.sdnc/src/test/java/org/onap/policy/controlloop/actor/sdnc/BandwidthOnDemandOperationTest.java
+++ b/models-interactions/model-actors/actor.sdnc/src/test/java/org/onap/policy/controlloop/actor/sdnc/BandwidthOnDemandOperationTest.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* ONAP
* ================================================================================
- * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2020-2021 AT&T 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.
@@ -21,6 +21,7 @@
package org.onap.policy.controlloop.actor.sdnc;
import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@@ -118,4 +119,50 @@ public class BandwidthOnDemandOperationTest extends BasicSdncOperation {
verifyRequest("bod.json", verifyOperation(oper), IGNORE_FIELDS);
}
+
+ /*
+ * Tests makeRequest() when a property is missing.
+ */
+
+ @Test
+ public void testMakeRequestMissingBandwidth() throws Exception {
+ oper = new BandwidthOnDemandOperation(params, config);
+ oper.setProperty(OperationProperties.ENRICHMENT_SERVICE_ID, MY_SERVICE);
+ oper.setProperty(OperationProperties.ENRICHMENT_BANDWIDTH_CHANGE_TIME, MY_CHANGE_TIME);
+ oper.setProperty(OperationProperties.ENRICHMENT_VNF_ID, MY_VNF);
+
+ oper.generateSubRequestId(1);
+ outcome.setSubRequestId(oper.getSubRequestId());
+
+ assertThatIllegalStateException().isThrownBy(() -> oper.makeRequest(1))
+ .withMessageContaining("missing bandwidth from enrichment data");
+ }
+
+ @Test
+ public void testMakeRequestMissingBandwidthChangeTime() throws Exception {
+ oper = new BandwidthOnDemandOperation(params, config);
+ oper.setProperty(OperationProperties.ENRICHMENT_SERVICE_ID, MY_SERVICE);
+ oper.setProperty(OperationProperties.ENRICHMENT_BANDWIDTH, MY_BANDWIDTH);
+ oper.setProperty(OperationProperties.ENRICHMENT_VNF_ID, MY_VNF);
+
+ oper.generateSubRequestId(1);
+ outcome.setSubRequestId(oper.getSubRequestId());
+
+ assertThatIllegalStateException().isThrownBy(() -> oper.makeRequest(1))
+ .withMessageContaining("missing bandwidth change time from enrichment data");
+ }
+
+ @Test
+ public void testMakeRequestMissingVnfId() throws Exception {
+ oper = new BandwidthOnDemandOperation(params, config);
+ oper.setProperty(OperationProperties.ENRICHMENT_SERVICE_ID, MY_SERVICE);
+ oper.setProperty(OperationProperties.ENRICHMENT_BANDWIDTH, MY_BANDWIDTH);
+ oper.setProperty(OperationProperties.ENRICHMENT_BANDWIDTH_CHANGE_TIME, MY_CHANGE_TIME);
+
+ oper.generateSubRequestId(1);
+ outcome.setSubRequestId(oper.getSubRequestId());
+
+ assertThatIllegalStateException().isThrownBy(() -> oper.makeRequest(1))
+ .withMessageContaining("missing VNF id from enrichment data");
+ }
}
diff --git a/models-interactions/model-actors/actor.sdnr/src/main/java/org/onap/policy/controlloop/actor/sdnr/SdnrOperation.java b/models-interactions/model-actors/actor.sdnr/src/main/java/org/onap/policy/controlloop/actor/sdnr/SdnrOperation.java
index 14f77a687..ebfbaba68 100644
--- a/models-interactions/model-actors/actor.sdnr/src/main/java/org/onap/policy/controlloop/actor/sdnr/SdnrOperation.java
+++ b/models-interactions/model-actors/actor.sdnr/src/main/java/org/onap/policy/controlloop/actor/sdnr/SdnrOperation.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* SdnrOperation
* ================================================================================
- * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2020-2021 AT&T 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.
@@ -150,7 +150,7 @@ public class SdnrOperation extends BidirectionalTopicOperation<PciMessage, PciMe
requestCommonHeader.setSubRequestId(subRequestId);
sdnrRequest.setCommonHeader(requestCommonHeader);
- sdnrRequest.setPayload(getProperty(OperationProperties.EVENT_PAYLOAD));
+ sdnrRequest.setPayload(getRequiredProperty(OperationProperties.EVENT_PAYLOAD, "event payload"));
sdnrRequest.setAction(params.getOperation());
/*
diff --git a/models-interactions/model-actors/actor.sdnr/src/test/java/org/onap/policy/controlloop/actor/sdnr/SdnrOperationTest.java b/models-interactions/model-actors/actor.sdnr/src/test/java/org/onap/policy/controlloop/actor/sdnr/SdnrOperationTest.java
index 3a8f0b7e1..ba3a6005a 100644
--- a/models-interactions/model-actors/actor.sdnr/src/test/java/org/onap/policy/controlloop/actor/sdnr/SdnrOperationTest.java
+++ b/models-interactions/model-actors/actor.sdnr/src/test/java/org/onap/policy/controlloop/actor/sdnr/SdnrOperationTest.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* SdnrOperation
* ================================================================================
- * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2020-2021 AT&T 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.
@@ -21,6 +21,7 @@
package org.onap.policy.controlloop.actor.sdnr;
import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertSame;
@@ -67,6 +68,7 @@ public class SdnrOperationTest extends BasicSdnrOperation {
super.setUp();
operation = new SdnrOperation(params, config);
+ operation.setProperty(OperationProperties.EVENT_PAYLOAD, "my payload");
}
@After
@@ -106,6 +108,20 @@ public class SdnrOperationTest extends BasicSdnrOperation {
assertEquals(params.getRequestId(), header.getRequestId());
}
+ /**
+ * Tests makeRequest() when a property is missing.
+ */
+ @Test
+ public void testMakeRequestMissingProperty() throws Exception {
+ operation = new SdnrOperation(params, config);
+
+ operation.generateSubRequestId(1);
+ outcome.setSubRequestId(operation.getSubRequestId());
+
+ assertThatIllegalStateException().isThrownBy(() -> operation.makeRequest(1))
+ .withMessageContaining("missing event payload");
+ }
+
@Test
public void testGetExpectedKeyValues() {
operation.generateSubRequestId(1);
@@ -127,6 +143,7 @@ public class SdnrOperationTest extends BasicSdnrOperation {
params = params.toBuilder().retry(0).timeoutSec(5).executor(blockingExecutor).build();
operation = new SdnrOperation(params, config);
+ operation.setProperty(OperationProperties.EVENT_PAYLOAD, "my payload");
outcome = operation.start().get();
assertEquals(OperationResult.SUCCESS, outcome.getResult());
diff --git a/models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/ModifyNssi.java b/models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/ModifyNssi.java
index 2c5038834..5386d96dd 100644
--- a/models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/ModifyNssi.java
+++ b/models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/ModifyNssi.java
@@ -3,6 +3,7 @@
* ONAP
* ================================================================================
* Copyright (C) 2020 Wipro Limited.
+ * Modifications Copyright (C) 2021 AT&T 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.
@@ -67,9 +68,9 @@ public class ModifyNssi extends SoOperation {
return handleResponse(outcome, url, callback -> getClient().put(callback, path, entity, headers));
}
- private SoRequest3gpp makeRequest() {
+ protected SoRequest3gpp makeRequest() {
- String payload = getProperty(OperationProperties.EVENT_PAYLOAD);
+ String payload = getRequiredProperty(OperationProperties.EVENT_PAYLOAD, "event payload");
try {
return getCoder().convert(payload, SoRequest3gpp.class);
} catch (CoderException e) {
diff --git a/models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/SoOperation.java b/models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/SoOperation.java
index e3328e976..8d3fb59af 100644
--- a/models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/SoOperation.java
+++ b/models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/SoOperation.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* ONAP
* ================================================================================
- * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2020-2021 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2020 Wipro Limited.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -324,12 +324,27 @@ public abstract class SoOperation extends HttpOperation<SoResponse> {
*/
protected SoCloudConfiguration constructCloudConfiguration(Tenant tenantItem, CloudRegion cloudRegionItem) {
SoCloudConfiguration cloudConfiguration = new SoCloudConfiguration();
- cloudConfiguration.setTenantId(tenantItem.getTenantId());
- cloudConfiguration.setLcpCloudRegionId(cloudRegionItem.getCloudRegionId());
+ cloudConfiguration.setTenantId(getRequiredText("tenant ID", tenantItem.getTenantId()));
+ cloudConfiguration.setLcpCloudRegionId(getRequiredText("cloud region ID", cloudRegionItem.getCloudRegionId()));
return cloudConfiguration;
}
/**
+ * Verifies that a value is not {@code null}.
+ *
+ * @param name value name
+ * @param value value to check
+ * @return the value
+ */
+ protected String getRequiredText(String name, String value) {
+ if (value == null) {
+ throw new IllegalArgumentException("missing " + name);
+ }
+
+ return value;
+ }
+
+ /**
* Create simple HTTP headers for unauthenticated requests to SO.
*
* @return the HTTP headers
diff --git a/models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/VfModuleCreate.java b/models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/VfModuleCreate.java
index b778c10d7..3d753bb0b 100644
--- a/models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/VfModuleCreate.java
+++ b/models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/VfModuleCreate.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* ONAP
* ================================================================================
- * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2020-2021 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2020 Wipro Limited.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -197,8 +197,8 @@ public class VfModuleCreate extends SoOperation {
buildConfigurationParameters().ifPresent(request.getRequestDetails()::setConfigurationParameters);
// compute the path
- String path = PATH_PREFIX + vnfServiceItem.getServiceInstanceId() + "/vnfs/" + vnfItem.getVnfId()
- + "/vfModules/scaleOut";
+ String svcId = getRequiredText("service instance ID", vnfServiceItem.getServiceInstanceId());
+ String path = PATH_PREFIX + svcId + "/vnfs/" + vnfItem.getVnfId() + "/vfModules/scaleOut";
return Pair.of(path, request);
}
diff --git a/models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/VfModuleDelete.java b/models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/VfModuleDelete.java
index b82444049..1881b5c58 100644
--- a/models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/VfModuleDelete.java
+++ b/models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/VfModuleDelete.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* ONAP
* ================================================================================
- * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2020-2021 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2020 Wipro Limited.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -239,8 +239,8 @@ public class VfModuleDelete extends SoOperation {
*/
// compute the path
- String path = PATH_PREFIX + vnfServiceItem.getServiceInstanceId() + "/vnfs/" + vnfItem.getVnfId()
- + "/vfModules/null";
+ String svcId = getRequiredText("service instance ID", vnfServiceItem.getServiceInstanceId());
+ String path = PATH_PREFIX + svcId + "/vnfs/" + vnfItem.getVnfId() + "/vfModules/null";
return Pair.of(path, request);
}
diff --git a/models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/ModifyNssiTest.java b/models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/ModifyNssiTest.java
index 2ef9caac9..29a7d082a 100644
--- a/models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/ModifyNssiTest.java
+++ b/models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/ModifyNssiTest.java
@@ -3,7 +3,7 @@
* ONAP
* ================================================================================
* Copyright (C) 2020 Wipro Limited.
- * Modifications Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2020-2021 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2020 Nordix Foundation.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,6 +24,7 @@ package org.onap.policy.controlloop.actor.so;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
+import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -102,5 +103,15 @@ public class ModifyNssiTest extends BasicSoOperation {
return ResourceUtils.getResourceAsString("src/test/resources/ModifyNSSI.json");
}
+ /**
+ * Tests makeRequest() when a property is missing.
+ */
+ @Test
+ public void testMakeRequestMissingProperty() throws Exception {
+ oper = new ModifyNssi(params, config);
+
+ assertThatIllegalStateException().isThrownBy(() -> oper.makeRequest())
+ .withMessageContaining("missing event payload");
+ }
}
diff --git a/models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/SoOperationTest.java b/models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/SoOperationTest.java
index 6f4ac0ed3..50bbfee2b 100644
--- a/models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/SoOperationTest.java
+++ b/models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/SoOperationTest.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* ONAP
* ================================================================================
- * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2020-2021 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2020 Wipro Limited.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -37,6 +37,8 @@ import java.util.List;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
+import org.onap.aai.domain.yang.CloudRegion;
+import org.onap.aai.domain.yang.Tenant;
import org.onap.policy.common.utils.coder.Coder;
import org.onap.policy.common.utils.coder.CoderException;
import org.onap.policy.controlloop.ControlLoopOperation;
@@ -206,6 +208,38 @@ public class SoOperationTest extends BasicSoOperation {
}
@Test
+ public void testConstructCloudConfiguration() throws Exception {
+ Tenant tenantItem = new Tenant();
+ tenantItem.setTenantId("my-tenant-id");
+
+ CloudRegion cloudRegionItem = new CloudRegion();
+ cloudRegionItem.setCloudRegionId("my-cloud-id");
+
+ assertThatCode(() -> oper.constructCloudConfiguration(tenantItem, cloudRegionItem)).doesNotThrowAnyException();
+
+ tenantItem.setTenantId(null);
+ assertThatIllegalArgumentException()
+ .isThrownBy(() -> oper.constructCloudConfiguration(tenantItem, cloudRegionItem))
+ .withMessageContaining("missing tenant ID");
+ tenantItem.setTenantId("my-tenant-id");
+
+ cloudRegionItem.setCloudRegionId(null);
+ assertThatIllegalArgumentException()
+ .isThrownBy(() -> oper.constructCloudConfiguration(tenantItem, cloudRegionItem))
+ .withMessageContaining("missing cloud region ID");
+ cloudRegionItem.setCloudRegionId("my-cloud-id");
+ }
+
+ @Test
+ public void testGetRequiredText() throws Exception {
+
+ assertThatCode(() -> oper.getRequiredText("some value", "my value")).doesNotThrowAnyException();
+
+ assertThatIllegalArgumentException().isThrownBy(() -> oper.getRequiredText("some value", null))
+ .withMessageContaining("missing some value");
+ }
+
+ @Test
public void testGetCoder() throws CoderException {
Coder opcoder = oper.getCoder();
diff --git a/models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/VfModuleCreateTest.java b/models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/VfModuleCreateTest.java
index dfd5c92f6..7168ec449 100644
--- a/models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/VfModuleCreateTest.java
+++ b/models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/VfModuleCreateTest.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* ONAP
* ================================================================================
- * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2020-2021 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2020 Wipro Limited.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -212,6 +212,20 @@ public class VfModuleCreateTest extends BasicSoOperation {
verifyRequest("vfModuleCreate.json", pair.getRight());
}
+ /**
+ * Tests makeRequest() when a property is missing.
+ */
+ @Test
+ public void testMakeRequestMissingProperty() throws Exception {
+ loadProperties();
+
+ ServiceInstance instance = new ServiceInstance();
+ oper.setProperty(OperationProperties.AAI_SERVICE, instance);
+
+ assertThatIllegalArgumentException().isThrownBy(() -> oper.makeRequest())
+ .withMessageContaining("missing service instance ID");
+ }
+
private void loadProperties() {
// set the properties
ServiceInstance instance = new ServiceInstance();
@@ -229,8 +243,13 @@ public class VfModuleCreateTest extends BasicSoOperation {
vnf.setVnfId(VNF_ID);
oper.setProperty(OperationProperties.AAI_VNF, vnf);
- oper.setProperty(OperationProperties.AAI_DEFAULT_CLOUD_REGION, new CloudRegion());
- oper.setProperty(OperationProperties.AAI_DEFAULT_TENANT, new Tenant());
+ CloudRegion cloudRegion = new CloudRegion();
+ cloudRegion.setCloudRegionId("my-cloud-id");
+ oper.setProperty(OperationProperties.AAI_DEFAULT_CLOUD_REGION, cloudRegion);
+
+ Tenant tenant = new Tenant();
+ tenant.setTenantId("my-tenant-id");
+ oper.setProperty(OperationProperties.AAI_DEFAULT_TENANT, tenant);
oper.setProperty(OperationProperties.DATA_VF_COUNT, VF_COUNT);
}
diff --git a/models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/VfModuleDeleteTest.java b/models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/VfModuleDeleteTest.java
index ce762011a..cc11f952d 100644
--- a/models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/VfModuleDeleteTest.java
+++ b/models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/VfModuleDeleteTest.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* ONAP
* ================================================================================
- * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2020-2021 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2020 Wipro Limited.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -351,6 +351,20 @@ public class VfModuleDeleteTest extends BasicSoOperation {
assertEquals("Basic " + encoded, valueCaptor.getValue());
}
+ /**
+ * Tests makeRequest() when a property is missing.
+ */
+ @Test
+ public void testMakeRequestMissingProperty() throws Exception {
+ loadProperties();
+
+ ServiceInstance instance = new ServiceInstance();
+ oper.setProperty(OperationProperties.AAI_SERVICE, instance);
+
+ assertThatIllegalArgumentException().isThrownBy(() -> oper.makeRequest())
+ .withMessageContaining("missing service instance ID");
+ }
+
@Test
public void testMakeHttpClient() {
// must use a real operation to invoke this method
@@ -393,8 +407,13 @@ public class VfModuleDeleteTest extends BasicSoOperation {
vnf.setVnfId(VNF_ID);
oper.setProperty(OperationProperties.AAI_VNF, vnf);
- oper.setProperty(OperationProperties.AAI_DEFAULT_CLOUD_REGION, new CloudRegion());
- oper.setProperty(OperationProperties.AAI_DEFAULT_TENANT, new Tenant());
+ CloudRegion cloudRegion = new CloudRegion();
+ cloudRegion.setCloudRegionId("my-cloud-id");
+ oper.setProperty(OperationProperties.AAI_DEFAULT_CLOUD_REGION, cloudRegion);
+
+ Tenant tenant = new Tenant();
+ tenant.setTenantId("my-tenant-id");
+ oper.setProperty(OperationProperties.AAI_DEFAULT_TENANT, tenant);
oper.setProperty(OperationProperties.DATA_VF_COUNT, VF_COUNT);
}
diff --git a/models-interactions/model-actors/actor.so/src/test/resources/VfModuleDelete.json b/models-interactions/model-actors/actor.so/src/test/resources/VfModuleDelete.json
index 5b7cce5f3..f83344dc3 100644
--- a/models-interactions/model-actors/actor.so/src/test/resources/VfModuleDelete.json
+++ b/models-interactions/model-actors/actor.so/src/test/resources/VfModuleDelete.json
@@ -8,7 +8,10 @@
"modelVersion": "my-model-version",
"modelCustomizationId": "my-model-customization-id"
},
- "cloudConfiguration": {},
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "my-cloud-id",
+ "tenantId": "my-tenant-id"
+ },
"requestInfo": {
"source": "POLICY",
"suppressRollback": false,
diff --git a/models-interactions/model-actors/actor.so/src/test/resources/vfModuleCreate.json b/models-interactions/model-actors/actor.so/src/test/resources/vfModuleCreate.json
index 06258f3f3..c28d73efa 100644
--- a/models-interactions/model-actors/actor.so/src/test/resources/vfModuleCreate.json
+++ b/models-interactions/model-actors/actor.so/src/test/resources/vfModuleCreate.json
@@ -8,7 +8,10 @@
"modelVersion": "my-model-version",
"modelCustomizationId": "my-model-customization-id"
},
- "cloudConfiguration": {},
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "my-cloud-id",
+ "tenantId": "my-tenant-id"
+ },
"requestInfo": {
"instanceName": "vfModuleName",
"source": "POLICY",