Skip to content

Commit

Permalink
Fix race conditions for tests
Browse files Browse the repository at this point in the history
  • Loading branch information
jamesagnew committed Sep 26, 2016
1 parent 2c27786 commit a95341d
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 29 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ public void testException() throws Exception {
IOUtils.closeQuietly(status.getEntity().getContent());

ourLog.info(myMapCheckMethods.toString());
assertThat(myMapCheckMethods, containsInAnyOrder("incomingRequestPostProcessed", "incomingRequestPreHandled", "preProcessOutgoingException", "handleException"));
assertThat(myMapCheckMethods, contains("incomingRequestPostProcessed", "incomingRequestPreHandled", "preProcessOutgoingException", "handleException"));
}

@Test
Expand All @@ -106,6 +106,12 @@ public void testRead() throws Exception {
HttpResponse status = ourClient.execute(httpGet);
IOUtils.closeQuietly(status.getEntity().getContent());

for (int i = 0; i < 10; i++) {
if (!myMapCheckMethods.contains("processingCompletedNormally")) {
Thread.sleep(100);
}
}

ourLog.info(myMapCheckMethods.toString());
assertThat(myMapCheckMethods.toString(), myMapCheckMethods, contains("incomingRequestPostProcessed", "incomingRequestPreHandled", "outgoingResponse", "processingCompletedNormally"));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.after;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.timeout;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;

Expand Down Expand Up @@ -97,10 +99,8 @@ public void testException() throws Exception {
HttpResponse status = ourClient.execute(httpGet);
IOUtils.closeQuietly(status.getEntity().getContent());

avoidRaceCondition();

ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
verify(logger, times(1)).info(captor.capture());
verify(logger, timeout(1000).times(1)).info(captor.capture());
assertThat(captor.getAllValues().get(0), StringContains.containsString("ERROR - GET http://localhost:" + ourPort + "/Patient/EX"));
}

Expand All @@ -117,10 +117,10 @@ public void testMetadata() throws Exception {
HttpResponse status = ourClient.execute(httpGet);
IOUtils.closeQuietly(status.getEntity().getContent());

avoidRaceCondition();


ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
verify(logger, times(1)).info(captor.capture());
verify(logger, timeout(1000).times(1)).info(captor.capture());
assertThat(captor.getValue(), StringContains.containsString("metadata - "));
}

Expand All @@ -138,18 +138,13 @@ public void testOperationOnInstance() throws Exception {
HttpResponse status = ourClient.execute(httpGet);
IOUtils.closeQuietly(status.getEntity().getContent());

avoidRaceCondition();


ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
verify(logger, times(1)).info(captor.capture());
verify(logger, timeout(1000).times(1)).info(captor.capture());
assertEquals("extended-operation-instance - $everything - Patient/123", captor.getValue());
}

private void avoidRaceCondition() throws InterruptedException {
// The server finishes the response and closes the connection, then runs the final interceptor so technically
// we could get here before the interceptor has fired
Thread.sleep(100);
}

@Test
public void testRequestBodyRead() throws Exception {
Expand All @@ -167,7 +162,7 @@ public void testRequestBodyRead() throws Exception {
IOUtils.closeQuietly(status.getEntity().getContent());

ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
verify(logger, times(1)).info(captor.capture());
verify(logger, timeout(1000).times(1)).info(captor.capture());
assertEquals("read - - Patient/1 - ", captor.getValue());
}

Expand All @@ -187,10 +182,10 @@ public void testProcessingTime() throws Exception {
HttpResponse status = ourClient.execute(httpGet);
IOUtils.closeQuietly(status.getEntity().getContent());

avoidRaceCondition();


ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
verify(logger, times(1)).info(captor.capture());
verify(logger, timeout(1000).times(1)).info(captor.capture());
assertThat(captor.getValue(), matchesPattern("[0-9]{3}"));
}

Expand All @@ -211,7 +206,7 @@ public void testRequestBodyReadWithContentTypeHeader() throws Exception {
IOUtils.closeQuietly(status.getEntity().getContent());

ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
verify(logger, times(1)).info(captor.capture());
verify(logger, timeout(1000).times(1)).info(captor.capture());
assertEquals("read - - Patient/1 - ", captor.getValue());
}

Expand All @@ -235,10 +230,10 @@ public void testRequestBodyCreate() throws Exception {
HttpResponse status = ourClient.execute(httpPost);
IOUtils.closeQuietly(status.getEntity().getContent());

avoidRaceCondition();


ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
verify(logger, times(1)).info(captor.capture());
verify(logger, timeout(1000).times(1)).info(captor.capture());
assertEquals("create - - Patient - <Patient xmlns=\"http://hl7.org/fhir\"><identifier><value value=\"VAL\"/></identifier></Patient>", captor.getValue());
}

Expand All @@ -265,10 +260,10 @@ public void testRequestBodyCreateException() throws Exception {
HttpResponse status = ourClient.execute(httpPost);
IOUtils.closeQuietly(status.getEntity().getContent());

avoidRaceCondition();


ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
verify(logger, times(1)).info(captor.capture());
verify(logger, timeout(1000).times(1)).info(captor.capture());
assertEquals("ERROR - create - - Patient - <Patient xmlns=\"http://hl7.org/fhir\"><identifier><value value=\"VAL\"/></identifier></Patient>", captor.getValue());
}

Expand All @@ -286,10 +281,10 @@ public void testOperationOnServer() throws Exception {
HttpResponse status = ourClient.execute(httpGet);
IOUtils.closeQuietly(status.getEntity().getContent());

avoidRaceCondition();


ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
verify(logger, times(1)).info(captor.capture());
verify(logger, timeout(1000).times(1)).info(captor.capture());
assertEquals("extended-operation-server - $everything - ", captor.getValue());
}

Expand All @@ -307,10 +302,10 @@ public void testOperationOnType() throws Exception {
HttpResponse status = ourClient.execute(httpGet);
IOUtils.closeQuietly(status.getEntity().getContent());

avoidRaceCondition();


ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
verify(logger, times(1)).info(captor.capture());
verify(logger, timeout(1000).times(1)).info(captor.capture());
assertEquals("extended-operation-type - $everything - Patient", captor.getValue());
}

Expand All @@ -327,10 +322,10 @@ public void testRead() throws Exception {
HttpResponse status = ourClient.execute(httpGet);
IOUtils.closeQuietly(status.getEntity().getContent());

avoidRaceCondition();


ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
verify(logger, times(1)).info(captor.capture());
verify(logger, timeout(1000).times(1)).info(captor.capture());
assertThat(captor.getValue(), StringContains.containsString("read - Patient/1"));
}

Expand All @@ -348,10 +343,10 @@ public void testSearch() throws Exception {
HttpResponse status = ourClient.execute(httpGet);
IOUtils.closeQuietly(status.getEntity().getContent());

avoidRaceCondition();


ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
verify(logger, times(1)).info(captor.capture());
verify(logger, timeout(1000).times(1)).info(captor.capture());
assertThat(captor.getValue(), StringContains.containsString("search-type - Patient - ?_id=1"));
}

Expand Down

0 comments on commit a95341d

Please sign in to comment.