diff options
| author | Keith Wall <kwall@apache.org> | 2012-09-07 15:51:58 +0000 |
|---|---|---|
| committer | Keith Wall <kwall@apache.org> | 2012-09-07 15:51:58 +0000 |
| commit | cbb299a7b67d715acfd602f69b874e1b70b869c7 (patch) | |
| tree | 78c8f3d5b15803dbb343cd0069c8f97c8545998a /java/perftests | |
| parent | 85682330fb51017cc2e2a772e7ec0b6345ff22d1 (diff) | |
| download | qpid-python-cbb299a7b67d715acfd602f69b874e1b70b869c7.tar.gz | |
QPID-4275: Java Performance Tests - race condition between closing test consumer and test connection
Applied patch from Philip Harvey <phil@philharveyonline.com>
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1382074 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/perftests')
| -rw-r--r-- | java/perftests/src/main/java/org/apache/qpid/disttest/client/ParticipantExecutor.java | 10 | ||||
| -rw-r--r-- | java/perftests/src/test/java/org/apache/qpid/disttest/client/ParticipantExecutorTest.java | 20 |
2 files changed, 27 insertions, 3 deletions
diff --git a/java/perftests/src/main/java/org/apache/qpid/disttest/client/ParticipantExecutor.java b/java/perftests/src/main/java/org/apache/qpid/disttest/client/ParticipantExecutor.java index bb9ce26f7e..10f62708a4 100644 --- a/java/perftests/src/main/java/org/apache/qpid/disttest/client/ParticipantExecutor.java +++ b/java/perftests/src/main/java/org/apache/qpid/disttest/client/ParticipantExecutor.java @@ -108,8 +108,16 @@ public class ParticipantExecutor } finally { + try + { + _participant.releaseResources(); + } + catch(Exception e) + { + LOGGER.error("Participant " + _participant + " unable to release resources", e); + } + _client.sendResults(result); - _participant.releaseResources(); } } } diff --git a/java/perftests/src/test/java/org/apache/qpid/disttest/client/ParticipantExecutorTest.java b/java/perftests/src/test/java/org/apache/qpid/disttest/client/ParticipantExecutorTest.java index f30e4664ff..dc73e597d5 100644 --- a/java/perftests/src/test/java/org/apache/qpid/disttest/client/ParticipantExecutorTest.java +++ b/java/perftests/src/test/java/org/apache/qpid/disttest/client/ParticipantExecutorTest.java @@ -20,6 +20,7 @@ package org.apache.qpid.disttest.client; import static org.mockito.Matchers.argThat; +import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.inOrder; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -69,8 +70,8 @@ public class ParticipantExecutorTest extends TestCase InOrder inOrder = inOrder(_participant, _client); inOrder.verify(_participant).doIt(CLIENT_NAME); - inOrder.verify(_client).sendResults(_mockResult); inOrder.verify(_participant).releaseResources(); + inOrder.verify(_client).sendResults(_mockResult); } public void testParticipantThrowsException() throws Exception @@ -82,13 +83,28 @@ public class ParticipantExecutorTest extends TestCase InOrder inOrder = inOrder(_participant, _client); inOrder.verify(_participant).doIt(CLIENT_NAME); + inOrder.verify(_participant).releaseResources(); inOrder.verify(_client).sendResults(argThat(HAS_ERROR)); + } + + public void testReleaseResourcesThrowsException() throws Exception + { + when(_participant.doIt(CLIENT_NAME)).thenReturn(_mockResult); + doThrow(DistributedTestException.class).when(_participant).releaseResources(); + + _participantExecutor.start(_client); + + InOrder inOrder = inOrder(_participant, _client); + + inOrder.verify(_participant).doIt(CLIENT_NAME); inOrder.verify(_participant).releaseResources(); + + // check that sendResults is called even though releaseResources threw an exception + inOrder.verify(_client).sendResults(_mockResult); } public void testThreadNameAndDaemonness() throws Exception { - ThreadPropertyReportingParticipant participant = new ThreadPropertyReportingParticipant(PARTICIPANT_NAME); _participantExecutor = new ParticipantExecutor(participant); |
