|
@@ -6,6 +6,7 @@
|
|
|
*/
|
|
|
package org.elasticsearch.xpack.ml.integration;
|
|
|
|
|
|
+import org.elasticsearch.ElasticsearchException;
|
|
|
import org.elasticsearch.action.admin.indices.settings.get.GetSettingsRequest;
|
|
|
import org.elasticsearch.action.admin.indices.settings.get.GetSettingsResponse;
|
|
|
import org.elasticsearch.action.bulk.BulkRequestBuilder;
|
|
@@ -15,12 +16,15 @@ import org.elasticsearch.action.index.IndexRequest;
|
|
|
import org.elasticsearch.action.search.SearchResponse;
|
|
|
import org.elasticsearch.action.support.WriteRequest;
|
|
|
import org.elasticsearch.common.unit.ByteSizeValue;
|
|
|
+import org.elasticsearch.core.TimeValue;
|
|
|
import org.elasticsearch.index.IndexSettings;
|
|
|
import org.elasticsearch.index.query.QueryBuilders;
|
|
|
+import org.elasticsearch.rest.RestStatus;
|
|
|
import org.elasticsearch.search.SearchHit;
|
|
|
import org.elasticsearch.xcontent.XContentType;
|
|
|
import org.elasticsearch.xpack.core.ml.action.GetDataFrameAnalyticsStatsAction;
|
|
|
import org.elasticsearch.xpack.core.ml.action.NodeAcknowledgedResponse;
|
|
|
+import org.elasticsearch.xpack.core.ml.action.StartDataFrameAnalyticsAction;
|
|
|
import org.elasticsearch.xpack.core.ml.dataframe.DataFrameAnalyticsConfig;
|
|
|
import org.elasticsearch.xpack.core.ml.dataframe.DataFrameAnalyticsDest;
|
|
|
import org.elasticsearch.xpack.core.ml.dataframe.DataFrameAnalyticsSource;
|
|
@@ -1043,6 +1047,45 @@ public class RunDataFrameAnalyticsIT extends MlNativeDataFrameAnalyticsIntegTest
|
|
|
);
|
|
|
}
|
|
|
|
|
|
+ public void testStart_GivenTimeout_Returns408() throws Exception {
|
|
|
+ String sourceIndex = "test-timeout-returns-408-data";
|
|
|
+
|
|
|
+ client().admin().indices().prepareCreate(sourceIndex).setMapping("numeric_1", "type=integer", "numeric_2", "type=integer").get();
|
|
|
+
|
|
|
+ BulkRequestBuilder bulkRequestBuilder = client().prepareBulk();
|
|
|
+ bulkRequestBuilder.setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE);
|
|
|
+
|
|
|
+ for (int i = 0; i < 5; i++) {
|
|
|
+ IndexRequest indexRequest = new IndexRequest(sourceIndex);
|
|
|
+ indexRequest.id(String.valueOf(i));
|
|
|
+ indexRequest.source("numeric_1", randomInt(), "numeric_2", randomInt());
|
|
|
+ bulkRequestBuilder.add(indexRequest);
|
|
|
+ }
|
|
|
+ BulkResponse bulkResponse = bulkRequestBuilder.get();
|
|
|
+ if (bulkResponse.hasFailures()) {
|
|
|
+ fail("Failed to index data: " + bulkResponse.buildFailureMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ String id = "test-timeout-returns-408";
|
|
|
+ DataFrameAnalyticsConfig config = buildAnalytics(
|
|
|
+ id,
|
|
|
+ sourceIndex,
|
|
|
+ sourceIndex + "-results",
|
|
|
+ null,
|
|
|
+ new OutlierDetection.Builder().build()
|
|
|
+ );
|
|
|
+ putAnalytics(config);
|
|
|
+
|
|
|
+ StartDataFrameAnalyticsAction.Request request = new StartDataFrameAnalyticsAction.Request(id);
|
|
|
+ request.setTimeout(TimeValue.timeValueNanos(1L));
|
|
|
+ ElasticsearchException e = expectThrows(
|
|
|
+ ElasticsearchException.class,
|
|
|
+ () -> client().execute(StartDataFrameAnalyticsAction.INSTANCE, request).actionGet()
|
|
|
+ );
|
|
|
+
|
|
|
+ assertThat(e.status(), equalTo(RestStatus.REQUEST_TIMEOUT));
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
boolean supportsInference() {
|
|
|
return false;
|