Skip to content

Commit 8fe0c09

Browse files
committed
SQL: Use request flavored methods in tests (#30345)
Modifies the SQL tests to use the new `Request` object flavored methods introduced onto the `RestClient` in #29623. We'd like to remove the old methods eventually so we should stop using them.
1 parent 004d47a commit 8fe0c09

File tree

12 files changed

+165
-150
lines changed

12 files changed

+165
-150
lines changed

x-pack/qa/sql/multinode/src/test/java/org/elasticsearch/xpack/qa/sql/multinode/RestSqlMultinodeIT.java

+16-11
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.apache.http.HttpHost;
99
import org.apache.http.entity.ContentType;
1010
import org.apache.http.entity.StringEntity;
11+
import org.elasticsearch.client.Request;
1112
import org.elasticsearch.client.Response;
1213
import org.elasticsearch.client.RestClient;
1314
import org.elasticsearch.common.Strings;
@@ -53,7 +54,7 @@ public void testIndexOnWrongNode() throws IOException {
5354
String firstHostName = null;
5455

5556
String match = firstHost.getHostName() + ":" + firstHost.getPort();
56-
Map<String, Object> nodesInfo = responseToMap(client().performRequest("GET", "/_nodes"));
57+
Map<String, Object> nodesInfo = responseToMap(client().performRequest(new Request("GET", "/_nodes")));
5758
@SuppressWarnings("unchecked")
5859
Map<String, Object> nodes = (Map<String, Object>) nodesInfo.get("nodes");
5960
for (Map.Entry<String, Object> node : nodes.entrySet()) {
@@ -74,7 +75,9 @@ public void testIndexOnWrongNode() throws IOException {
7475
}
7576
index.endObject();
7677
index.endObject();
77-
client().performRequest("PUT", "/test", emptyMap(), new StringEntity(Strings.toString(index), ContentType.APPLICATION_JSON));
78+
Request request = new Request("PUT", "/test");
79+
request.setJsonEntity(Strings.toString(index));
80+
client().performRequest(request);
7881
int documents = between(10, 100);
7982
createTestData(documents);
8083

@@ -84,6 +87,9 @@ public void testIndexOnWrongNode() throws IOException {
8487
}
8588

8689
private void createTestData(int documents) throws UnsupportedCharsetException, IOException {
90+
Request request = new Request("PUT", "/test/test/_bulk");
91+
request.addParameter("refresh", "true");
92+
8793
StringBuilder bulk = new StringBuilder();
8894
for (int i = 0; i < documents; i++) {
8995
int a = 3 * i;
@@ -92,8 +98,9 @@ private void createTestData(int documents) throws UnsupportedCharsetException, I
9298
bulk.append("{\"index\":{\"_id\":\"" + i + "\"}\n");
9399
bulk.append("{\"a\": " + a + ", \"b\": " + b + ", \"c\": " + c + "}\n");
94100
}
95-
client().performRequest("PUT", "/test/test/_bulk", singletonMap("refresh", "true"),
96-
new StringEntity(bulk.toString(), ContentType.APPLICATION_JSON));
101+
request.setJsonEntity(bulk.toString());
102+
103+
client().performRequest(request);
97104
}
98105

99106
private Map<String, Object> responseToMap(Response response) throws IOException {
@@ -108,14 +115,12 @@ private void assertCount(RestClient client, int count) throws IOException {
108115
expected.put("columns", singletonList(columnInfo(mode, "COUNT(1)", "long", JDBCType.BIGINT, 20)));
109116
expected.put("rows", singletonList(singletonList(count)));
110117

111-
Map<String, String> params = new TreeMap<>();
112-
params.put("format", "json"); // JSON is easier to parse then a table
113-
if (Strings.hasText(mode)) {
114-
params.put("mode", mode); // JDBC or PLAIN mode
118+
Request request = new Request("POST", "/_xpack/sql");
119+
if (false == mode.isEmpty()) {
120+
request.addParameter("mode", mode);
115121
}
116-
117-
Map<String, Object> actual = responseToMap(client.performRequest("POST", "/_xpack/sql", params,
118-
new StringEntity("{\"query\": \"SELECT COUNT(*) FROM test\"}", ContentType.APPLICATION_JSON)));
122+
request.setJsonEntity("{\"query\": \"SELECT COUNT(*) FROM test\"}");
123+
Map<String, Object> actual = responseToMap(client.performRequest(request));
119124

120125
if (false == expected.equals(actual)) {
121126
NotEqualMessageBuilder message = new NotEqualMessageBuilder();

x-pack/qa/sql/security/src/test/java/org/elasticsearch/xpack/qa/sql/security/RestSqlSecurityIT.java

+9-7
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import org.apache.http.entity.ContentType;
1111
import org.apache.http.entity.StringEntity;
1212
import org.apache.http.message.BasicHeader;
13+
import org.elasticsearch.client.Request;
1314
import org.elasticsearch.client.Response;
1415
import org.elasticsearch.client.ResponseException;
1516
import org.elasticsearch.common.Nullable;
@@ -176,14 +177,15 @@ private static Map<String, Object> runSql(@Nullable String asUser, String mode,
176177
}
177178

178179
private static Map<String, Object> runSql(@Nullable String asUser, String mode, HttpEntity entity) throws IOException {
179-
Map<String, String> params = new TreeMap<>();
180-
params.put("format", "json"); // JSON is easier to parse then a table
181-
if (Strings.hasText(mode)) {
182-
params.put("mode", mode); // JDBC or PLAIN mode
180+
Request request = new Request("POST", "/_xpack/sql");
181+
if (false == mode.isEmpty()) {
182+
request.addParameter("mode", mode);
183183
}
184-
Header[] headers = asUser == null ? new Header[0] : new Header[] {new BasicHeader("es-security-runas-user", asUser)};
185-
Response response = client().performRequest("POST", "/_xpack/sql", params, entity, headers);
186-
return toMap(response);
184+
if (asUser != null) {
185+
request.setHeaders(new BasicHeader("es-security-runas-user", asUser));
186+
}
187+
request.setEntity(entity);
188+
return toMap(client().performRequest(request));
187189
}
188190

189191
private static void assertResponse(Map<String, Object> expected, Map<String, Object> actual) {

x-pack/qa/sql/security/src/test/java/org/elasticsearch/xpack/qa/sql/security/SqlSecurityTestCase.java

+12-7
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import org.elasticsearch.SpecialPermission;
1212
import org.elasticsearch.action.admin.indices.get.GetIndexAction;
1313
import org.elasticsearch.action.admin.indices.get.GetIndexRequest;
14+
import org.elasticsearch.client.Request;
1415
import org.elasticsearch.client.ResponseException;
1516
import org.elasticsearch.common.Strings;
1617
import org.elasticsearch.common.settings.Settings;
@@ -41,7 +42,6 @@
4142
import java.util.function.Function;
4243
import java.util.regex.Pattern;
4344

44-
import static java.util.Collections.emptyMap;
4545
import static java.util.Collections.singletonMap;
4646
import static org.hamcrest.Matchers.contains;
4747
import static org.hamcrest.Matchers.empty;
@@ -135,15 +135,18 @@ public void oneTimeSetup() throws Exception {
135135
* write the test data once. */
136136
return;
137137
}
138+
Request request = new Request("PUT", "/_bulk");
139+
request.addParameter("refresh", "true");
140+
138141
StringBuilder bulk = new StringBuilder();
139142
bulk.append("{\"index\":{\"_index\": \"test\", \"_type\": \"doc\", \"_id\":\"1\"}\n");
140143
bulk.append("{\"a\": 1, \"b\": 2, \"c\": 3}\n");
141144
bulk.append("{\"index\":{\"_index\": \"test\", \"_type\": \"doc\", \"_id\":\"2\"}\n");
142145
bulk.append("{\"a\": 4, \"b\": 5, \"c\": 6}\n");
143146
bulk.append("{\"index\":{\"_index\": \"bort\", \"_type\": \"doc\", \"_id\":\"1\"}\n");
144147
bulk.append("{\"a\": \"test\"}\n");
145-
client().performRequest("PUT", "/_bulk", singletonMap("refresh", "true"),
146-
new StringEntity(bulk.toString(), ContentType.APPLICATION_JSON));
148+
request.setJsonEntity(bulk.toString());
149+
client().performRequest(request);
147150
oneTimeSetup = true;
148151
}
149152

@@ -173,7 +176,7 @@ public void setInitialAuditLogOffset() {
173176
@AfterClass
174177
public static void wipeIndicesAfterTests() throws IOException {
175178
try {
176-
adminClient().performRequest("DELETE", "*");
179+
adminClient().performRequest(new Request("DELETE", "*"));
177180
} catch (ResponseException e) {
178181
// 404 here just means we had no indexes
179182
if (e.getResponse().getStatusLine().getStatusCode() != 404) {
@@ -472,13 +475,15 @@ public void testNoGetIndex() throws Exception {
472475
}
473476

474477
protected static void createUser(String name, String role) throws IOException {
475-
XContentBuilder user = JsonXContent.contentBuilder().prettyPrint().startObject(); {
478+
Request request = new Request("PUT", "/_xpack/security/user/" + name);
479+
XContentBuilder user = JsonXContent.contentBuilder().prettyPrint();
480+
user.startObject(); {
476481
user.field("password", "testpass");
477482
user.field("roles", role);
478483
}
479484
user.endObject();
480-
client().performRequest("PUT", "/_xpack/security/user/" + name, emptyMap(),
481-
new StringEntity(Strings.toString(user), ContentType.APPLICATION_JSON));
485+
request.setJsonEntity(Strings.toString(user));
486+
client().performRequest(request);
482487
}
483488

484489
protected AuditLogAsserter createAuditLogAsserter() {

x-pack/qa/sql/src/main/java/org/elasticsearch/xpack/qa/sql/cli/CliIntegrationTestCase.java

+5-4
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
*/
66
package org.elasticsearch.xpack.qa.sql.cli;
77

8-
import org.apache.http.HttpEntity;
98
import org.apache.http.entity.ContentType;
109
import org.apache.http.entity.StringEntity;
10+
import org.elasticsearch.client.Request;
1111
import org.elasticsearch.common.CheckedConsumer;
1212
import org.elasticsearch.common.Strings;
1313
import org.elasticsearch.common.xcontent.XContentBuilder;
@@ -19,7 +19,6 @@
1919

2020
import java.io.IOException;
2121

22-
import static java.util.Collections.singletonMap;
2322
import static org.elasticsearch.xpack.qa.sql.rest.RestSqlTestCase.assertNoSearchContexts;
2423

2524
public abstract class CliIntegrationTestCase extends ESRestTestCase {
@@ -60,11 +59,13 @@ protected SecurityConfig securityConfig() {
6059
}
6160

6261
protected void index(String index, CheckedConsumer<XContentBuilder, IOException> body) throws IOException {
62+
Request request = new Request("PUT", "/" + index + "/doc/1");
63+
request.addParameter("refresh", "true");
6364
XContentBuilder builder = JsonXContent.contentBuilder().startObject();
6465
body.accept(builder);
6566
builder.endObject();
66-
HttpEntity doc = new StringEntity(Strings.toString(builder), ContentType.APPLICATION_JSON);
67-
client().performRequest("PUT", "/" + index + "/doc/1", singletonMap("refresh", "true"), doc);
67+
request.setJsonEntity(Strings.toString(builder));
68+
client().performRequest(request);
6869
}
6970

7071
public String command(String command) throws IOException {

x-pack/qa/sql/src/main/java/org/elasticsearch/xpack/qa/sql/cli/ErrorsTestCase.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@
88
import java.io.IOException;
99
import org.apache.http.entity.ContentType;
1010
import org.apache.http.entity.StringEntity;
11-
12-
import static java.util.Collections.emptyMap;
11+
import org.elasticsearch.client.Request;
1312

1413
import static org.hamcrest.Matchers.startsWith;
1514

@@ -41,7 +40,9 @@ public void testSelectFromMissingIndex() throws IOException {
4140
@Override
4241
public void testSelectFromIndexWithoutTypes() throws Exception {
4342
// Create an index without any types
44-
client().performRequest("PUT", "/test", emptyMap(), new StringEntity("{}", ContentType.APPLICATION_JSON));
43+
Request request = new Request("PUT", "/test");
44+
request.setJsonEntity("{}");
45+
client().performRequest(request);
4546

4647
assertFoundOneProblem(command("SELECT * FROM test"));
4748
assertEquals("line 1:15: [test] doesn't have any types so it is incompatible with sql" + END, readLine());

x-pack/qa/sql/src/main/java/org/elasticsearch/xpack/qa/sql/cli/FetchSizeTestCase.java

+6-3
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,27 @@
77

88
import org.apache.http.entity.ContentType;
99
import org.apache.http.entity.StringEntity;
10+
import org.elasticsearch.client.Request;
1011

1112
import java.io.IOException;
1213

13-
import static java.util.Collections.singletonMap;
1414
import static org.hamcrest.Matchers.containsString;
1515

1616
/**
1717
* Test for setting the fetch size.
1818
*/
1919
public abstract class FetchSizeTestCase extends CliIntegrationTestCase {
2020
public void testSelect() throws IOException {
21+
Request request = new Request("PUT", "/test/doc/_bulk");
22+
request.addParameter("refresh", "true");
2123
StringBuilder bulk = new StringBuilder();
2224
for (int i = 0; i < 20; i++) {
2325
bulk.append("{\"index\":{}}\n");
2426
bulk.append("{\"test_field\":" + i + "}\n");
2527
}
26-
client().performRequest("PUT", "/test/doc/_bulk", singletonMap("refresh", "true"),
27-
new StringEntity(bulk.toString(), ContentType.APPLICATION_JSON));
28+
request.setJsonEntity(bulk.toString());
29+
client().performRequest(request);
30+
2831
assertEquals("[?1l>[?1000l[?2004lfetch size set to [90m4[0m", command("fetch size = 4"));
2932
assertEquals("[?1l>[?1000l[?2004lfetch separator set to \"[90m -- fetch sep -- [0m\"",
3033
command("fetch separator = \" -- fetch sep -- \""));

x-pack/qa/sql/src/main/java/org/elasticsearch/xpack/qa/sql/jdbc/DataLoader.java

+10-9
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.apache.http.HttpHost;
99
import org.apache.http.entity.ContentType;
1010
import org.apache.http.entity.StringEntity;
11+
import org.elasticsearch.client.Request;
1112
import org.elasticsearch.client.RestClient;
1213
import org.elasticsearch.common.CheckedBiConsumer;
1314
import org.elasticsearch.common.Strings;
@@ -55,6 +56,7 @@ private static void createString(String name, XContentBuilder builder) throws Ex
5556
.endObject();
5657
}
5758
protected static void loadDatasetIntoEs(RestClient client, String index) throws Exception {
59+
Request request = new Request("PUT", "/" + index);
5860
XContentBuilder createIndex = JsonXContent.contentBuilder().startObject();
5961
createIndex.startObject("settings");
6062
{
@@ -91,11 +93,9 @@ protected static void loadDatasetIntoEs(RestClient client, String index) throws
9193
createIndex.endObject();
9294
}
9395
createIndex.endObject().endObject();
94-
95-
client.performRequest("PUT", "/" + index, emptyMap(), new StringEntity(Strings.toString(createIndex),
96-
ContentType.APPLICATION_JSON));
96+
request.setJsonEntity(Strings.toString(createIndex));
97+
client.performRequest(request);
9798

98-
9999
Map<String, String> deps = new LinkedHashMap<>();
100100
csvToLines("departments", (titles, fields) -> deps.put(fields.get(0), fields.get(1)));
101101

@@ -119,6 +119,8 @@ protected static void loadDatasetIntoEs(RestClient client, String index) throws
119119
list.add(dep);
120120
});
121121

122+
request = new Request("POST", "/" + index + "/emp/_bulk");
123+
request.addParameter("refresh", "true");
122124
StringBuilder bulk = new StringBuilder();
123125
csvToLines("employees", (titles, fields) -> {
124126
bulk.append("{\"index\":{}}\n");
@@ -146,17 +148,16 @@ protected static void loadDatasetIntoEs(RestClient client, String index) throws
146148
bulk.setLength(bulk.length() - 1);
147149
bulk.append("]");
148150
}
149-
151+
150152
bulk.append("}\n");
151153
});
152-
153-
client.performRequest("POST", "/" + index + "/emp/_bulk", singletonMap("refresh", "true"),
154-
new StringEntity(bulk.toString(), ContentType.APPLICATION_JSON));
154+
request.setJsonEntity(bulk.toString());
155+
client.performRequest(request);
155156
}
156157

157158
protected static void makeAlias(RestClient client, String aliasName, String... indices) throws Exception {
158159
for (String index : indices) {
159-
client.performRequest("POST", "/" + index + "/_alias/" + aliasName);
160+
client.performRequest(new Request("POST", "/" + index + "/_alias/" + aliasName));
160161
}
161162
}
162163

x-pack/qa/sql/src/main/java/org/elasticsearch/xpack/qa/sql/jdbc/ErrorsTestCase.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@
99
import java.sql.SQLException;
1010
import org.apache.http.entity.ContentType;
1111
import org.apache.http.entity.StringEntity;
12-
13-
import static java.util.Collections.emptyMap;
12+
import org.elasticsearch.client.Request;
1413

1514
import static org.hamcrest.Matchers.startsWith;
1615

@@ -37,7 +36,9 @@ public void testSelectFromMissingIndex() throws SQLException {
3736
@Override
3837
public void testSelectFromIndexWithoutTypes() throws Exception {
3938
// Create an index without any types
40-
client().performRequest("PUT", "/test", emptyMap(), new StringEntity("{}", ContentType.APPLICATION_JSON));
39+
Request request = new Request("PUT", "/test");
40+
request.setJsonEntity("{}");
41+
client().performRequest(request);
4142

4243
try (Connection c = esJdbc()) {
4344
SQLException e = expectThrows(SQLException.class, () -> c.prepareStatement("SELECT * FROM test").executeQuery());

x-pack/qa/sql/src/main/java/org/elasticsearch/xpack/qa/sql/jdbc/FetchSizeTestCase.java

+5-3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import org.apache.http.entity.ContentType;
99
import org.apache.http.entity.StringEntity;
10+
import org.elasticsearch.client.Request;
1011
import org.junit.Before;
1112

1213
import java.io.IOException;
@@ -15,7 +16,6 @@
1516
import java.sql.SQLException;
1617
import java.sql.Statement;
1718

18-
import static java.util.Collections.singletonMap;
1919
import static org.elasticsearch.xpack.qa.sql.rest.RestSqlTestCase.assertNoSearchContexts;
2020

2121
/**
@@ -25,13 +25,15 @@
2525
public class FetchSizeTestCase extends JdbcIntegrationTestCase {
2626
@Before
2727
public void createTestIndex() throws IOException {
28+
Request request = new Request("PUT", "/test/doc/_bulk");
29+
request.addParameter("refresh", "true");
2830
StringBuilder bulk = new StringBuilder();
2931
for (int i = 0; i < 20; i++) {
3032
bulk.append("{\"index\":{}}\n");
3133
bulk.append("{\"test_field\":" + i + "}\n");
3234
}
33-
client().performRequest("PUT", "/test/doc/_bulk", singletonMap("refresh", "true"),
34-
new StringEntity(bulk.toString(), ContentType.APPLICATION_JSON));
35+
request.setJsonEntity(bulk.toString());
36+
client().performRequest(request);
3537
}
3638

3739
/**

x-pack/qa/sql/src/main/java/org/elasticsearch/xpack/qa/sql/jdbc/JdbcIntegrationTestCase.java

+6-3
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import org.apache.http.entity.ContentType;
1010
import org.apache.http.entity.StringEntity;
1111
import org.apache.http.util.EntityUtils;
12+
import org.elasticsearch.client.Request;
1213
import org.elasticsearch.common.CheckedConsumer;
1314
import org.elasticsearch.common.Strings;
1415
import org.elasticsearch.common.xcontent.XContentBuilder;
@@ -85,16 +86,18 @@ protected Connection useDataSource() throws SQLException {
8586
}
8687

8788
public static void index(String index, CheckedConsumer<XContentBuilder, IOException> body) throws IOException {
89+
Request request = new Request("PUT", "/" + index + "/doc/1");
90+
request.addParameter("refresh", "true");
8891
XContentBuilder builder = JsonXContent.contentBuilder().startObject();
8992
body.accept(builder);
9093
builder.endObject();
91-
HttpEntity doc = new StringEntity(Strings.toString(builder), ContentType.APPLICATION_JSON);
92-
client().performRequest("PUT", "/" + index + "/doc/1", singletonMap("refresh", "true"), doc);
94+
request.setJsonEntity(Strings.toString(builder));
95+
client().performRequest(request);
9396
}
9497

9598
protected String clusterName() {
9699
try {
97-
String response = EntityUtils.toString(client().performRequest("GET", "/").getEntity());
100+
String response = EntityUtils.toString(client().performRequest(new Request("GET", "/")).getEntity());
98101
return XContentHelper.convertToMap(JsonXContent.jsonXContent, response, false).get("cluster_name").toString();
99102
} catch (IOException e) {
100103
throw new RuntimeException(e);

0 commit comments

Comments
 (0)