diff options
author | Jim Hahn <jrh3@att.com> | 2020-03-25 15:24:41 -0400 |
---|---|---|
committer | Jim Hahn <jrh3@att.com> | 2020-03-25 15:24:41 -0400 |
commit | ea3ba40703cba1e5a95fea05f359b7364ba1f7da (patch) | |
tree | e39680af5b7a1c09e4ea0fe817a701bde903d266 /controlloop/common/eventmanager | |
parent | 9477940e341db68d9cd7f3fe8f722109964da521 (diff) |
Fix db exception in frankfurt junit
Frankfurt junits were generating the following output:
Value too long for column "TARGET VARCHAR(50)":
"'Target [type=VNF, resourceId=bbb3cefd-01c8-413c-9bdd-2b92f9ca3d38]'
The issue turned out to be caused by the fact that the rules for the
new actor were storing the "Target" instead of the "TargetEntity"
in the DB field. Modified the code to store the target entity, as the
the usecases rules do.
Issue-ID: POLICY-2441
Signed-off-by: Jim Hahn <jrh3@att.com>
Change-Id: I91ee517ef073e3dc3fea4698c814b57a06d87095
Diffstat (limited to 'controlloop/common/eventmanager')
7 files changed, 41 insertions, 27 deletions
diff --git a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManager2.java b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManager2.java index 156dad7e6..a096522bc 100644 --- a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManager2.java +++ b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManager2.java @@ -585,7 +585,7 @@ public class ControlLoopOperationManager2 implements Serializable { * Stores the latest operation in the DB. */ private void storeOperationInDataBase() { - operContext.getDataManager().store(requestId, eventContext.getEvent(), + operContext.getDataManager().store(requestId, eventContext.getEvent(), targetEntity, operationHistory.peekLast().getClOperation()); } diff --git a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManager.java b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManager.java index a1774ea6f..091c38ef3 100644 --- a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManager.java +++ b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManager.java @@ -34,9 +34,10 @@ public interface OperationHistoryDataManager { * * @param requestId request ID * @param event event with which the operation is associated + * @param targetEntity target entity associated with the operation * @param operation operation to be stored */ - void store(String requestId, VirtualControlLoopEvent event, ControlLoopOperation operation); + void store(String requestId, VirtualControlLoopEvent event, String targetEntity, ControlLoopOperation operation); /** * Starts the background thread. diff --git a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerImpl.java b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerImpl.java index f7576f139..5de38a4c3 100644 --- a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerImpl.java +++ b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerImpl.java @@ -110,6 +110,8 @@ public class OperationHistoryDataManagerImpl implements OperationHistoryDataMana return; } + logger.info("start operation history thread"); + thread = makeThread(emFactory, this::run); thread.setDaemon(true); thread.start(); @@ -117,6 +119,8 @@ public class OperationHistoryDataManagerImpl implements OperationHistoryDataMana @Override public synchronized void stop() { + logger.info("requesting stop of operation history thread"); + stopped = true; if (thread == null) { @@ -130,7 +134,8 @@ public class OperationHistoryDataManagerImpl implements OperationHistoryDataMana } @Override - public synchronized void store(String requestId, VirtualControlLoopEvent event, ControlLoopOperation operation) { + public synchronized void store(String requestId, VirtualControlLoopEvent event, String targetEntity, + ControlLoopOperation operation) { if (stopped) { logger.warn("operation history thread is stopped, discarding requestId={} event={} operation={}", requestId, @@ -138,7 +143,7 @@ public class OperationHistoryDataManagerImpl implements OperationHistoryDataMana return; } - operations.add(new Record(requestId, event, operation)); + operations.add(new Record(requestId, event, targetEntity, operation)); if (operations.size() > maxQueueLength) { Record discarded = operations.remove(); @@ -204,6 +209,7 @@ public class OperationHistoryDataManagerImpl implements OperationHistoryDataMana * @param firstRecord first record to be stored */ private void storeBatch(EntityManager entityManager, Record firstRecord) { + logger.info("store operation history record batch"); try (EntityMgrCloser emc = new EntityMgrCloser(entityManager); EntityTransCloser trans = new EntityTransCloser(entityManager.getTransaction())) { @@ -233,17 +239,18 @@ public class OperationHistoryDataManagerImpl implements OperationHistoryDataMana * @param record record to be stored */ private void storeRecord(EntityManager entityMgr, Record record) { - Dbao newEntry = new Dbao(); final VirtualControlLoopEvent event = record.getEvent(); final ControlLoopOperation operation = record.getOperation(); + logger.info("store operation history record for {}", event.getRequestId()); + newEntry.setClosedLoopName(event.getClosedLoopControlName()); newEntry.setRequestId(record.getRequestId()); newEntry.setActor(operation.getActor()); newEntry.setOperation(operation.getOperation()); - newEntry.setTarget(operation.getTarget()); + newEntry.setTarget(record.getTargetEntity()); newEntry.setSubrequestId(operation.getSubRequestId()); newEntry.setMessage(operation.getMessage()); newEntry.setOutcome(operation.getOutcome()); @@ -280,6 +287,7 @@ public class OperationHistoryDataManagerImpl implements OperationHistoryDataMana private static class Record { private String requestId; private VirtualControlLoopEvent event; + private String targetEntity; private ControlLoopOperation operation; } diff --git a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerStub.java b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerStub.java index e1e0cbe09..bd2ee043c 100644 --- a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerStub.java +++ b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerStub.java @@ -29,7 +29,8 @@ import org.onap.policy.controlloop.VirtualControlLoopEvent; public class OperationHistoryDataManagerStub implements OperationHistoryDataManager { @Override - public void store(String requestId, VirtualControlLoopEvent event, ControlLoopOperation operation) { + public void store(String requestId, VirtualControlLoopEvent event, String targetEntity, + ControlLoopOperation operation) { // do nothing } diff --git a/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManager2Test.java b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManager2Test.java index e946d2edc..9c2e22d26 100644 --- a/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManager2Test.java +++ b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManager2Test.java @@ -276,7 +276,7 @@ public class ControlLoopOperationManager2Test { verify(mgrctx).updated(mgr); // should not have tried to store anything in the DB - verify(dataMgr, never()).store(any(), any(), any()); + verify(dataMgr, never()).store(any(), any(), any(), any()); } @Test @@ -561,7 +561,7 @@ public class ControlLoopOperationManager2Test { assertTrue(mgr.nextStep()); verify(mgrctx, times(2)).updated(mgr); - verify(dataMgr, never()).store(any(), any(), any()); + verify(dataMgr, never()).store(any(), any(), any(), any()); } /** @@ -951,10 +951,13 @@ public class ControlLoopOperationManager2Test { } private void verifyDb(int nrecords, PolicyResult expectedResult, String expectedMsg) { - ArgumentCaptor<ControlLoopOperation> captor = ArgumentCaptor.forClass(ControlLoopOperation.class); - verify(dataMgr, times(nrecords)).store(any(), any(), captor.capture()); + ArgumentCaptor<String> entityCaptor = ArgumentCaptor.forClass(String.class); + ArgumentCaptor<ControlLoopOperation> opCaptor = ArgumentCaptor.forClass(ControlLoopOperation.class); + verify(dataMgr, times(nrecords)).store(any(), any(), entityCaptor.capture(), opCaptor.capture()); - ControlLoopOperation oper = captor.getValue(); + assertEquals(MY_TARGET, entityCaptor.getValue()); + + ControlLoopOperation oper = opCaptor.getValue(); assertEquals(expectedResult.toString(), oper.getOutcome()); assertEquals(expectedMsg, oper.getMessage()); diff --git a/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerImplTest.java b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerImplTest.java index 8e3c1fa9b..e6c66d120 100644 --- a/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerImplTest.java +++ b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerImplTest.java @@ -54,6 +54,7 @@ public class OperationHistoryDataManagerImplTest { private static final IllegalStateException EXPECTED_EXCEPTION = new IllegalStateException("expected exception"); private static final String MY_TARGET = "my-target"; + private static final String MY_ENTITY = "my-entity"; private static final String REQ_ID = "my-request-id"; private static final int BATCH_SIZE = 5; private static final int MAX_QUEUE_LENGTH = 23; @@ -165,7 +166,7 @@ public class OperationHistoryDataManagerImplTest { @Test public void testStore_testStop() throws InterruptedException { // store - mgr.store(REQ_ID, event, operation); + mgr.store(REQ_ID, event, MY_ENTITY, operation); runThread(); @@ -192,7 +193,7 @@ public class OperationHistoryDataManagerImplTest { mgr.stop(); // store - mgr.store(REQ_ID, event, operation); + mgr.store(REQ_ID, event, MY_ENTITY, operation); assertEquals(0, mgr.getRecordsAdded()); } @@ -204,7 +205,7 @@ public class OperationHistoryDataManagerImplTest { public void testStoreTooManyItems() throws InterruptedException { final int nextra = 5; for (int nitems = 0; nitems < MAX_QUEUE_LENGTH + nextra; ++nitems) { - mgr.store(REQ_ID, event, operation); + mgr.store(REQ_ID, event, MY_ENTITY, operation); } runThread(); @@ -225,9 +226,9 @@ public class OperationHistoryDataManagerImplTest { mgr = new RealThread(); mgr.start(); - mgr.store(REQ_ID, event, operation); - mgr.store(REQ_ID, event, operation); - mgr.store(REQ_ID, event, operation); + mgr.store(REQ_ID, event, MY_ENTITY, operation); + mgr.store(REQ_ID, event, MY_ENTITY, operation); + mgr.store(REQ_ID, event, MY_ENTITY, operation); waitForThread(); @@ -261,9 +262,9 @@ public class OperationHistoryDataManagerImplTest { mgr = new RealThread(); mgr.start(); - mgr.store(REQ_ID, event, operation); - mgr.store(REQ_ID, event, operation); - mgr.store(REQ_ID, event, operation); + mgr.store(REQ_ID, event, MY_ENTITY, operation); + mgr.store(REQ_ID, event, MY_ENTITY, operation); + mgr.store(REQ_ID, event, MY_ENTITY, operation); waitForThread(); @@ -278,7 +279,7 @@ public class OperationHistoryDataManagerImplTest { // arrange to throw an exception when(emfSpy.createEntityManager()).thenThrow(EXPECTED_EXCEPTION); - mgr.store(REQ_ID, event, operation); + mgr.store(REQ_ID, event, MY_ENTITY, operation); runThread(); } @@ -286,22 +287,22 @@ public class OperationHistoryDataManagerImplTest { @Test public void testStoreRecord() throws InterruptedException { // no start time - mgr.store(REQ_ID, event, operation); + mgr.store(REQ_ID, event, MY_ENTITY, operation); // no start time operation = new ControlLoopOperation(operation); operation.setStart(Instant.now()); - mgr.store(REQ_ID, event, operation); + mgr.store(REQ_ID, event, MY_ENTITY, operation); // both start and end times operation = new ControlLoopOperation(operation); operation.setEnd(Instant.now()); - mgr.store(REQ_ID, event, operation); + mgr.store(REQ_ID, event, MY_ENTITY, operation); // only end time operation = new ControlLoopOperation(operation); operation.setStart(null); - mgr.store(REQ_ID, event, operation); + mgr.store(REQ_ID, event, MY_ENTITY, operation); runThread(); diff --git a/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerStubTest.java b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerStubTest.java index f4a7ff8c5..a6f50629c 100644 --- a/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerStubTest.java +++ b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerStubTest.java @@ -30,7 +30,7 @@ public class OperationHistoryDataManagerStubTest { public void test() { OperationHistoryDataManagerStub mgr = new OperationHistoryDataManagerStub(); - assertThatCode(() -> mgr.store(null, null, null)).doesNotThrowAnyException(); + assertThatCode(() -> mgr.store(null, null, null, null)).doesNotThrowAnyException(); assertThatCode(() -> mgr.stop()).doesNotThrowAnyException(); } } |