diff options
| author | Alex Rudyy <orudyy@apache.org> | 2014-08-13 14:28:23 +0000 |
|---|---|---|
| committer | Alex Rudyy <orudyy@apache.org> | 2014-08-13 14:28:23 +0000 |
| commit | ca2595ecc99419623a36dfb2d266567fe2f70de3 (patch) | |
| tree | 7079e9580ca4df2e3fa4703894a8fa287a154f21 | |
| parent | be9eacaeb0e5c1dfb1c68596e836477bff1bdc4b (diff) | |
| download | qpid-python-ca2595ecc99419623a36dfb2d266567fe2f70de3.tar.gz | |
QPID-5994: Fix ocasionally failing test BDBHAVirtualHostNodeOperationalLoggingTest.testRemoteNodeReAttached
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1617736 13f79535-47bb-0310-9956-ffa450edef68
| -rw-r--r-- | qpid/java/bdbstore/src/test/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeOperationalLoggingTest.java | 55 |
1 files changed, 41 insertions, 14 deletions
diff --git a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeOperationalLoggingTest.java b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeOperationalLoggingTest.java index 45527313e6..ef1021160c 100644 --- a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeOperationalLoggingTest.java +++ b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeOperationalLoggingTest.java @@ -24,7 +24,6 @@ import static org.mockito.Matchers.argThat; import static org.mockito.Mockito.*; import java.util.Collections; -import java.util.List; import java.util.Map; import org.apache.qpid.server.logging.EventLogger; @@ -34,7 +33,6 @@ import org.apache.qpid.server.logging.messages.HighAvailabilityMessages; import org.apache.qpid.server.model.SystemConfig; import org.apache.qpid.test.utils.QpidTestCase; import org.hamcrest.Description; -import org.mockito.ArgumentCaptor; import org.mockito.ArgumentMatcher; /** @@ -360,22 +358,51 @@ public class BDBHAVirtualHostNodeOperationalLoggingTest extends QpidTestCase reset(_eventLogger); node2 = (BDBHAVirtualHostNodeImpl)_helper.recoverHaVHN(node2.getId(), node2Attributes); - _helper.assertNodeRole(node2, "REPLICA"); - + _helper.assertNodeRole(node2, "REPLICA", "MASTER"); waitForNodeDetachedField(remoteNode, false); - ArgumentCaptor<LogSubject> subjectArgument = ArgumentCaptor.forClass(LogSubject.class); - ArgumentCaptor<LogMessage> messageArgument = ArgumentCaptor.forClass(LogMessage.class); - verify(_eventLogger, times(2)).message(subjectArgument.capture(), messageArgument.capture()); - - assertEquals("Unexpected subject", node1.getVirtualHostNodeLogSubject(), subjectArgument.getValue()); + final String expectedMessage = HighAvailabilityMessages.ATTACHED(node2.getName(), groupName, "REPLICA").toString(); + final String expectedMessage2 = HighAvailabilityMessages.ATTACHED(node2.getName(), groupName, "UNKNOWN").toString(); + final String expectedMessage3 = HighAvailabilityMessages.ATTACHED(node2.getName(), groupName, "MASTER").toString(); + ArgumentMatcher<LogMessage> matcher = new ArgumentMatcher<LogMessage>() + { + private String _messageErrorDescription = null; + private String _hierarchyErrorDescription = null; - String expectedMessage = HighAvailabilityMessages.ATTACHED(node2.getName(), groupName, "REPLICA").toString(); - String expectedMessage2 = HighAvailabilityMessages.ATTACHED(node2.getName(), groupName, "UNKNOWN").toString(); + @Override + public boolean matches(Object argument) + { + LogMessage logMessage = (LogMessage)argument; + String actualMessage = logMessage.toString(); + boolean expectedMessageMatches = expectedMessage.equals(actualMessage) + || expectedMessage2.equals(actualMessage) || expectedMessage3.equals(actualMessage); + if (!expectedMessageMatches) + { + _messageErrorDescription = "Actual message does not match any expected: " + actualMessage; + } + boolean expectedHierarchyMatches = HighAvailabilityMessages.ATTACHED_LOG_HIERARCHY.equals(logMessage.getLogHierarchy()); + if (!expectedHierarchyMatches) + { + _hierarchyErrorDescription = "Actual hierarchy does not match expected: " + logMessage.getLogHierarchy(); + } + return expectedMessageMatches && expectedHierarchyMatches; + } - List<LogMessage> capturedValues = messageArgument.getAllValues(); - String m = capturedValues.get(0).toString(); - assertTrue("Unexpected attached message :" + m, m.equals(expectedMessage) || m.equals(expectedMessage2)); + @Override + public void describeTo(Description description) + { + if (_messageErrorDescription != null) + { + description.appendText(_messageErrorDescription); + } + if (_hierarchyErrorDescription != null) + { + description.appendText(_hierarchyErrorDescription); + } + } + }; + verify(_eventLogger).message(argThat(new LogSubjectMatcher(node1.getVirtualHostNodeLogSubject())), + argThat(matcher)); } private void waitForNodeDetachedField(BDBHARemoteReplicationNodeImpl remoteNode, boolean expectedDetached) throws InterruptedException { |
