diff options
7 files changed, 309 insertions, 482 deletions
diff --git a/feature-mdc-filters/src/test/java/org/onap/policy/drools/mdc/filters/MdcTopicFilterTest.java b/feature-mdc-filters/src/test/java/org/onap/policy/drools/mdc/filters/MdcTopicFilterTest.java index e1a9b9b8..2a3f251d 100755 --- a/feature-mdc-filters/src/test/java/org/onap/policy/drools/mdc/filters/MdcTopicFilterTest.java +++ b/feature-mdc-filters/src/test/java/org/onap/policy/drools/mdc/filters/MdcTopicFilterTest.java @@ -194,9 +194,7 @@ public class MdcTopicFilterTest { */ @Test(expected = IllegalArgumentException.class) public void addFilterRuleNullKeyStringPathTest() { - String topicFilterProp = "requestID=$.requestID"; - MdcTopicFilter topicFilter = new MdcTopicFilter(topicFilterProp); - topicFilter.addFilterRule(null, "$.subRequestID"); + addFilterRuleValidateFailure(null, "$.subRequestID"); } /** @@ -205,9 +203,7 @@ public class MdcTopicFilterTest { */ @Test(expected = IllegalArgumentException.class) public void addFilterRuleNullKeyPathListTest() { - String topicFilterProp = "requestID=$.requestID"; - MdcTopicFilter topicFilter = new MdcTopicFilter(topicFilterProp); - topicFilter.addFilterRule(null, Arrays.asList("$.subRequestID")); + addFilterRuleValidateFailure(null, Arrays.asList("$.subRequestID")); } /** @@ -216,9 +212,7 @@ public class MdcTopicFilterTest { */ @Test(expected = IllegalArgumentException.class) public void addFilterRuleEmptyKeyStringPathTest() { - String topicFilterProp = "requestID=$.requestID"; - MdcTopicFilter topicFilter = new MdcTopicFilter(topicFilterProp); - topicFilter.addFilterRule("", "$.subRequestID"); + addFilterRuleValidateFailure("", "$.subRequestID"); } /** @@ -227,9 +221,7 @@ public class MdcTopicFilterTest { */ @Test(expected = IllegalArgumentException.class) public void addFilterRuleEmptyKeyPathListTest() { - String topicFilterProp = "requestID=$.requestID"; - MdcTopicFilter topicFilter = new MdcTopicFilter(topicFilterProp); - topicFilter.addFilterRule("", Arrays.asList("$.subRequestID")); + addFilterRuleValidateFailure("", Arrays.asList("$.subRequestID")); } /** @@ -237,9 +229,7 @@ public class MdcTopicFilterTest { */ @Test(expected = IllegalArgumentException.class) public void addFilterRuleEmptyPathTest() { - String topicFilterProp = "requestID=$.requestID"; - MdcTopicFilter topicFilter = new MdcTopicFilter(topicFilterProp); - topicFilter.addFilterRule("subRequestID", ""); + addFilterRuleValidateFailure("subRequestID", ""); } /** @@ -247,9 +237,7 @@ public class MdcTopicFilterTest { */ @Test(expected = IllegalArgumentException.class) public void addFilterRuleEmptyPathsTest() { - String topicFilterProp = "requestID=$.requestID"; - MdcTopicFilter topicFilter = new MdcTopicFilter(topicFilterProp); - topicFilter.addFilterRule("subRequestID", Arrays.asList()); + addFilterRuleValidateFailure("subRequestID", Arrays.asList()); } /** @@ -258,9 +246,7 @@ public class MdcTopicFilterTest { */ @Test(expected = IllegalArgumentException.class) public void addExistingFilterRuleStringTest() { - String topicFilterProp = "requestID=$.requestID"; - MdcTopicFilter topicFilter = new MdcTopicFilter(topicFilterProp); - topicFilter.addFilterRule("requestID", "$.test"); + addFilterRuleValidateFailure("requestID", "$.test"); } /** @@ -269,9 +255,7 @@ public class MdcTopicFilterTest { */ @Test(expected = IllegalArgumentException.class) public void addExistingFilterRuleListTest() { - String topicFilterProp = "requestID=$.requestID"; - MdcTopicFilter topicFilter = new MdcTopicFilter(topicFilterProp); - topicFilter.addFilterRule("requestID", Arrays.asList("$.test")); + addFilterRuleValidateFailure("requestID", Arrays.asList("$.test")); } @Test @@ -337,9 +321,7 @@ public class MdcTopicFilterTest { */ @Test(expected = IllegalArgumentException.class) public void modifyFilterRuleNullKeyStringPathTest() { - String topicFilterProp = "requestID=$.requestID"; - MdcTopicFilter topicFilter = new MdcTopicFilter(topicFilterProp); - topicFilter.modifyFilterRule(null, "$.request-id"); + modifyFilterRuleValidateFailure(null, "$.request-id"); } /** @@ -348,9 +330,7 @@ public class MdcTopicFilterTest { */ @Test(expected = IllegalArgumentException.class) public void modifyFilterRuleNullKeyPathListTest() { - String topicFilterProp = "requestID=$.requestID"; - MdcTopicFilter topicFilter = new MdcTopicFilter(topicFilterProp); - topicFilter.modifyFilterRule(null, Arrays.asList("$.request-id")); + modifyFilterRuleValidateFailure(null, Arrays.asList("$.request-id")); } /** @@ -359,9 +339,7 @@ public class MdcTopicFilterTest { */ @Test(expected = IllegalArgumentException.class) public void modifyFilterRuleEmptyKeyStringPathTest() { - String topicFilterProp = "requestID=$.requestID"; - MdcTopicFilter topicFilter = new MdcTopicFilter(topicFilterProp); - topicFilter.modifyFilterRule("", "$.request-id"); + modifyFilterRuleValidateFailure("", "$.request-id"); } /** @@ -370,9 +348,7 @@ public class MdcTopicFilterTest { */ @Test(expected = IllegalArgumentException.class) public void modifyFilterRuleEmptyKeyPathListTest() { - String topicFilterProp = "requestID=$.requestID"; - MdcTopicFilter topicFilter = new MdcTopicFilter(topicFilterProp); - topicFilter.modifyFilterRule("", Arrays.asList("$.request-id")); + modifyFilterRuleValidateFailure("", Arrays.asList("$.request-id")); } /** @@ -380,9 +356,7 @@ public class MdcTopicFilterTest { */ @Test(expected = IllegalArgumentException.class) public void modifyFilterRuleEmptyPathStringTest() { - String topicFilterProp = "requestID=$.requestID"; - MdcTopicFilter topicFilter = new MdcTopicFilter(topicFilterProp); - topicFilter.modifyFilterRule("requestID", ""); + modifyFilterRuleValidateFailure("requestID", ""); } /** @@ -390,9 +364,7 @@ public class MdcTopicFilterTest { */ @Test(expected = IllegalArgumentException.class) public void modifyFilterRuleEmptyPathListTest() { - String topicFilterProp = "requestID=$.requestID"; - MdcTopicFilter topicFilter = new MdcTopicFilter(topicFilterProp); - topicFilter.modifyFilterRule("requestID", Arrays.asList()); + modifyFilterRuleValidateFailure("requestID", Arrays.asList()); } /** @@ -401,9 +373,7 @@ public class MdcTopicFilterTest { */ @Test(expected = IllegalArgumentException.class) public void modifyFilterRuleMissingKeyStringPathTest() { - String topicFilterProp = "requestID=$.requestID"; - MdcTopicFilter topicFilter = new MdcTopicFilter(topicFilterProp); - topicFilter.modifyFilterRule("request-id", "$.request-id"); + modifyFilterRuleValidateFailure("request-id", "$.request-id"); } /** @@ -412,9 +382,7 @@ public class MdcTopicFilterTest { */ @Test(expected = IllegalArgumentException.class) public void modifyFilterRuleMissingKeyPathListTest() { - String topicFilterProp = "requestID=$.requestID"; - MdcTopicFilter topicFilter = new MdcTopicFilter(topicFilterProp); - topicFilter.modifyFilterRule("request-id", Arrays.asList("$.request-id")); + modifyFilterRuleValidateFailure("request-id", Arrays.asList("$.request-id")); } @@ -423,9 +391,7 @@ public class MdcTopicFilterTest { */ @Test(expected = IllegalArgumentException.class) public void modifyFilterRuleNullOldKeyTest() { - String topicFilterProp = "requestID=$.requestID"; - MdcTopicFilter topicFilter = new MdcTopicFilter(topicFilterProp); - topicFilter.modifyFilterRule(null, "request-id", Arrays.asList("$.request-id")); + modifyFilterRuleValidateFailure(null, "request-id", Arrays.asList("$.request-id")); } /** @@ -433,9 +399,7 @@ public class MdcTopicFilterTest { */ @Test(expected = IllegalArgumentException.class) public void modifyFilterRuleEmptyOldKeyTest() { - String topicFilterProp = "requestID=$.requestID"; - MdcTopicFilter topicFilter = new MdcTopicFilter(topicFilterProp); - topicFilter.modifyFilterRule("", "request-id", Arrays.asList("$.request-id")); + modifyFilterRuleValidateFailure("", "request-id", Arrays.asList("$.request-id")); } /** @@ -443,9 +407,7 @@ public class MdcTopicFilterTest { */ @Test(expected = IllegalArgumentException.class) public void modifyFilterRuleNullNewKeyTest() { - String topicFilterProp = "requestID=$.requestID"; - MdcTopicFilter topicFilter = new MdcTopicFilter(topicFilterProp); - topicFilter.modifyFilterRule("requestID", null, Arrays.asList("$.request-id")); + modifyFilterRuleValidateFailure("requestID", null, Arrays.asList("$.request-id")); } /** @@ -453,9 +415,7 @@ public class MdcTopicFilterTest { */ @Test(expected = IllegalArgumentException.class) public void modifyFilterRuleEmptyNewKeyTest() { - String topicFilterProp = "requestID=$.requestID"; - MdcTopicFilter topicFilter = new MdcTopicFilter(topicFilterProp); - topicFilter.modifyFilterRule("requestID", "", Arrays.asList("$.request-id")); + modifyFilterRuleValidateFailure("requestID", "", Arrays.asList("$.request-id")); } /** @@ -463,10 +423,7 @@ public class MdcTopicFilterTest { */ @Test(expected = IllegalArgumentException.class) public void modifyFilterRuleSameKeyTest() { - String topicFilterProp = "requestID=$.requestID"; - MdcTopicFilter topicFilter = new MdcTopicFilter(topicFilterProp); - topicFilter.modifyFilterRule("requestID", "requestID", - Arrays.asList("$.request-id")); + modifyFilterRuleValidateFailure("requestID", "requestID", Arrays.asList("$.request-id")); } /** @@ -474,9 +431,7 @@ public class MdcTopicFilterTest { */ @Test(expected = IllegalArgumentException.class) public void modifyFilterRuleEmptyPathsTest() { - String topicFilterProp = "requestID=$.requestID"; - MdcTopicFilter topicFilter = new MdcTopicFilter(topicFilterProp); - topicFilter.modifyFilterRule("requestID", "request-id", Arrays.asList()); + modifyFilterRuleValidateFailure("requestID", "request-id", Arrays.asList()); } /** @@ -485,9 +440,7 @@ public class MdcTopicFilterTest { */ @Test(expected = IllegalArgumentException.class) public void modifyFilterRuleNonExistingOldKeyTest() { - String topicFilterProp = "requestID=$.requestID"; - MdcTopicFilter topicFilter = new MdcTopicFilter(topicFilterProp); - topicFilter.modifyFilterRule("request-id", "id", Arrays.asList("$.request-id")); + modifyFilterRuleValidateFailure("request-id", "id", Arrays.asList("$.request-id")); } /** @@ -658,4 +611,34 @@ public class MdcTopicFilterTest { rule.addPaths(Arrays.asList("pathD", "pathE")); assertEquals("[pathA, pathB, pathC, pathD, pathE]", rule.getPaths().toString()); } + + private void addFilterRuleValidateFailure(String mdcKey, String path) { + String topicFilterProp = "requestID=$.requestID"; + MdcTopicFilter topicFilter = new MdcTopicFilter(topicFilterProp); + topicFilter.addFilterRule(mdcKey, path); + } + + private void addFilterRuleValidateFailure(String mdcKey, List<String> paths) { + String topicFilterProp = "requestID=$.requestID"; + MdcTopicFilter topicFilter = new MdcTopicFilter(topicFilterProp); + topicFilter.addFilterRule(mdcKey, paths); + } + + private void modifyFilterRuleValidateFailure(String mdcKey, String path) { + String topicFilterProp = "requestID=$.requestID"; + MdcTopicFilter topicFilter = new MdcTopicFilter(topicFilterProp); + topicFilter.modifyFilterRule(mdcKey, path); + } + + private void modifyFilterRuleValidateFailure(String mdcKey, List<String> paths) { + String topicFilterProp = "requestID=$.requestID"; + MdcTopicFilter topicFilter = new MdcTopicFilter(topicFilterProp); + topicFilter.modifyFilterRule(mdcKey, paths); + } + + private void modifyFilterRuleValidateFailure(String oldMdcKey, String newMdcKey, List<String> paths) { + String topicFilterProp = "requestID=$.requestID"; + MdcTopicFilter topicFilter = new MdcTopicFilter(topicFilterProp); + topicFilter.modifyFilterRule(oldMdcKey, newMdcKey, paths); + } } diff --git a/feature-pooling-dmaap/src/main/java/org/onap/policy/drools/pooling/state/State.java b/feature-pooling-dmaap/src/main/java/org/onap/policy/drools/pooling/state/State.java index 3d939392..f2277be3 100644 --- a/feature-pooling-dmaap/src/main/java/org/onap/policy/drools/pooling/state/State.java +++ b/feature-pooling-dmaap/src/main/java/org/onap/policy/drools/pooling/state/State.java @@ -2,14 +2,14 @@ * ============LICENSE_START======================================================= * ONAP * ================================================================================ - * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2018, 2020 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. @@ -43,7 +43,7 @@ import org.slf4j.LoggerFactory; /** * A state in the finite state machine. - * + * * <p>A state may have several timers associated with it, which must be cancelled whenever * the state is changed. Assumes that timers are not continuously added to the same state. */ @@ -63,7 +63,7 @@ public abstract class State { /** * Constructor. - * + * * @param mgr pooling manager */ public State(PoolingManager mgr) { @@ -74,7 +74,7 @@ public abstract class State { * Gets the server-side filter to use when polling the DMaaP internal topic. The * default method returns a filter that accepts messages on the admin channel and on * the host's own channel. - * + * * @return the server-side filter to use. */ @SuppressWarnings("unchecked") @@ -98,7 +98,7 @@ public abstract class State { /** * Transitions to the "start" state. - * + * * @return the new state */ public final State goStart() { @@ -107,7 +107,7 @@ public abstract class State { /** * Transitions to the "query" state. - * + * * @return the new state */ public State goQuery() { @@ -116,7 +116,7 @@ public abstract class State { /** * Goes active with a new set of assignments. - * + * * @param asgn new assignments * @return the new state, either Active or Inactive, depending on whether or not this * host has an assignment @@ -134,7 +134,7 @@ public abstract class State { /** * Transitions to the "inactive" state. - * + * * @return the new state */ protected State goInactive() { @@ -144,25 +144,26 @@ public abstract class State { /** * Processes a message. The default method passes it to the manager to handle and * returns {@code null}. - * + * * @param msg message to be processed * @return the new state, or {@code null} if the state is unchanged */ public State process(Forward msg) { - if (!getHost().equals(msg.getChannel())) { + if (getHost().equals(msg.getChannel())) { + logger.info("received Forward message from {} on topic {}", msg.getSource(), getTopic()); + mgr.handle(msg); + + } else { logger.info("discard Forward message to {} from {} on topic {}", msg.getChannel(), msg.getSource(), getTopic()); - return null; } - logger.info("received Forward message from {} on topic {}", msg.getSource(), getTopic()); - mgr.handle(msg); return null; } /** * Processes a message. The default method just returns {@code null}. - * + * * @param msg message to be processed * @return the new state, or {@code null} if the state is unchanged */ @@ -173,7 +174,7 @@ public abstract class State { /** * Processes a message. The default method just returns {@code null}. - * + * * @param msg message to be processed * @return the new state, or {@code null} if the state is unchanged */ @@ -185,7 +186,7 @@ public abstract class State { /** * Processes a message. The default method copies the assignments and then returns * {@code null}. - * + * * @param msg message to be processed * @return the new state, or {@code null} if the state is unchanged */ @@ -200,7 +201,7 @@ public abstract class State { /** * Processes a message. The default method just returns {@code null}. - * + * * @param msg message to be processed * @return the new state, or {@code null} if the state is unchanged */ @@ -211,7 +212,7 @@ public abstract class State { /** * Processes a message. The default method just returns {@code null}. - * + * * @param msg message to be processed * @return the new state, or {@code null} if the state is unchanged */ @@ -222,7 +223,7 @@ public abstract class State { /** * Determines if a message is valid and did not originate from this host. - * + * * @param msg message to be validated * @return {@code true} if the message is valid, {@code false} otherwise */ @@ -252,7 +253,7 @@ public abstract class State { /** * Publishes a message. - * + * * @param msg message to be published */ protected final void publish(Identification msg) { @@ -261,7 +262,7 @@ public abstract class State { /** * Publishes a message. - * + * * @param msg message to be published */ protected final void publish(Leader msg) { @@ -270,7 +271,7 @@ public abstract class State { /** * Publishes a message. - * + * * @param msg message to be published */ protected final void publish(Offline msg) { @@ -279,7 +280,7 @@ public abstract class State { /** * Publishes a message. - * + * * @param msg message to be published */ protected final void publish(Query msg) { @@ -288,7 +289,7 @@ public abstract class State { /** * Publishes a message on the specified channel. - * + * * @param channel channel * @param msg message to be published */ @@ -298,7 +299,7 @@ public abstract class State { /** * Publishes a message on the specified channel. - * + * * @param channel channel * @param msg message to be published */ @@ -308,7 +309,7 @@ public abstract class State { /** * Starts distributing messages using the specified bucket assignments. - * + * * @param assignments assignments */ protected final void startDistributing(BucketAssignments assignments) { @@ -319,7 +320,7 @@ public abstract class State { /** * Schedules a timer to fire after a delay. - * + * * @param delayMs delay in ms * @param task task */ @@ -329,7 +330,7 @@ public abstract class State { /** * Schedules a timer to fire repeatedly. - * + * * @param initialDelayMs initial delay ms * @param delayMs delay ms * @param task task @@ -342,7 +343,7 @@ public abstract class State { * Indicates that we failed to see our own heartbeat; must be a problem with the * internal topic. Assumes the problem is temporary and continues to use the current * bucket assignments. - * + * * @return a new {@link StartState} */ protected final State missedHeartbeat() { @@ -354,7 +355,7 @@ public abstract class State { /** * Indicates that the internal topic failed; this should only be invoked from the * StartState. Discards bucket assignments and begins processing everything locally. - * + * * @return a new {@link InactiveState} */ protected final State internalTopicFailed() { @@ -366,9 +367,9 @@ public abstract class State { /** * Makes a heart beat message. - * + * * @param timestampMs time, in milliseconds, associated with the message - * + * * @return a new message */ protected final Heartbeat makeHeartbeat(long timestampMs) { @@ -377,7 +378,7 @@ public abstract class State { /** * Makes an Identification message. - * + * * @return a new message */ protected Identification makeIdentification() { @@ -386,7 +387,7 @@ public abstract class State { /** * Makes an "offline" message. - * + * * @return a new message */ protected final Offline makeOffline() { @@ -395,7 +396,7 @@ public abstract class State { /** * Makes a query message. - * + * * @return a new message */ protected final Query makeQuery() { diff --git a/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/PoolingManagerImplTest.java b/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/PoolingManagerImplTest.java index bd3d90b6..2a0066b7 100644 --- a/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/PoolingManagerImplTest.java +++ b/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/PoolingManagerImplTest.java @@ -640,27 +640,17 @@ public class PoolingManagerImplTest { @Test public void testBeforeInsert_NoIntercept() throws Exception { - startMgr(); - - assertFalse(mgr.beforeInsert(CommInfrastructure.UEB, TOPIC2, THE_EVENT, DECODED_EVENT)); + validateUnhandled(CommInfrastructure.UEB); } @Test public void testHandleExternalCommInfrastructureStringStringString_NullReqId() throws Exception { - startMgr(); - - when(extractors.extract(any())).thenReturn(null); - - assertFalse(mgr.beforeInsert(CommInfrastructure.UEB, TOPIC2, THE_EVENT, DECODED_EVENT)); + validateHandleReqId(null); } @Test public void testHandleExternalCommInfrastructureStringStringString_EmptyReqId() throws Exception { - startMgr(); - - when(extractors.extract(any())).thenReturn(""); - - assertFalse(mgr.beforeInsert(CommInfrastructure.UEB, TOPIC2, THE_EVENT, DECODED_EVENT)); + validateHandleReqId(""); } @Test @@ -672,50 +662,28 @@ public class PoolingManagerImplTest { @Test public void testHandleExternalCommInfrastructureStringStringString() throws Exception { - startMgr(); - - assertFalse(mgr.beforeInsert(CommInfrastructure.UEB, TOPIC2, THE_EVENT, DECODED_EVENT)); + validateUnhandled(CommInfrastructure.UEB); } @Test public void testHandleExternalForward_NoAssignments() throws Exception { - startMgr(); - - assertFalse(mgr.beforeInsert(CommInfrastructure.UEB, TOPIC2, THE_EVENT, DECODED_EVENT)); + validateUnhandled(CommInfrastructure.UEB); } @Test public void testHandleExternalForward() throws Exception { - startMgr(); - - // route the message to this host - mgr.startDistributing(makeAssignments(true)); - - assertFalse(mgr.beforeInsert(CommInfrastructure.UEB, TOPIC2, THE_EVENT, DECODED_EVENT)); + validateNoForward(); } @Test public void testHandleEvent_NullTarget() throws Exception { - startMgr(); - // buckets have null targets - mgr.startDistributing(new BucketAssignments(new String[] {null, null})); - - assertTrue(mgr.beforeInsert(CommInfrastructure.UEB, TOPIC2, THE_EVENT, DECODED_EVENT)); - - verify(dmaap, times(START_PUB)).publish(any()); + validateHandled(new BucketAssignments(new String[] {null, null}), START_PUB); } @Test public void testHandleEvent_SameHost() throws Exception { - startMgr(); - - // route the message to this host - mgr.startDistributing(makeAssignments(true)); - - assertFalse(mgr.beforeInsert(CommInfrastructure.UEB, TOPIC2, THE_EVENT, DECODED_EVENT)); - - verify(dmaap, times(START_PUB)).publish(any()); + validateNoForward(); } @Test @@ -736,14 +704,7 @@ public class PoolingManagerImplTest { @Test public void testHandleEvent_DiffHost_Forward() throws Exception { - startMgr(); - - // route the message to the *OTHER* host - mgr.startDistributing(makeAssignments(false)); - - assertTrue(mgr.beforeInsert(CommInfrastructure.UEB, TOPIC2, THE_EVENT, DECODED_EVENT)); - - verify(dmaap, times(START_PUB + 1)).publish(any()); + validateHandled(makeAssignments(false), START_PUB + 1); } @Test @@ -755,11 +716,7 @@ public class PoolingManagerImplTest { @Test public void testExtractRequestId_NullReqId() throws Exception { - startMgr(); - - when(extractors.extract(any())).thenReturn(null); - - assertFalse(mgr.beforeInsert(CommInfrastructure.UEB, TOPIC2, THE_EVENT, DECODED_EVENT)); + validateHandleReqId(null); } @Test @@ -1009,12 +966,7 @@ public class PoolingManagerImplTest { @Test public void testStartDistributing() throws Exception { - startMgr(); - - // route the message to this host - mgr.startDistributing(makeAssignments(true)); - assertFalse(mgr.beforeInsert(CommInfrastructure.UEB, TOPIC2, THE_EVENT, DECODED_EVENT)); - verify(dmaap, times(START_PUB)).publish(any()); + validateNoForward(); // null assignments should cause message to be processed locally @@ -1133,6 +1085,41 @@ public class PoolingManagerImplTest { assertEquals(1, latch.getCount()); } + private void validateHandleReqId(String requestId) throws PoolingFeatureException { + startMgr(); + + when(extractors.extract(any())).thenReturn(requestId); + + assertFalse(mgr.beforeInsert(CommInfrastructure.UEB, TOPIC2, THE_EVENT, DECODED_EVENT)); + } + + private void validateNoForward() throws PoolingFeatureException { + startMgr(); + + // route the message to this host + mgr.startDistributing(makeAssignments(true)); + + assertFalse(mgr.beforeInsert(CommInfrastructure.UEB, TOPIC2, THE_EVENT, DECODED_EVENT)); + + verify(dmaap, times(START_PUB)).publish(any()); + } + + private void validateHandled(BucketAssignments assignments, int publishCount) throws PoolingFeatureException { + startMgr(); + + // route the message to the *OTHER* host + mgr.startDistributing(assignments); + + assertTrue(mgr.beforeInsert(CommInfrastructure.UEB, TOPIC2, THE_EVENT, DECODED_EVENT)); + + verify(dmaap, times(publishCount)).publish(any()); + } + + private void validateUnhandled(CommInfrastructure infra) throws PoolingFeatureException { + startMgr(); + assertFalse(mgr.beforeInsert(infra, TOPIC2, THE_EVENT, DECODED_EVENT)); + } + /** * Configure the mock controller to act like a real controller, invoking beforeOffer * and then beforeInsert, so we can make sure they pass through. We'll keep count to diff --git a/feature-simulators/src/test/java/org/onap/policy/drools/simulators/DMaaPSimulatorTest.java b/feature-simulators/src/test/java/org/onap/policy/drools/simulators/DMaaPSimulatorTest.java index 0b97dd74..ad01870b 100644 --- a/feature-simulators/src/test/java/org/onap/policy/drools/simulators/DMaaPSimulatorTest.java +++ b/feature-simulators/src/test/java/org/onap/policy/drools/simulators/DMaaPSimulatorTest.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * feature-simulators * ================================================================================ - * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-2020 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. @@ -24,14 +24,12 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.fail; -import java.io.BufferedReader; -import java.io.DataOutputStream; import java.io.IOException; -import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; -import java.net.URLConnection; import java.nio.charset.StandardCharsets; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.tuple.Pair; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; @@ -72,290 +70,131 @@ public class DMaaPSimulatorTest { } @Test - public void testGetNoData() { - int timeout = 1000; - Pair<Integer, String> response = dmaapGet("myTopicNoData", timeout); - assertNotNull(response); - assertNotNull(response.first); - assertEquals(DMaaPSimulatorJaxRs.NO_TOPIC_MSG, response.second); + public void testGetNoData() throws IOException { + validateResponse(DMaaPSimulatorJaxRs.NO_TOPIC_MSG, dmaapGet("myTopicNoData", 1000)); } @Test - public void testSinglePost() { + public void testSinglePost() throws IOException { String myTopic = "myTopicSinglePost"; String testData = "This is some test data"; - Pair<Integer, String> response = dmaapPost(myTopic, testData); - assertNotNull(response); - assertNotNull(response.first); - assertNotNull(response.second); - response = dmaapGet(myTopic, 1000); - assertNotNull(response); - assertNotNull(response.first); - assertEquals(testData, response.second); + validateResponse(dmaapPost(myTopic, testData)); + + validateResponse(testData, dmaapGet(myTopic, 1000)); } @Test - public void testOneTopicMultiPost() { + public void testOneTopicMultiPost() throws IOException { String[] data = {"data point 1", "data point 2", "something random"}; String myTopic = "myTopicMultiPost"; - Pair<Integer, String> response = dmaapPost(myTopic, data[0]); - assertNotNull(response); - assertNotNull(response.first); - assertNotNull(response.second); - response = dmaapPost(myTopic, data[1]); - assertNotNull(response); - assertNotNull(response.first); - assertNotNull(response.second); + validateResponse(dmaapPost(myTopic, data[0])); + validateResponse(dmaapPost(myTopic, data[1])); + validateResponse(dmaapPost(myTopic, data[2])); - response = dmaapPost(myTopic, data[2]); - assertNotNull(response); - assertNotNull(response.first); - assertNotNull(response.second); - - response = dmaapGet(myTopic, 1000); - assertNotNull(response); - assertNotNull(response.first); - assertEquals(data[0], response.second); - - response = dmaapGet(myTopic, 1000); - assertNotNull(response); - assertNotNull(response.first); - assertEquals(data[1], response.second); - - response = dmaapGet(myTopic, 1000); - assertNotNull(response); - assertNotNull(response.first); - assertEquals(data[2], response.second); + validateResponse(data[0], dmaapGet(myTopic, 1000)); + validateResponse(data[1], dmaapGet(myTopic, 1000)); + validateResponse(data[2], dmaapGet(myTopic, 1000)); } @Test - public void testMultiTopic() { + public void testMultiTopic() throws IOException { String[][] data = {{"Topic one message one", "Topic one message two"}, {"Topic two message one", "Topic two message two"}}; String[] topics = {"topic1", "topic2"}; - Pair<Integer, String> response = dmaapPost(topics[0], data[0][0]); - assertNotNull(response); - assertNotNull(response.first); - assertNotNull(response.second); - - response = dmaapGet(topics[0], 1000); - assertNotNull(response); - assertNotNull(response.first); - assertEquals(data[0][0], response.second); - - response = dmaapGet(topics[1], 1000); - assertNotNull(response); - assertNotNull(response.first); - assertEquals(DMaaPSimulatorJaxRs.NO_TOPIC_MSG, response.second); - - response = dmaapPost(topics[1], data[1][0]); - assertNotNull(response); - assertNotNull(response.first); - assertNotNull(response.second); - - response = dmaapPost(topics[1], data[1][1]); - assertNotNull(response); - assertNotNull(response.first); - assertNotNull(response.second); - - response = dmaapPost(topics[0], data[0][1]); - assertNotNull(response); - assertNotNull(response.first); - assertNotNull(response.second); - - response = dmaapGet(topics[1], 1000); - assertNotNull(response); - assertNotNull(response.first); - assertEquals(data[1][0], response.second); + validateResponse(dmaapPost(topics[0], data[0][0])); - response = dmaapGet(topics[0], 1000); - assertNotNull(response); - assertNotNull(response.first); - assertEquals(data[0][1], response.second); + validateResponse(data[0][0], dmaapGet(topics[0], 1000)); + validateResponse(DMaaPSimulatorJaxRs.NO_TOPIC_MSG, dmaapGet(topics[1], 1000)); - response = dmaapGet(topics[1], 1000); - assertNotNull(response); - assertNotNull(response.first); - assertEquals(data[1][1], response.second); + validateResponse(dmaapPost(topics[1], data[1][0])); + validateResponse(dmaapPost(topics[1], data[1][1])); + validateResponse(dmaapPost(topics[0], data[0][1])); - response = dmaapGet(topics[0], 1000); - assertNotNull(response); - assertNotNull(response.first); - assertEquals(DMaaPSimulatorJaxRs.NO_DATA_MSG, response.second); + validateResponse(data[1][0], dmaapGet(topics[1], 1000)); + validateResponse(data[0][1], dmaapGet(topics[0], 1000)); + validateResponse(data[1][1], dmaapGet(topics[1], 1000)); + validateResponse(DMaaPSimulatorJaxRs.NO_DATA_MSG, dmaapGet(topics[0], 1000)); } @Test - public void testResponseCode() { - Pair<Integer, String> response = dmaapPost("myTopic", "myTopicData"); - assertNotNull(response); - assertNotNull(response.first); - assertNotNull(response.second); + public void testResponseCode() throws IOException { + validateResponse(dmaapPost("myTopic", "myTopicData")); - response = setStatus(503); - assertNotNull(response); - assertNotNull(response.first); - assertNotNull(response.second); + validateResponse(setStatus(503)); + validateResponse(503, "You got response code: 503", dmaapGet("myTopic", 500)); + + validateResponse(setStatus(202)); + validateResponse(202, "myTopicData", dmaapGet("myTopic", 500)); + } - response = dmaapGet("myTopic", 500); + private void validateResponse(Pair<Integer, String> response) { assertNotNull(response); - assertEquals(503, response.first.intValue()); - assertEquals("You got response code: 503", response.second); + assertNotNull(response.getLeft()); + assertNotNull(response.getRight()); + } - response = setStatus(202); + private void validateResponse(int expectedCode, String expectedResponse, Pair<Integer, String> response) { assertNotNull(response); - assertNotNull(response.first); - assertNotNull(response.second); + assertEquals(expectedCode, response.getLeft().intValue()); + assertEquals(expectedResponse, response.getRight()); + } - response = dmaapGet("myTopic", 500); + private void validateResponse(String expectedResponse, Pair<Integer, String> response) { assertNotNull(response); - assertEquals(202, response.first.intValue()); - assertEquals("myTopicData", response.second); + assertNotNull(response.getLeft()); + assertEquals(expectedResponse, response.getRight()); } - private static Pair<Integer, String> dmaapGet(String topic, int timeout) { + private static Pair<Integer, String> dmaapGet(String topic, int timeout) throws IOException { return dmaapGet(topic, "1", "1", timeout); } - private static Pair<Integer, String> dmaapGet(String topic, String consumerGroup, String consumerId, int timeout) { + private static Pair<Integer, String> dmaapGet(String topic, String consumerGroup, String consumerId, int timeout) + throws IOException { String url = "http://localhost:" + DMAAPSIM_SERVER_PORT + "/events/" + topic + "/" + consumerGroup + "/" + consumerId + "?timeout=" + timeout; - try { - URLConnection conn = new URL(url).openConnection(); - HttpURLConnection httpConn = null; - if (conn instanceof HttpURLConnection) { - httpConn = (HttpURLConnection) conn; - } else { - fail("connection not set up right"); - } - httpConn.setRequestMethod("GET"); - httpConn.connect(); - String response = ""; - try (BufferedReader connReader = new BufferedReader(new InputStreamReader(httpConn.getInputStream()))) { - String line; - while ((line = connReader.readLine()) != null) { - response += line; - } - httpConn.disconnect(); - return new Pair<Integer, String>(httpConn.getResponseCode(), response); - } catch (IOException e) { - if (e.getMessage().startsWith("Server returned HTTP response code")) { - System.out.println("hi"); - BufferedReader connReader = new BufferedReader(new InputStreamReader(httpConn.getErrorStream())); - String line; - while ((line = connReader.readLine()) != null) { - response += line; - } - httpConn.disconnect(); - return new Pair<Integer, String>(httpConn.getResponseCode(), response); - } else { - fail("we got an exception: " + e); - } - } - } catch (Exception e) { - fail("we got an exception" + e); - } - - return null; + HttpURLConnection httpConn = (HttpURLConnection) new URL(url).openConnection(); + httpConn.setRequestMethod("GET"); + httpConn.connect(); + return getResponse(httpConn); } - private static Pair<Integer, String> dmaapPost(String topic, String data) { + private static Pair<Integer, String> dmaapPost(String topic, String data) throws IOException { String url = "http://localhost:" + DMAAPSIM_SERVER_PORT + "/events/" + topic; byte[] postData = data.getBytes(StandardCharsets.UTF_8); - try { - URLConnection conn = new URL(url).openConnection(); - HttpURLConnection httpConn = null; - if (conn instanceof HttpURLConnection) { - httpConn = (HttpURLConnection) conn; - } else { - fail("connection not set up right"); - } - httpConn.setRequestMethod("POST"); - httpConn.setDoOutput(true); - httpConn.setRequestProperty("Content-Type", "text/plain"); - httpConn.setRequestProperty("Content-Length", "" + postData.length); - httpConn.connect(); - String response = ""; - try (DataOutputStream connWriter = new DataOutputStream(httpConn.getOutputStream())) { - connWriter.write(postData); - connWriter.flush(); - } - try (BufferedReader connReader = new BufferedReader(new InputStreamReader(httpConn.getInputStream()))) { - String line; - while ((line = connReader.readLine()) != null) { - response += line; - } - httpConn.disconnect(); - return new Pair<Integer, String>(httpConn.getResponseCode(), response); - } catch (IOException e) { - if (e.getMessage().startsWith("Server returned HTTP response code")) { - System.out.println("hi"); - BufferedReader connReader = new BufferedReader(new InputStreamReader(httpConn.getErrorStream())); - String line; - while ((line = connReader.readLine()) != null) { - response += line; - } - httpConn.disconnect(); - return new Pair<Integer, String>(httpConn.getResponseCode(), response); - } else { - fail("we got an exception: " + e); - } - } - } catch (Exception e) { - fail("we got an exception: " + e); - } - return null; + HttpURLConnection httpConn = (HttpURLConnection) new URL(url).openConnection(); + httpConn.setRequestMethod("POST"); + httpConn.setDoOutput(true); + httpConn.setRequestProperty("Content-Type", "text/plain"); + httpConn.setRequestProperty("Content-Length", "" + postData.length); + httpConn.connect(); + IOUtils.write(postData, httpConn.getOutputStream()); + return getResponse(httpConn); } - private static Pair<Integer, String> setStatus(int status) { + private static Pair<Integer, String> setStatus(int status) throws IOException { String url = "http://localhost:" + DMAAPSIM_SERVER_PORT + "/events/setStatus?statusCode=" + status; - try { - URLConnection conn = new URL(url).openConnection(); - HttpURLConnection httpConn = null; - if (conn instanceof HttpURLConnection) { - httpConn = (HttpURLConnection) conn; - } else { - fail("connection not set up right"); - } - httpConn.setRequestMethod("POST"); - httpConn.connect(); - String response = ""; - try (BufferedReader connReader = new BufferedReader(new InputStreamReader(httpConn.getInputStream()))) { - String line; - while ((line = connReader.readLine()) != null) { - response += line; - } - httpConn.disconnect(); - return new Pair<Integer, String>(httpConn.getResponseCode(), response); - } catch (IOException e) { - if (e.getMessage().startsWith("Server returned HTTP response code")) { - System.out.println("hi"); - BufferedReader connReader = new BufferedReader(new InputStreamReader(httpConn.getErrorStream())); - String line; - while ((line = connReader.readLine()) != null) { - response += line; - } - httpConn.disconnect(); - return new Pair<Integer, String>(httpConn.getResponseCode(), response); - } else { - fail("we got an exception: " + e); - } - } - } catch (Exception e) { - fail("we got an exception" + e); - } - return null; + HttpURLConnection httpConn = (HttpURLConnection) new URL(url).openConnection(); + httpConn.setRequestMethod("POST"); + httpConn.connect(); + return getResponse(httpConn); } - private static class Pair<A, B> { - public final A first; - public final B second; + private static Pair<Integer, String> getResponse(HttpURLConnection httpConn) throws IOException { + try { + String response = IOUtils.toString(httpConn.getInputStream(), StandardCharsets.UTF_8); + return Pair.of(httpConn.getResponseCode(), response); + + } catch (IOException e) { + if (e.getMessage().startsWith("Server returned HTTP response code")) { + String response = IOUtils.toString(httpConn.getErrorStream(), StandardCharsets.UTF_8); + return Pair.of(httpConn.getResponseCode(), response); + } - public Pair(A first, B second) { - this.first = first; - this.second = second; + throw e; } } } diff --git a/policy-core/src/main/java/org/onap/policy/drools/core/PolicyContainer.java b/policy-core/src/main/java/org/onap/policy/drools/core/PolicyContainer.java index 6547ca73..5bce3505 100644 --- a/policy-core/src/main/java/org/onap/policy/drools/core/PolicyContainer.java +++ b/policy-core/src/main/java/org/onap/policy/drools/core/PolicyContainer.java @@ -537,7 +537,12 @@ public class PolicyContainer implements Startable { * {@inheritDoc}. */ @Override - public synchronized boolean start() { + public synchronized boolean start() { // NOSONAR + /* + * disabling sonar about returning the same value, because we prefer the code to + * be structured this way + */ + if (isStarted) { return true; } diff --git a/policy-management/src/test/java/org/onap/policy/drools/system/internal/AggregatedPolicyControllerTest.java b/policy-management/src/test/java/org/onap/policy/drools/system/internal/AggregatedPolicyControllerTest.java index 0b959f05..6b669a2d 100644 --- a/policy-management/src/test/java/org/onap/policy/drools/system/internal/AggregatedPolicyControllerTest.java +++ b/policy-management/src/test/java/org/onap/policy/drools/system/internal/AggregatedPolicyControllerTest.java @@ -600,20 +600,17 @@ public class AggregatedPolicyControllerTest { @Test(expected = IllegalArgumentException.class) public void testDeliver_NullTopic() { - apc.start(); - apc.deliver(CommInfrastructure.NOOP, null, MY_EVENT); + validateDeliverFailure(null, MY_EVENT); } @Test(expected = IllegalArgumentException.class) public void testDeliver_EmptyTopic() { - apc.start(); - apc.deliver(CommInfrastructure.NOOP, "", MY_EVENT); + validateDeliverFailure("", MY_EVENT); } @Test(expected = IllegalArgumentException.class) public void testDeliver_NullEvent() { - apc.start(); - apc.deliver(CommInfrastructure.NOOP, SINK_TOPIC1, null); + validateDeliverFailure(SINK_TOPIC1, null); } @Test(expected = IllegalStateException.class) @@ -788,6 +785,11 @@ public class AggregatedPolicyControllerTest { assertTrue(apc.toString().startsWith("AggregatedPolicyController [")); } + private void validateDeliverFailure(String topic, String event) { + apc.start(); + apc.deliver(CommInfrastructure.NOOP, topic, event); + } + /** * Performs an operation that has a beforeXxx method and an afterXxx method. Tries * combinations where beforeXxx and afterXxx return {@code true} and {@code false}. diff --git a/policy-utils/src/test/java/org/onap/policy/drools/utils/logging/MdcTransactionTest.java b/policy-utils/src/test/java/org/onap/policy/drools/utils/logging/MdcTransactionTest.java index 82a2b2e6..213c1c6e 100644 --- a/policy-utils/src/test/java/org/onap/policy/drools/utils/logging/MdcTransactionTest.java +++ b/policy-utils/src/test/java/org/onap/policy/drools/utils/logging/MdcTransactionTest.java @@ -47,38 +47,49 @@ public class MdcTransactionTest { assertNullSubTransactionFields(trans); - assertNotNull(MDC.get(MdcTransactionConstants.REQUEST_ID)); - assertNotNull(MDC.get(MdcTransactionConstants.PARTNER_NAME)); - assertNotNull(MDC.get(MdcTransactionConstants.VIRTUAL_SERVER_NAME)); - assertNotNull(MDC.get(MdcTransactionConstants.SERVER)); - assertNotNull(MDC.get(MdcTransactionConstants.SERVER_IP_ADDRESS)); - assertNotNull(MDC.get(MdcTransactionConstants.SERVER_FQDN)); - assertNotNull(MDC.get(MdcTransactionConstants.SERVICE_NAME)); - - assertNull(MDC.get(MdcTransactionConstants.INVOCATION_ID)); - assertNull(MDC.get(MdcTransactionConstants.BEGIN_TIMESTAMP)); - assertNull(MDC.get(MdcTransactionConstants.END_TIMESTAMP)); - assertNull(MDC.get(MdcTransactionConstants.ELAPSED_TIME)); - assertNull(MDC.get(MdcTransactionConstants.SERVICE_INSTANCE_ID)); - assertNull(MDC.get(MdcTransactionConstants.INSTANCE_UUID)); - assertNull(MDC.get(MdcTransactionConstants.PROCESS_KEY)); - assertNull(MDC.get(MdcTransactionConstants.STATUS_CODE)); - assertNull(MDC.get(MdcTransactionConstants.RESPONSE_CODE)); - assertNull(MDC.get(MdcTransactionConstants.RESPONSE_DESCRIPTION)); - assertNull(MDC.get(MdcTransactionConstants.SEVERITY)); - assertNull(MDC.get(MdcTransactionConstants.TARGET_ENTITY)); - assertNull(MDC.get(MdcTransactionConstants.TARGET_SERVICE_NAME)); - assertNull(MDC.get(MdcTransactionConstants.TARGET_VIRTUAL_ENTITY)); - assertNull(MDC.get(MdcTransactionConstants.CLIENT_IP_ADDRESS)); - assertNull(MDC.get(MdcTransactionConstants.REMOTE_HOST)); + assertNotNullKeys( + MdcTransactionConstants.REQUEST_ID, + MdcTransactionConstants.PARTNER_NAME, + MdcTransactionConstants.VIRTUAL_SERVER_NAME, + MdcTransactionConstants.SERVER, + MdcTransactionConstants.SERVER_IP_ADDRESS, + MdcTransactionConstants.SERVER_FQDN, + MdcTransactionConstants.SERVICE_NAME + ); + + + assertNullKeys( + MdcTransactionConstants.INVOCATION_ID, + MdcTransactionConstants.BEGIN_TIMESTAMP, + MdcTransactionConstants.END_TIMESTAMP, + MdcTransactionConstants.ELAPSED_TIME, + MdcTransactionConstants.SERVICE_INSTANCE_ID, + MdcTransactionConstants.INSTANCE_UUID, + MdcTransactionConstants.PROCESS_KEY, + MdcTransactionConstants.STATUS_CODE, + MdcTransactionConstants.RESPONSE_CODE, + MdcTransactionConstants.RESPONSE_DESCRIPTION, + MdcTransactionConstants.SEVERITY, + MdcTransactionConstants.TARGET_ENTITY, + MdcTransactionConstants.TARGET_SERVICE_NAME, + MdcTransactionConstants.TARGET_VIRTUAL_ENTITY, + MdcTransactionConstants.CLIENT_IP_ADDRESS, + MdcTransactionConstants.REMOTE_HOST + ); - assertEquals(trans.getRequestId(), MDC.get(MdcTransactionConstants.REQUEST_ID)); - assertEquals(trans.getPartner(), MDC.get(MdcTransactionConstants.PARTNER_NAME)); - assertEquals(trans.getVirtualServerName(), MDC.get(MdcTransactionConstants.VIRTUAL_SERVER_NAME)); - assertEquals(trans.getServer(), MDC.get(MdcTransactionConstants.SERVER)); - assertEquals(trans.getServerIpAddress(), MDC.get(MdcTransactionConstants.SERVER_IP_ADDRESS)); - assertEquals(trans.getServerFqdn(), MDC.get(MdcTransactionConstants.SERVER_FQDN)); - assertEquals(trans.getServiceName(), MDC.get(MdcTransactionConstants.SERVICE_NAME)); + assertTransactionFields(trans); + } + + private void assertNotNullKeys(String... notNullKeys) { + for (String key: notNullKeys) { + assertNotNull(key, MDC.get(key)); + } + } + + private void assertNullKeys(String... nullKeys) { + for (String key: nullKeys) { + assertNull(key, MDC.get(key)); + } } private void assertNullSubTransactionFields(MdcTransaction trans) { @@ -144,52 +155,51 @@ public class MdcTransactionTest { assertTransactionFields(trans); - assertNotNull(MDC.get(MdcTransactionConstants.INVOCATION_ID)); - assertNotNull(MDC.get(MdcTransactionConstants.BEGIN_TIMESTAMP)); - assertNotNull(MDC.get(MdcTransactionConstants.END_TIMESTAMP)); - assertNotNull(MDC.get(MdcTransactionConstants.ELAPSED_TIME)); - assertNotNull(MDC.get(MdcTransactionConstants.SERVICE_INSTANCE_ID)); - assertNotNull(MDC.get(MdcTransactionConstants.INSTANCE_UUID)); - assertNotNull(MDC.get(MdcTransactionConstants.PROCESS_KEY)); - assertNotNull(MDC.get(MdcTransactionConstants.STATUS_CODE)); - assertNotNull(MDC.get(MdcTransactionConstants.RESPONSE_CODE)); - assertNotNull(MDC.get(MdcTransactionConstants.RESPONSE_DESCRIPTION)); - assertNotNull(MDC.get(MdcTransactionConstants.SEVERITY)); - assertNotNull(MDC.get(MdcTransactionConstants.TARGET_ENTITY)); - assertNotNull(MDC.get(MdcTransactionConstants.TARGET_SERVICE_NAME)); - assertNotNull(MDC.get(MdcTransactionConstants.TARGET_VIRTUAL_ENTITY)); - assertNotNull(MDC.get(MdcTransactionConstants.CLIENT_IP_ADDRESS)); - assertNotNull(MDC.get(MdcTransactionConstants.REMOTE_HOST)); + assertNotNullKeys( + MdcTransactionConstants.INVOCATION_ID, + MdcTransactionConstants.BEGIN_TIMESTAMP, + MdcTransactionConstants.END_TIMESTAMP, + MdcTransactionConstants.ELAPSED_TIME, + MdcTransactionConstants.SERVICE_INSTANCE_ID, + MdcTransactionConstants.INSTANCE_UUID, + MdcTransactionConstants.PROCESS_KEY, + MdcTransactionConstants.STATUS_CODE, + MdcTransactionConstants.RESPONSE_CODE, + MdcTransactionConstants.RESPONSE_DESCRIPTION, + MdcTransactionConstants.SEVERITY, + MdcTransactionConstants.TARGET_ENTITY, + MdcTransactionConstants.TARGET_SERVICE_NAME, + MdcTransactionConstants.TARGET_VIRTUAL_ENTITY, + MdcTransactionConstants.CLIENT_IP_ADDRESS, + MdcTransactionConstants.REMOTE_HOST); assertEquals(trans.getInvocationId(), MDC.get(MdcTransactionConstants.INVOCATION_ID)); assertEquals(trans.timestamp(trans.getStartTime()), MDC.get(MdcTransactionConstants.BEGIN_TIMESTAMP)); assertEquals(trans.timestamp(trans.getEndTime()), MDC.get(MdcTransactionConstants.END_TIMESTAMP)); assertEquals(String.valueOf(Duration.between(trans.getStartTime(), trans.getEndTime()).toMillis()), MDC.get(MdcTransactionConstants.ELAPSED_TIME)); - assertEquals(trans.getServiceInstanceId(), MDC.get(MdcTransactionConstants.SERVICE_INSTANCE_ID)); assertEquals(trans.getInstanceUuid(), MDC.get(MdcTransactionConstants.INSTANCE_UUID)); - assertEquals(trans.getProcessKey(), MDC.get(MdcTransactionConstants.PROCESS_KEY)); - assertEquals(trans.getStatusCode(), MDC.get(MdcTransactionConstants.STATUS_CODE)); - assertEquals(trans.getResponseCode(), MDC.get(MdcTransactionConstants.RESPONSE_CODE)); - assertEquals(trans.getResponseDescription(), MDC.get(MdcTransactionConstants.RESPONSE_DESCRIPTION)); - assertEquals(trans.getSeverity(), MDC.get(MdcTransactionConstants.SEVERITY)); - assertEquals(trans.getTargetEntity(), MDC.get(MdcTransactionConstants.TARGET_ENTITY)); - assertEquals(trans.getTargetServiceName(), MDC.get(MdcTransactionConstants.TARGET_SERVICE_NAME)); - assertEquals(trans.getTargetVirtualEntity(), MDC.get(MdcTransactionConstants.TARGET_VIRTUAL_ENTITY)); - assertEquals(trans.getClientIpAddress(), MDC.get(MdcTransactionConstants.CLIENT_IP_ADDRESS)); - assertEquals(trans.getRemoteHost(), MDC.get(MdcTransactionConstants.REMOTE_HOST)); - - assertEquals("service-instance-id", trans.getServiceInstanceId()); - assertEquals("process-key", trans.getProcessKey()); - assertEquals("status-code", trans.getStatusCode()); - assertEquals("response-code", trans.getResponseCode()); - assertEquals("response-description", trans.getResponseDescription()); - assertEquals("severity", trans.getSeverity()); - assertEquals("target-entity", trans.getTargetEntity()); - assertEquals("target-service-name", trans.getTargetServiceName()); - assertEquals("target-virtual-entity", trans.getTargetVirtualEntity()); - assertEquals("client-ip-address", trans.getClientIpAddress()); - assertEquals("remote-host", trans.getRemoteHost()); + + assertKeyEquals("service-instance-id", trans.getServiceInstanceId(), + MdcTransactionConstants.SERVICE_INSTANCE_ID); + assertKeyEquals("process-key", trans.getProcessKey(), MdcTransactionConstants.PROCESS_KEY); + assertKeyEquals("status-code", trans.getStatusCode(), MdcTransactionConstants.STATUS_CODE); + assertKeyEquals("response-code", trans.getResponseCode(), MdcTransactionConstants.RESPONSE_CODE); + assertKeyEquals("response-description", trans.getResponseDescription(), + MdcTransactionConstants.RESPONSE_DESCRIPTION); + assertKeyEquals("severity", trans.getSeverity(), MdcTransactionConstants.SEVERITY); + assertKeyEquals("target-entity", trans.getTargetEntity(), MdcTransactionConstants.TARGET_ENTITY); + assertKeyEquals("target-service-name", trans.getTargetServiceName(), + MdcTransactionConstants.TARGET_SERVICE_NAME); + assertKeyEquals("target-virtual-entity", trans.getTargetVirtualEntity(), + MdcTransactionConstants.TARGET_VIRTUAL_ENTITY); + assertKeyEquals("client-ip-address", trans.getClientIpAddress(), MdcTransactionConstants.CLIENT_IP_ADDRESS); + assertKeyEquals("remote-host", trans.getRemoteHost(), MdcTransactionConstants.REMOTE_HOST); + } + + private void assertKeyEquals(String expected, String transValue, String mdcKey) { + assertEquals("trans." + expected, expected, transValue); + assertEquals("mdc." + expected, expected, MDC.get(mdcKey)); } @Test |