|
|
@@ -8,11 +8,15 @@
|
|
|
package org.elasticsearch.xpack.sql.jdbc;
|
|
|
|
|
|
import org.elasticsearch.common.xcontent.XContentHelper;
|
|
|
-import org.elasticsearch.xcontent.XContentType;
|
|
|
+import org.elasticsearch.test.http.MockRequest;
|
|
|
import org.elasticsearch.test.http.MockResponse;
|
|
|
+import org.elasticsearch.xcontent.XContentType;
|
|
|
+import org.elasticsearch.xcontent.json.JsonXContent;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
import java.net.URISyntaxException;
|
|
|
+import java.sql.Connection;
|
|
|
+import java.sql.PreparedStatement;
|
|
|
import java.sql.SQLException;
|
|
|
import java.util.Map;
|
|
|
import java.util.Properties;
|
|
|
@@ -43,4 +47,36 @@ public class JdbcConfigurationDataSourceTests extends WebServerTestCase {
|
|
|
assertEquals(address, connection.getURL());
|
|
|
JdbcConfigurationTests.assertSslConfig(allProps, connection.cfg.sslConfig());
|
|
|
}
|
|
|
+
|
|
|
+ public void testTimeoutsInUrl() throws IOException, SQLException {
|
|
|
+ int queryTimeout = 10;
|
|
|
+ int pageTimeout = 20;
|
|
|
+
|
|
|
+ webServer().enqueue(
|
|
|
+ new MockResponse().setResponseCode(200)
|
|
|
+ .addHeader("Content-Type", "application/json")
|
|
|
+ .setBody(XContentHelper.toXContent(createCurrentVersionMainResponse(), XContentType.JSON, false).utf8ToString())
|
|
|
+ );
|
|
|
+
|
|
|
+ EsDataSource dataSource = new EsDataSource();
|
|
|
+ String address = "jdbc:es://" + webServerAddress()
|
|
|
+ + "/?binary.format=false&query.timeout=" + queryTimeout
|
|
|
+ + "&page.timeout=" + pageTimeout;
|
|
|
+ dataSource.setUrl(address);
|
|
|
+ Connection connection = dataSource.getConnection();
|
|
|
+ webServer().takeRequest();
|
|
|
+
|
|
|
+ webServer().enqueue(
|
|
|
+ new MockResponse().setResponseCode(200)
|
|
|
+ .addHeader("Content-Type", "application/json")
|
|
|
+ .setBody("{\"rows\":[],\"columns\":[]}")
|
|
|
+ );
|
|
|
+ PreparedStatement statement = connection.prepareStatement("SELECT 1");
|
|
|
+ statement.execute();
|
|
|
+ MockRequest request = webServer().takeRequest();
|
|
|
+
|
|
|
+ Map<String, Object> sqlQueryRequest = XContentHelper.convertToMap(JsonXContent.jsonXContent, request.getBody(), false);
|
|
|
+ assertEquals(queryTimeout + "ms", sqlQueryRequest.get("request_timeout"));
|
|
|
+ assertEquals(pageTimeout + "ms", sqlQueryRequest.get("page_timeout"));
|
|
|
+ }
|
|
|
}
|