Skip to content

Commit

Permalink
SQL: Add test for handling of partial results (#32474)
Browse files Browse the repository at this point in the history
Verifies that partial results are rejected by SQL requests.

Closes #32284
  • Loading branch information
imotov authored Jul 31, 2018
1 parent 67d53e5 commit 5fd7202
Showing 1 changed file with 51 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
package org.elasticsearch.xpack.qa.sql.nosecurity;

import org.elasticsearch.client.Request;
import org.elasticsearch.xpack.qa.sql.jdbc.JdbcIntegrationTestCase;
import org.junit.Before;

import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;

import static org.hamcrest.Matchers.containsString;

public class JdbcShardFailureIT extends JdbcIntegrationTestCase {
@Before
public void createTestIndex() throws IOException {
Request createTest1 = new Request("PUT", "/test1");
String body1 = "{\"aliases\":{\"test\":{}}, \"mappings\": {\"doc\": {\"properties\": {\"test_field\":{\"type\":\"integer\"}}}}}";
createTest1.setJsonEntity(body1);
client().performRequest(createTest1);

Request createTest2 = new Request("PUT", "/test2");
String body2 = "{\"aliases\":{\"test\":{}}, \"mappings\": {\"doc\": {\"properties\": {\"test_field\":{\"type\":\"integer\"}}}}," +
"\"settings\": {\"index.routing.allocation.include.node\": \"nowhere\"}}";
createTest2.setJsonEntity(body2);
createTest2.addParameter("timeout", "100ms");
client().performRequest(createTest2);

Request request = new Request("PUT", "/test1/doc/_bulk");
request.addParameter("refresh", "true");
StringBuilder bulk = new StringBuilder();
for (int i = 0; i < 20; i++) {
bulk.append("{\"index\":{}}\n");
bulk.append("{\"test_field\":" + i + "}\n");
}
request.setJsonEntity(bulk.toString());
client().performRequest(request);
}

public void testPartialResponseHandling() throws SQLException {
try (Connection c = esJdbc(); Statement s = c.createStatement()) {
SQLException exception = expectThrows(SQLException.class, () -> s.executeQuery("SELECT * FROM test ORDER BY test_field ASC"));
assertThat(exception.getMessage(), containsString("Search rejected due to missing shards"));
}
}
}

0 comments on commit 5fd7202

Please sign in to comment.