[TEST] remove endless wait in RestClientTests (#30776)

This commit adds a max wait timeout of one second to all the latch.await
calls made in RestClientTests. It also makes clearer that the `onSuccess`
listener method will never be called given that the underlying http
client is mocked and makes sure that `latch.countDown` is always called
This commit is contained in:
Luca Cavanna 2018-05-22 20:31:36 +02:00 committed by GitHub
parent f7b5986682
commit 0d37ac4e8c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 50 additions and 30 deletions

View File

@ -27,11 +27,13 @@ import java.io.IOException;
import java.net.URI; import java.net.URI;
import java.util.Collections; import java.util.Collections;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import static org.elasticsearch.client.RestClientTestUtil.getHttpMethods; import static org.elasticsearch.client.RestClientTestUtil.getHttpMethods;
import static org.hamcrest.Matchers.instanceOf; import static org.hamcrest.Matchers.instanceOf;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat; import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail; import static org.junit.Assert.fail;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times; import static org.mockito.Mockito.times;
@ -57,17 +59,20 @@ public class RestClientTests extends RestClientTestCase {
restClient.performRequestAsync(new Request("unsupported", randomAsciiLettersOfLength(5)), new ResponseListener() { restClient.performRequestAsync(new Request("unsupported", randomAsciiLettersOfLength(5)), new ResponseListener() {
@Override @Override
public void onSuccess(Response response) { public void onSuccess(Response response) {
fail("should have failed because of unsupported method"); throw new UnsupportedOperationException("onSuccess cannot be called when using a mocked http client");
} }
@Override @Override
public void onFailure(Exception exception) { public void onFailure(Exception exception) {
try {
assertThat(exception, instanceOf(UnsupportedOperationException.class)); assertThat(exception, instanceOf(UnsupportedOperationException.class));
assertEquals("http method not supported: unsupported", exception.getMessage()); assertEquals("http method not supported: unsupported", exception.getMessage());
} finally {
latch.countDown(); latch.countDown();
} }
}
}); });
latch.await(); assertTrue("time out waiting for request to return", latch.await(1000, TimeUnit.MILLISECONDS));
} }
} }
@ -81,17 +86,20 @@ public class RestClientTests extends RestClientTestCase {
restClient.performRequestAsync("unsupported", randomAsciiLettersOfLength(5), new ResponseListener() { restClient.performRequestAsync("unsupported", randomAsciiLettersOfLength(5), new ResponseListener() {
@Override @Override
public void onSuccess(Response response) { public void onSuccess(Response response) {
fail("should have failed because of unsupported method"); throw new UnsupportedOperationException("onSuccess cannot be called when using a mocked http client");
} }
@Override @Override
public void onFailure(Exception exception) { public void onFailure(Exception exception) {
try {
assertThat(exception, instanceOf(UnsupportedOperationException.class)); assertThat(exception, instanceOf(UnsupportedOperationException.class));
assertEquals("http method not supported: unsupported", exception.getMessage()); assertEquals("http method not supported: unsupported", exception.getMessage());
} finally {
latch.countDown(); latch.countDown();
} }
}
}); });
latch.await(); assertTrue("time out waiting for request to return", latch.await(1000, TimeUnit.MILLISECONDS));
} }
} }
@ -105,17 +113,20 @@ public class RestClientTests extends RestClientTestCase {
restClient.performRequestAsync(randomAsciiLettersOfLength(5), randomAsciiLettersOfLength(5), null, new ResponseListener() { restClient.performRequestAsync(randomAsciiLettersOfLength(5), randomAsciiLettersOfLength(5), null, new ResponseListener() {
@Override @Override
public void onSuccess(Response response) { public void onSuccess(Response response) {
fail("should have failed because of null parameters"); throw new UnsupportedOperationException("onSuccess cannot be called when using a mocked http client");
} }
@Override @Override
public void onFailure(Exception exception) { public void onFailure(Exception exception) {
try {
assertThat(exception, instanceOf(NullPointerException.class)); assertThat(exception, instanceOf(NullPointerException.class));
assertEquals("parameters cannot be null", exception.getMessage()); assertEquals("parameters cannot be null", exception.getMessage());
} finally {
latch.countDown(); latch.countDown();
} }
}
}); });
latch.await(); assertTrue("time out waiting for request to return", latch.await(1000, TimeUnit.MILLISECONDS));
} }
} }
@ -129,18 +140,21 @@ public class RestClientTests extends RestClientTestCase {
ResponseListener listener = new ResponseListener() { ResponseListener listener = new ResponseListener() {
@Override @Override
public void onSuccess(Response response) { public void onSuccess(Response response) {
fail("should have failed because of null headers"); throw new UnsupportedOperationException("onSuccess cannot be called when using a mocked http client");
} }
@Override @Override
public void onFailure(Exception exception) { public void onFailure(Exception exception) {
try {
assertThat(exception, instanceOf(NullPointerException.class)); assertThat(exception, instanceOf(NullPointerException.class));
assertEquals("header cannot be null", exception.getMessage()); assertEquals("header cannot be null", exception.getMessage());
} finally {
latch.countDown(); latch.countDown();
} }
}
}; };
restClient.performRequestAsync("GET", randomAsciiLettersOfLength(5), listener, (Header) null); restClient.performRequestAsync("GET", randomAsciiLettersOfLength(5), listener, (Header) null);
latch.await(); assertTrue("time out waiting for request to return", latch.await(1000, TimeUnit.MILLISECONDS));
} }
} }
@ -150,17 +164,20 @@ public class RestClientTests extends RestClientTestCase {
restClient.performRequestAsync(new Request("GET", "::http:///"), new ResponseListener() { restClient.performRequestAsync(new Request("GET", "::http:///"), new ResponseListener() {
@Override @Override
public void onSuccess(Response response) { public void onSuccess(Response response) {
fail("should have failed because of wrong endpoint"); throw new UnsupportedOperationException("onSuccess cannot be called when using a mocked http client");
} }
@Override @Override
public void onFailure(Exception exception) { public void onFailure(Exception exception) {
try {
assertThat(exception, instanceOf(IllegalArgumentException.class)); assertThat(exception, instanceOf(IllegalArgumentException.class));
assertEquals("Expected scheme name at index 0: ::http:///", exception.getMessage()); assertEquals("Expected scheme name at index 0: ::http:///", exception.getMessage());
} finally {
latch.countDown(); latch.countDown();
} }
}
}); });
latch.await(); assertTrue("time out waiting for request to return", latch.await(1000, TimeUnit.MILLISECONDS));
} }
} }
@ -174,17 +191,20 @@ public class RestClientTests extends RestClientTestCase {
restClient.performRequestAsync("GET", "::http:///", new ResponseListener() { restClient.performRequestAsync("GET", "::http:///", new ResponseListener() {
@Override @Override
public void onSuccess(Response response) { public void onSuccess(Response response) {
fail("should have failed because of wrong endpoint"); throw new UnsupportedOperationException("onSuccess cannot be called when using a mocked http client");
} }
@Override @Override
public void onFailure(Exception exception) { public void onFailure(Exception exception) {
try {
assertThat(exception, instanceOf(IllegalArgumentException.class)); assertThat(exception, instanceOf(IllegalArgumentException.class));
assertEquals("Expected scheme name at index 0: ::http:///", exception.getMessage()); assertEquals("Expected scheme name at index 0: ::http:///", exception.getMessage());
} finally {
latch.countDown(); latch.countDown();
} }
}
}); });
latch.await(); assertTrue("time out waiting for request to return", latch.await(1000, TimeUnit.MILLISECONDS));
} }
} }