aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/test/java/org/onap
diff options
context:
space:
mode:
authorJim Hahn <jrh3@att.com>2021-06-23 16:27:20 -0400
committerJim Hahn <jrh3@att.com>2021-06-25 15:23:39 -0400
commitf76d2083c9440bac3ac866b30b52a3abedb9292c (patch)
treeae9819860b4c257222567bdca5aabb96d84b62c0 /main/src/test/java/org/onap
parent1a4b8b99c9903847640363b36beceffcfe44e1ac (diff)
Send pdp-update if PDP response doesn't match DB
Because multiple PAPs can be updating the DB, it's possible that a pdp-update sent by a PAP does not reflect the latest deployment data in the DB. To solve that problem, modified code to compare any response received from a PDP with what's in the DB, potentially generating a new pdp-update (and/or pdp-state-change). Issue-ID: POLICY-3426 Change-Id: I241994330d7645c0fffe66abc33de67d71d77250 Signed-off-by: Jim Hahn <jrh3@att.com>
Diffstat (limited to 'main/src/test/java/org/onap')
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/comm/PdpModifyRequestMapTest.java22
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/comm/PdpStatusMessageHandlerTest.java101
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/comm/msgdata/RequestImplTest.java16
3 files changed, 127 insertions, 12 deletions
diff --git a/main/src/test/java/org/onap/policy/pap/main/comm/PdpModifyRequestMapTest.java b/main/src/test/java/org/onap/policy/pap/main/comm/PdpModifyRequestMapTest.java
index 0e9be09f..fd5ff86e 100644
--- a/main/src/test/java/org/onap/policy/pap/main/comm/PdpModifyRequestMapTest.java
+++ b/main/src/test/java/org/onap/policy/pap/main/comm/PdpModifyRequestMapTest.java
@@ -101,6 +101,9 @@ public class PdpModifyRequestMapTest extends CommonRequestBase {
@Mock
private PolicyUndeployer undeployer;
+ @Mock
+ private PdpStatusMessageHandler responseHandler;
+
private MyMap map;
private PdpUpdate update;
private PdpStateChange change;
@@ -149,9 +152,10 @@ public class PdpModifyRequestMapTest extends CommonRequestBase {
assertFalse(map.isEmpty());
// indicate success
- getListener(getSingletons(1).get(0)).success(PDP1);
+ getListener(getSingletons(1).get(0)).success(PDP1, response);
assertTrue(map.isEmpty());
+ verify(responseHandler, never()).handlePdpStatus(response);
}
@Test
@@ -325,7 +329,9 @@ public class PdpModifyRequestMapTest extends CommonRequestBase {
map.addRequest(change);
// indicate success
- getListener(getSingletons(1).get(0)).success(PDP1);
+ getListener(getSingletons(1).get(0)).success(PDP1, response);
+
+ verify(responseHandler, never()).handlePdpStatus(response);
/*
* the above should have removed the requests so next time should allocate a new
@@ -344,7 +350,10 @@ public class PdpModifyRequestMapTest extends CommonRequestBase {
// indicate success with the update
when(requests.startNextRequest(updateReq)).thenReturn(true);
- getListener(updateReq).success(PDP1);
+ getListener(updateReq).success(PDP1, response);
+
+ // should be called for the update
+ verify(responseHandler).handlePdpStatus(response);
// should have started the next request
verify(requests).startNextRequest(updateReq);
@@ -654,7 +663,7 @@ public class PdpModifyRequestMapTest extends CommonRequestBase {
* @param count expected number of requests
*/
private void invokeSuccessHandler(int count) {
- getListener(getSingletons(count).get(0)).success(PDP1);
+ getListener(getSingletons(count).get(0)).success(PDP1, response);
}
/**
@@ -764,5 +773,10 @@ public class PdpModifyRequestMapTest extends CommonRequestBase {
++nalloc;
return requests;
}
+
+ @Override
+ protected PdpStatusMessageHandler makePdpResponseHandler() {
+ return responseHandler;
+ }
}
}
diff --git a/main/src/test/java/org/onap/policy/pap/main/comm/PdpStatusMessageHandlerTest.java b/main/src/test/java/org/onap/policy/pap/main/comm/PdpStatusMessageHandlerTest.java
new file mode 100644
index 00000000..5129bf5f
--- /dev/null
+++ b/main/src/test/java/org/onap/policy/pap/main/comm/PdpStatusMessageHandlerTest.java
@@ -0,0 +1,101 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP
+ * ================================================================================
+ * 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.
+ * 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.pap.main.comm;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.sql.SQLIntegrityConstraintViolationException;
+import org.eclipse.persistence.exceptions.EclipseLinkException;
+import org.junit.Test;
+
+public class PdpStatusMessageHandlerTest {
+
+ @Test
+ public void testIsDuplicateKeyException() {
+
+ // @formatter:off
+
+ // null exception
+ assertThat(PdpStatusMessageHandler.isDuplicateKeyException(null)).isFalse();
+
+ // plain exception
+ assertThat(PdpStatusMessageHandler.isDuplicateKeyException(
+ new Exception()))
+ .isFalse();
+
+ // cause is also plain
+ assertThat(PdpStatusMessageHandler.isDuplicateKeyException(
+ new Exception(
+ new Exception())))
+ .isFalse();
+
+ // dup key
+ assertThat(PdpStatusMessageHandler.isDuplicateKeyException(
+ new SQLIntegrityConstraintViolationException()))
+ .isTrue();
+
+ // cause is dup key
+ assertThat(PdpStatusMessageHandler.isDuplicateKeyException(
+ new Exception(
+ new SQLIntegrityConstraintViolationException())))
+ .isTrue();
+
+ // eclipselink exception, no internal exception
+ assertThat(PdpStatusMessageHandler.isDuplicateKeyException(
+ new MyEclipseLinkException()))
+ .isFalse();
+
+ // eclipselink exception, cause is plain
+ assertThat(PdpStatusMessageHandler.isDuplicateKeyException(
+ new MyEclipseLinkException(
+ new Exception())))
+ .isFalse();
+
+ // eclipselink exception, cause is dup
+ assertThat(PdpStatusMessageHandler.isDuplicateKeyException(
+ new MyEclipseLinkException(
+ new SQLIntegrityConstraintViolationException())))
+ .isTrue();
+
+ // multiple cause both inside and outside of the eclipselink exception
+ assertThat(PdpStatusMessageHandler.isDuplicateKeyException(
+ new Exception(
+ new Exception(
+ new MyEclipseLinkException(
+ new Exception(
+ new SQLIntegrityConstraintViolationException()))))))
+ .isTrue();
+
+ // @formatter:on
+ }
+
+ public static class MyEclipseLinkException extends EclipseLinkException {
+ private static final long serialVersionUID = 1L;
+
+ public MyEclipseLinkException() {
+ // do nothing
+ }
+
+ public MyEclipseLinkException(Exception exception) {
+ setInternalException(exception);
+ }
+ }
+}
diff --git a/main/src/test/java/org/onap/policy/pap/main/comm/msgdata/RequestImplTest.java b/main/src/test/java/org/onap/policy/pap/main/comm/msgdata/RequestImplTest.java
index abce7eb3..dd635627 100644
--- a/main/src/test/java/org/onap/policy/pap/main/comm/msgdata/RequestImplTest.java
+++ b/main/src/test/java/org/onap/policy/pap/main/comm/msgdata/RequestImplTest.java
@@ -292,7 +292,7 @@ public class RequestImplTest extends CommonRequestBase {
invokeProcessResponse(response);
- verify(listener).success(PDP1);
+ verify(listener).success(PDP1, response);
verify(listener, never()).failure(any(), any());
verify(timer).cancel();
}
@@ -305,7 +305,7 @@ public class RequestImplTest extends CommonRequestBase {
invokeProcessResponse(response);
- verify(listener, never()).success(any());
+ verify(listener, never()).success(any(), any());
verify(listener, never()).failure(any(), any());
}
@@ -317,7 +317,7 @@ public class RequestImplTest extends CommonRequestBase {
invokeProcessResponse(response);
- verify(listener, never()).success(any());
+ verify(listener, never()).success(any(), any());
verify(listener, never()).failure(any(), any());
verify(timer, never()).cancel();
}
@@ -330,7 +330,7 @@ public class RequestImplTest extends CommonRequestBase {
invokeProcessResponse(response);
- verify(listener, never()).success(any());
+ verify(listener, never()).success(any(), any());
verify(listener).failure(DIFFERENT, "PDP name does not match");
verify(timer).cancel();
}
@@ -390,7 +390,7 @@ public class RequestImplTest extends CommonRequestBase {
invokeProcessResponse(response);
- verify(listener).success(PDP1);
+ verify(listener).success(PDP1, response);
verify(listener, never()).failure(any(), any());
}
@@ -402,7 +402,7 @@ public class RequestImplTest extends CommonRequestBase {
invokeProcessResponse(response);
- verify(listener, never()).success(any());
+ verify(listener, never()).success(any(), any());
verify(listener).failure(null, "null PDP name");
}
@@ -414,7 +414,7 @@ public class RequestImplTest extends CommonRequestBase {
invokeProcessResponse(response);
- verify(listener, never()).success(any());
+ verify(listener, never()).success(any(), any());
verify(listener).failure(DIFFERENT, "PDP name does not match");
}
@@ -427,7 +427,7 @@ public class RequestImplTest extends CommonRequestBase {
invokeProcessResponse(response);
- verify(listener).success(DIFFERENT);
+ verify(listener).success(DIFFERENT, response);
verify(listener, never()).failure(any(), any());
}