|
@@ -21,6 +21,8 @@ package org.elasticsearch.client;
|
|
|
|
|
|
import org.apache.http.HttpEntity;
|
|
|
import org.apache.http.entity.ByteArrayEntity;
|
|
|
+import org.apache.http.entity.ContentType;
|
|
|
+import org.apache.http.entity.StringEntity;
|
|
|
import org.apache.http.util.EntityUtils;
|
|
|
import org.elasticsearch.action.DocWriteRequest;
|
|
|
import org.elasticsearch.action.bulk.BulkRequest;
|
|
@@ -64,6 +66,8 @@ import org.elasticsearch.test.RandomObjects;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
import java.io.InputStream;
|
|
|
+import java.lang.reflect.Constructor;
|
|
|
+import java.lang.reflect.Modifier;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.Locale;
|
|
|
import java.util.Map;
|
|
@@ -77,20 +81,50 @@ import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertToXC
|
|
|
|
|
|
public class RequestTests extends ESTestCase {
|
|
|
|
|
|
+ public void testConstructor() throws Exception {
|
|
|
+ final String method = randomFrom("GET", "PUT", "POST", "HEAD", "DELETE");
|
|
|
+ final String endpoint = randomAlphaOfLengthBetween(1, 10);
|
|
|
+ final Map<String, String> parameters = singletonMap(randomAlphaOfLength(5), randomAlphaOfLength(5));
|
|
|
+ final HttpEntity entity = randomBoolean() ? new StringEntity(randomAlphaOfLengthBetween(1, 100), ContentType.TEXT_PLAIN) : null;
|
|
|
+
|
|
|
+ NullPointerException e = expectThrows(NullPointerException.class, () -> new Request(null, endpoint, parameters, entity));
|
|
|
+ assertEquals("method cannot be null", e.getMessage());
|
|
|
+
|
|
|
+ e = expectThrows(NullPointerException.class, () -> new Request(method, null, parameters, entity));
|
|
|
+ assertEquals("endpoint cannot be null", e.getMessage());
|
|
|
+
|
|
|
+ e = expectThrows(NullPointerException.class, () -> new Request(method, endpoint, null, entity));
|
|
|
+ assertEquals("parameters cannot be null", e.getMessage());
|
|
|
+
|
|
|
+ final Request request = new Request(method, endpoint, parameters, entity);
|
|
|
+ assertEquals(method, request.getMethod());
|
|
|
+ assertEquals(endpoint, request.getEndpoint());
|
|
|
+ assertEquals(parameters, request.getParameters());
|
|
|
+ assertEquals(entity, request.getEntity());
|
|
|
+
|
|
|
+ final Constructor<?>[] constructors = Request.class.getConstructors();
|
|
|
+ assertEquals("Expected only 1 constructor", 1, constructors.length);
|
|
|
+ assertTrue("Request constructor is not public", Modifier.isPublic(constructors[0].getModifiers()));
|
|
|
+ }
|
|
|
+
|
|
|
+ public void testClassVisibility() throws Exception {
|
|
|
+ assertTrue("Request class is not public", Modifier.isPublic(Request.class.getModifiers()));
|
|
|
+ }
|
|
|
+
|
|
|
public void testPing() {
|
|
|
Request request = Request.ping();
|
|
|
- assertEquals("/", request.endpoint);
|
|
|
- assertEquals(0, request.params.size());
|
|
|
- assertNull(request.entity);
|
|
|
- assertEquals("HEAD", request.method);
|
|
|
+ assertEquals("/", request.getEndpoint());
|
|
|
+ assertEquals(0, request.getParameters().size());
|
|
|
+ assertNull(request.getEntity());
|
|
|
+ assertEquals("HEAD", request.getMethod());
|
|
|
}
|
|
|
|
|
|
public void testInfo() {
|
|
|
Request request = Request.info();
|
|
|
- assertEquals("/", request.endpoint);
|
|
|
- assertEquals(0, request.params.size());
|
|
|
- assertNull(request.entity);
|
|
|
- assertEquals("GET", request.method);
|
|
|
+ assertEquals("/", request.getEndpoint());
|
|
|
+ assertEquals(0, request.getParameters().size());
|
|
|
+ assertNull(request.getEntity());
|
|
|
+ assertEquals("GET", request.getMethod());
|
|
|
}
|
|
|
|
|
|
public void testGet() {
|
|
@@ -124,10 +158,10 @@ public class RequestTests extends ESTestCase {
|
|
|
}
|
|
|
|
|
|
Request request = Request.delete(deleteRequest);
|
|
|
- assertEquals("/" + index + "/" + type + "/" + id, request.endpoint);
|
|
|
- assertEquals(expectedParams, request.params);
|
|
|
- assertEquals("DELETE", request.method);
|
|
|
- assertNull(request.entity);
|
|
|
+ assertEquals("/" + index + "/" + type + "/" + id, request.getEndpoint());
|
|
|
+ assertEquals(expectedParams, request.getParameters());
|
|
|
+ assertEquals("DELETE", request.getMethod());
|
|
|
+ assertNull(request.getEntity());
|
|
|
}
|
|
|
|
|
|
public void testExists() {
|
|
@@ -200,10 +234,10 @@ public class RequestTests extends ESTestCase {
|
|
|
}
|
|
|
}
|
|
|
Request request = requestConverter.apply(getRequest);
|
|
|
- assertEquals("/" + index + "/" + type + "/" + id, request.endpoint);
|
|
|
- assertEquals(expectedParams, request.params);
|
|
|
- assertNull(request.entity);
|
|
|
- assertEquals(method, request.method);
|
|
|
+ assertEquals("/" + index + "/" + type + "/" + id, request.getEndpoint());
|
|
|
+ assertEquals(expectedParams, request.getParameters());
|
|
|
+ assertNull(request.getEntity());
|
|
|
+ assertEquals(method, request.getMethod());
|
|
|
}
|
|
|
|
|
|
public void testIndex() throws IOException {
|
|
@@ -267,16 +301,16 @@ public class RequestTests extends ESTestCase {
|
|
|
|
|
|
Request request = Request.index(indexRequest);
|
|
|
if (indexRequest.opType() == DocWriteRequest.OpType.CREATE) {
|
|
|
- assertEquals("/" + index + "/" + type + "/" + id + "/_create", request.endpoint);
|
|
|
+ assertEquals("/" + index + "/" + type + "/" + id + "/_create", request.getEndpoint());
|
|
|
} else if (id != null) {
|
|
|
- assertEquals("/" + index + "/" + type + "/" + id, request.endpoint);
|
|
|
+ assertEquals("/" + index + "/" + type + "/" + id, request.getEndpoint());
|
|
|
} else {
|
|
|
- assertEquals("/" + index + "/" + type, request.endpoint);
|
|
|
+ assertEquals("/" + index + "/" + type, request.getEndpoint());
|
|
|
}
|
|
|
- assertEquals(expectedParams, request.params);
|
|
|
- assertEquals(method, request.method);
|
|
|
+ assertEquals(expectedParams, request.getParameters());
|
|
|
+ assertEquals(method, request.getMethod());
|
|
|
|
|
|
- HttpEntity entity = request.entity;
|
|
|
+ HttpEntity entity = request.getEntity();
|
|
|
assertTrue(entity instanceof ByteArrayEntity);
|
|
|
assertEquals(indexRequest.getContentType().mediaTypeWithoutParameters(), entity.getContentType().getValue());
|
|
|
try (XContentParser parser = createParser(xContentType.xContent(), entity.getContent())) {
|
|
@@ -367,11 +401,11 @@ public class RequestTests extends ESTestCase {
|
|
|
}
|
|
|
|
|
|
Request request = Request.update(updateRequest);
|
|
|
- assertEquals("/" + index + "/" + type + "/" + id + "/_update", request.endpoint);
|
|
|
- assertEquals(expectedParams, request.params);
|
|
|
- assertEquals("POST", request.method);
|
|
|
+ assertEquals("/" + index + "/" + type + "/" + id + "/_update", request.getEndpoint());
|
|
|
+ assertEquals(expectedParams, request.getParameters());
|
|
|
+ assertEquals("POST", request.getMethod());
|
|
|
|
|
|
- HttpEntity entity = request.entity;
|
|
|
+ HttpEntity entity = request.getEntity();
|
|
|
assertTrue(entity instanceof ByteArrayEntity);
|
|
|
|
|
|
UpdateRequest parsedUpdateRequest = new UpdateRequest();
|
|
@@ -485,12 +519,12 @@ public class RequestTests extends ESTestCase {
|
|
|
}
|
|
|
|
|
|
Request request = Request.bulk(bulkRequest);
|
|
|
- assertEquals("/_bulk", request.endpoint);
|
|
|
- assertEquals(expectedParams, request.params);
|
|
|
- assertEquals("POST", request.method);
|
|
|
- assertEquals(xContentType.mediaTypeWithoutParameters(), request.entity.getContentType().getValue());
|
|
|
- byte[] content = new byte[(int) request.entity.getContentLength()];
|
|
|
- try (InputStream inputStream = request.entity.getContent()) {
|
|
|
+ assertEquals("/_bulk", request.getEndpoint());
|
|
|
+ assertEquals(expectedParams, request.getParameters());
|
|
|
+ assertEquals("POST", request.getMethod());
|
|
|
+ assertEquals(xContentType.mediaTypeWithoutParameters(), request.getEntity().getContentType().getValue());
|
|
|
+ byte[] content = new byte[(int) request.getEntity().getContentLength()];
|
|
|
+ try (InputStream inputStream = request.getEntity().getContent()) {
|
|
|
Streams.readFully(inputStream, content);
|
|
|
}
|
|
|
|
|
@@ -541,7 +575,7 @@ public class RequestTests extends ESTestCase {
|
|
|
bulkRequest.add(new DeleteRequest("index", "type", "2"));
|
|
|
|
|
|
Request request = Request.bulk(bulkRequest);
|
|
|
- assertEquals(XContentType.JSON.mediaTypeWithoutParameters(), request.entity.getContentType().getValue());
|
|
|
+ assertEquals(XContentType.JSON.mediaTypeWithoutParameters(), request.getEntity().getContentType().getValue());
|
|
|
}
|
|
|
{
|
|
|
XContentType xContentType = randomFrom(XContentType.JSON, XContentType.SMILE);
|
|
@@ -551,7 +585,7 @@ public class RequestTests extends ESTestCase {
|
|
|
bulkRequest.add(new DeleteRequest("index", "type", "2"));
|
|
|
|
|
|
Request request = Request.bulk(bulkRequest);
|
|
|
- assertEquals(xContentType.mediaTypeWithoutParameters(), request.entity.getContentType().getValue());
|
|
|
+ assertEquals(xContentType.mediaTypeWithoutParameters(), request.getEntity().getContentType().getValue());
|
|
|
}
|
|
|
{
|
|
|
XContentType xContentType = randomFrom(XContentType.JSON, XContentType.SMILE);
|
|
@@ -563,7 +597,7 @@ public class RequestTests extends ESTestCase {
|
|
|
}
|
|
|
|
|
|
Request request = Request.bulk(new BulkRequest().add(updateRequest));
|
|
|
- assertEquals(xContentType.mediaTypeWithoutParameters(), request.entity.getContentType().getValue());
|
|
|
+ assertEquals(xContentType.mediaTypeWithoutParameters(), request.getEntity().getContentType().getValue());
|
|
|
}
|
|
|
{
|
|
|
BulkRequest bulkRequest = new BulkRequest();
|
|
@@ -712,12 +746,12 @@ public class RequestTests extends ESTestCase {
|
|
|
endpoint.add(type);
|
|
|
}
|
|
|
endpoint.add("_search");
|
|
|
- assertEquals(endpoint.toString(), request.endpoint);
|
|
|
- assertEquals(expectedParams, request.params);
|
|
|
+ assertEquals(endpoint.toString(), request.getEndpoint());
|
|
|
+ assertEquals(expectedParams, request.getParameters());
|
|
|
if (searchSourceBuilder == null) {
|
|
|
- assertNull(request.entity);
|
|
|
+ assertNull(request.getEntity());
|
|
|
} else {
|
|
|
- assertToXContentBody(searchSourceBuilder, request.entity);
|
|
|
+ assertToXContentBody(searchSourceBuilder, request.getEntity());
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -728,11 +762,11 @@ public class RequestTests extends ESTestCase {
|
|
|
searchScrollRequest.scroll(randomPositiveTimeValue());
|
|
|
}
|
|
|
Request request = Request.searchScroll(searchScrollRequest);
|
|
|
- assertEquals("GET", request.method);
|
|
|
- assertEquals("/_search/scroll", request.endpoint);
|
|
|
- assertEquals(0, request.params.size());
|
|
|
- assertToXContentBody(searchScrollRequest, request.entity);
|
|
|
- assertEquals(Request.REQUEST_BODY_CONTENT_TYPE.mediaTypeWithoutParameters(), request.entity.getContentType().getValue());
|
|
|
+ assertEquals("GET", request.getMethod());
|
|
|
+ assertEquals("/_search/scroll", request.getEndpoint());
|
|
|
+ assertEquals(0, request.getParameters().size());
|
|
|
+ assertToXContentBody(searchScrollRequest, request.getEntity());
|
|
|
+ assertEquals(Request.REQUEST_BODY_CONTENT_TYPE.mediaTypeWithoutParameters(), request.getEntity().getContentType().getValue());
|
|
|
}
|
|
|
|
|
|
public void testClearScroll() throws IOException {
|
|
@@ -742,11 +776,11 @@ public class RequestTests extends ESTestCase {
|
|
|
clearScrollRequest.addScrollId(randomAlphaOfLengthBetween(5, 10));
|
|
|
}
|
|
|
Request request = Request.clearScroll(clearScrollRequest);
|
|
|
- assertEquals("DELETE", request.method);
|
|
|
- assertEquals("/_search/scroll", request.endpoint);
|
|
|
- assertEquals(0, request.params.size());
|
|
|
- assertToXContentBody(clearScrollRequest, request.entity);
|
|
|
- assertEquals(Request.REQUEST_BODY_CONTENT_TYPE.mediaTypeWithoutParameters(), request.entity.getContentType().getValue());
|
|
|
+ assertEquals("DELETE", request.getMethod());
|
|
|
+ assertEquals("/_search/scroll", request.getEndpoint());
|
|
|
+ assertEquals(0, request.getParameters().size());
|
|
|
+ assertToXContentBody(clearScrollRequest, request.getEntity());
|
|
|
+ assertEquals(Request.REQUEST_BODY_CONTENT_TYPE.mediaTypeWithoutParameters(), request.getEntity().getContentType().getValue());
|
|
|
}
|
|
|
|
|
|
private static void assertToXContentBody(ToXContent expectedBody, HttpEntity actualEntity) throws IOException {
|