Switch ml basic tests to new style Requests (#32483)

In #29623 we added `Request` object flavored requests to the low level
REST client and in #30315 we deprecated the old `performRequest`s. This
changes all calls in the `x-pack/qa/ml-basic-multi-node` project to use
the new versions.
This commit is contained in:
Nik Everett 2018-08-22 14:23:43 -04:00 committed by GitHub
parent c3438bc8d8
commit 0cc99d270c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 143 additions and 149 deletions

View File

@ -6,12 +6,12 @@
package org.elasticsearch.xpack.ml.integration;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.nio.entity.NStringEntity;
import org.elasticsearch.client.Request;
import org.elasticsearch.client.Response;
import org.elasticsearch.client.ResponseException;
import org.elasticsearch.common.Strings;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentHelper;
import org.elasticsearch.test.rest.ESRestTestCase;
import org.elasticsearch.xpack.ml.MachineLearning;
@ -22,18 +22,15 @@ import java.util.List;
import java.util.Map;
import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;
import static org.elasticsearch.common.xcontent.XContentType.JSON;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.is;
public class MlBasicMultiNodeIT extends ESRestTestCase {
@SuppressWarnings("unchecked")
public void testMachineLearningInstalled() throws Exception {
Response response = client().performRequest("get", "/_xpack");
assertEquals(200, response.getStatusLine().getStatusCode());
Map<String, Object> features = (Map<String, Object>) responseEntityToMap(response).get("features");
Map<String, Object> ml = (Map<String, Object>) features.get("ml");
Response response = client().performRequest(new Request("GET", "/_xpack"));
Map<?, ?> features = (Map<?, ?>) entityAsMap(response).get("features");
Map<?, ?> ml = (Map<?, ?>) features.get("ml");
assertNotNull(ml);
assertTrue((Boolean) ml.get("available"));
assertTrue((Boolean) ml.get("enabled"));
@ -55,18 +52,18 @@ public class MlBasicMultiNodeIT extends ESRestTestCase {
String jobId = "mini-farequote-job";
createFarequoteJob(jobId);
Response response = client().performRequest("post", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_open");
assertEquals(200, response.getStatusLine().getStatusCode());
assertEquals(Collections.singletonMap("opened", true), responseEntityToMap(response));
Response openResponse = client().performRequest(
new Request("POST", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_open"));
assertEquals(Collections.singletonMap("opened", true), entityAsMap(openResponse));
String postData =
Request addData = new Request("POST", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_data");
addData.setEntity(new NStringEntity(
"{\"airline\":\"AAL\",\"responsetime\":\"132.2046\",\"sourcetype\":\"farequote\",\"time\":\"1403481600\"}\n" +
"{\"airline\":\"JZA\",\"responsetime\":\"990.4628\",\"sourcetype\":\"farequote\",\"time\":\"1403481700\"}";
response = client().performRequest("post", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_data",
Collections.emptyMap(),
new StringEntity(postData, randomFrom(ContentType.APPLICATION_JSON, ContentType.create("application/x-ndjson"))));
assertEquals(202, response.getStatusLine().getStatusCode());
Map<String, Object> responseBody = responseEntityToMap(response);
"{\"airline\":\"JZA\",\"responsetime\":\"990.4628\",\"sourcetype\":\"farequote\",\"time\":\"1403481700\"}",
randomFrom(ContentType.APPLICATION_JSON, ContentType.create("application/x-ndjson"))));
Response addDataResponse = client().performRequest(addData);
assertEquals(202, addDataResponse.getStatusLine().getStatusCode());
Map<String, Object> responseBody = entityAsMap(addDataResponse);
assertEquals(2, responseBody.get("processed_record_count"));
assertEquals(4, responseBody.get("processed_field_count"));
assertEquals(177, responseBody.get("input_bytes"));
@ -78,20 +75,19 @@ public class MlBasicMultiNodeIT extends ESRestTestCase {
assertEquals(1403481600000L, responseBody.get("earliest_record_timestamp"));
assertEquals(1403481700000L, responseBody.get("latest_record_timestamp"));
response = client().performRequest("post", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_flush");
assertEquals(200, response.getStatusLine().getStatusCode());
assertFlushResponse(response, true, 1403481600000L);
Response flushResponse = client().performRequest(
new Request("POST", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_flush"));
assertFlushResponse(flushResponse, true, 1403481600000L);
response = client().performRequest("post", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_close",
Collections.singletonMap("timeout", "20s"));
assertEquals(200, response.getStatusLine().getStatusCode());
assertEquals(Collections.singletonMap("closed", true), responseEntityToMap(response));
Request closeRequest = new Request("POST", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_close");
closeRequest.addParameter("timeout", "20s");
Response closeResponse = client().performRequest(closeRequest);
assertEquals(Collections.singletonMap("closed", true), entityAsMap(closeResponse));
response = client().performRequest("get", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_stats");
assertEquals(200, response.getStatusLine().getStatusCode());
@SuppressWarnings("unchecked")
Map<String, Object> dataCountsDoc = (Map<String, Object>)
((Map)((List) responseEntityToMap(response).get("jobs")).get(0)).get("data_counts");
Response statsResponse = client().performRequest(
new Request("GET", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_stats"));
Map<?, ?> dataCountsDoc = (Map<?, ?>)
((Map<?, ?>)((List<?>) entityAsMap(statsResponse).get("jobs")).get(0)).get("data_counts");
assertEquals(2, dataCountsDoc.get("processed_record_count"));
assertEquals(4, dataCountsDoc.get("processed_field_count"));
assertEquals(177, dataCountsDoc.get("input_bytes"));
@ -103,12 +99,12 @@ public class MlBasicMultiNodeIT extends ESRestTestCase {
assertEquals(1403481600000L, dataCountsDoc.get("earliest_record_timestamp"));
assertEquals(1403481700000L, dataCountsDoc.get("latest_record_timestamp"));
response = client().performRequest("delete", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId);
assertEquals(200, response.getStatusLine().getStatusCode());
client().performRequest(new Request("DELETE", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId));
}
public void testMiniFarequoteWithDatafeeder() throws Exception {
String mappings = "{"
Request createAirlineDataRequest = new Request("PUT", "/airline-data");
createAirlineDataRequest.setJsonEntity("{"
+ " \"mappings\": {"
+ " \"response\": {"
+ " \"properties\": {"
@ -118,40 +114,38 @@ public class MlBasicMultiNodeIT extends ESRestTestCase {
+ " }"
+ " }"
+ " }"
+ "}";
client().performRequest("put", "airline-data", Collections.emptyMap(), new StringEntity(mappings, ContentType.APPLICATION_JSON));
client().performRequest("put", "airline-data/response/1", Collections.emptyMap(),
new StringEntity("{\"time\":\"2016-06-01T00:00:00Z\",\"airline\":\"AAA\",\"responsetime\":135.22}",
ContentType.APPLICATION_JSON));
client().performRequest("put", "airline-data/response/2", Collections.emptyMap(),
new StringEntity("{\"time\":\"2016-06-01T01:59:00Z\",\"airline\":\"AAA\",\"responsetime\":541.76}",
ContentType.APPLICATION_JSON));
+ "}");
client().performRequest(createAirlineDataRequest);
Request airlineData1 = new Request("PUT", "/airline-data/response/1");
airlineData1.setJsonEntity("{\"time\":\"2016-06-01T00:00:00Z\",\"airline\":\"AAA\",\"responsetime\":135.22}");
client().performRequest(airlineData1);
Request airlineData2 = new Request("PUT", "/airline-data/response/2");
airlineData2.setJsonEntity("{\"time\":\"2016-06-01T01:59:00Z\",\"airline\":\"AAA\",\"responsetime\":541.76}");
client().performRequest(airlineData2);
// Ensure all data is searchable
client().performRequest("post", "_refresh");
client().performRequest(new Request("POST", "/_refresh"));
String jobId = "mini-farequote-with-data-feeder-job";
createFarequoteJob(jobId);
String datafeedId = "bar";
createDatafeed(datafeedId, jobId);
Response response = client().performRequest("post", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_open");
assertEquals(200, response.getStatusLine().getStatusCode());
assertEquals(Collections.singletonMap("opened", true), responseEntityToMap(response));
Response openResponse = client().performRequest(
new Request("POST", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_open"));
assertEquals(Collections.singletonMap("opened", true), entityAsMap(openResponse));
response = client().performRequest("post", MachineLearning.BASE_PATH + "datafeeds/" + datafeedId + "/_start",
Collections.singletonMap("start", "0"));
assertEquals(200, response.getStatusLine().getStatusCode());
assertEquals(Collections.singletonMap("started", true), responseEntityToMap(response));
Request startRequest = new Request("POST", MachineLearning.BASE_PATH + "datafeeds/" + datafeedId + "/_start");
startRequest.addParameter("start", "0");
Response startResponse = client().performRequest(startRequest);
assertEquals(Collections.singletonMap("started", true), entityAsMap(startResponse));
assertBusy(() -> {
try {
Response statsResponse =
client().performRequest("get", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_stats");
assertEquals(200, statsResponse.getStatusLine().getStatusCode());
@SuppressWarnings("unchecked")
Map<String, Object> dataCountsDoc = (Map<String, Object>)
((Map)((List) responseEntityToMap(statsResponse).get("jobs")).get(0)).get("data_counts");
Response statsResponse = client().performRequest(
new Request("GET", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_stats"));
Map<?, ?> dataCountsDoc = (Map<?, ?>)
((Map<?, ?>)((List<?>) entityAsMap(statsResponse).get("jobs")).get(0)).get("data_counts");
assertEquals(2, dataCountsDoc.get("input_record_count"));
assertEquals(2, dataCountsDoc.get("processed_record_count"));
} catch (IOException e) {
@ -159,41 +153,38 @@ public class MlBasicMultiNodeIT extends ESRestTestCase {
}
});
response = client().performRequest("post", MachineLearning.BASE_PATH + "datafeeds/" + datafeedId + "/_stop");
assertEquals(200, response.getStatusLine().getStatusCode());
assertEquals(Collections.singletonMap("stopped", true), responseEntityToMap(response));
Response stopResponse = client().performRequest(
new Request("POST", MachineLearning.BASE_PATH + "datafeeds/" + datafeedId + "/_stop"));
assertEquals(Collections.singletonMap("stopped", true), entityAsMap(stopResponse));
response = client().performRequest("post", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_close",
Collections.singletonMap("timeout", "20s"));
assertEquals(200, response.getStatusLine().getStatusCode());
assertEquals(Collections.singletonMap("closed", true), responseEntityToMap(response));
Request closeRequest = new Request("POST", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_close");
closeRequest.addParameter("timeout", "20s");
assertEquals(Collections.singletonMap("closed", true),
entityAsMap(client().performRequest(closeRequest)));
response = client().performRequest("delete", MachineLearning.BASE_PATH + "datafeeds/" + datafeedId);
assertEquals(200, response.getStatusLine().getStatusCode());
response = client().performRequest("delete", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId);
assertEquals(200, response.getStatusLine().getStatusCode());
client().performRequest(new Request("DELETE", MachineLearning.BASE_PATH + "datafeeds/" + datafeedId));
client().performRequest(new Request("DELETE", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId));
}
public void testMiniFarequoteReopen() throws Exception {
String jobId = "mini-farequote-reopen";
createFarequoteJob(jobId);
Response response = client().performRequest("post", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_open");
assertEquals(200, response.getStatusLine().getStatusCode());
assertEquals(Collections.singletonMap("opened", true), responseEntityToMap(response));
Response openResponse = client().performRequest(
new Request("POST", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_open"));
assertEquals(Collections.singletonMap("opened", true), entityAsMap(openResponse));
String postData =
Request addDataRequest = new Request("POST", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_data");
addDataRequest.setEntity(new NStringEntity(
"{\"airline\":\"AAL\",\"responsetime\":\"132.2046\",\"sourcetype\":\"farequote\",\"time\":\"1403481600\"}\n" +
"{\"airline\":\"JZA\",\"responsetime\":\"990.4628\",\"sourcetype\":\"farequote\",\"time\":\"1403481700\"}\n" +
"{\"airline\":\"JBU\",\"responsetime\":\"877.5927\",\"sourcetype\":\"farequote\",\"time\":\"1403481800\"}\n" +
"{\"airline\":\"KLM\",\"responsetime\":\"1355.4812\",\"sourcetype\":\"farequote\",\"time\":\"1403481900\"}\n" +
"{\"airline\":\"NKS\",\"responsetime\":\"9991.3981\",\"sourcetype\":\"farequote\",\"time\":\"1403482000\"}";
response = client().performRequest("post", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_data",
Collections.emptyMap(),
new StringEntity(postData, randomFrom(ContentType.APPLICATION_JSON, ContentType.create("application/x-ndjson"))));
assertEquals(202, response.getStatusLine().getStatusCode());
Map<String, Object> responseBody = responseEntityToMap(response);
"{\"airline\":\"NKS\",\"responsetime\":\"9991.3981\",\"sourcetype\":\"farequote\",\"time\":\"1403482000\"}",
randomFrom(ContentType.APPLICATION_JSON, ContentType.create("application/x-ndjson"))));
Response addDataResponse = client().performRequest(addDataRequest);
assertEquals(202, addDataResponse.getStatusLine().getStatusCode());
Map<String, Object> responseBody = entityAsMap(addDataResponse);
assertEquals(5, responseBody.get("processed_record_count"));
assertEquals(10, responseBody.get("processed_field_count"));
assertEquals(446, responseBody.get("input_bytes"));
@ -205,60 +196,56 @@ public class MlBasicMultiNodeIT extends ESRestTestCase {
assertEquals(1403481600000L, responseBody.get("earliest_record_timestamp"));
assertEquals(1403482000000L, responseBody.get("latest_record_timestamp"));
response = client().performRequest("post", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_flush");
assertEquals(200, response.getStatusLine().getStatusCode());
assertFlushResponse(response, true, 1403481600000L);
Response flushResponse = client().performRequest(
new Request("POST", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_flush"));
assertFlushResponse(flushResponse, true, 1403481600000L);
response = client().performRequest("post", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_close",
Collections.singletonMap("timeout", "20s"));
assertEquals(200, response.getStatusLine().getStatusCode());
assertEquals(Collections.singletonMap("closed", true), responseEntityToMap(response));
Request closeRequest = new Request("POST", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_close");
closeRequest.addParameter("timeout", "20s");
assertEquals(Collections.singletonMap("closed", true),
entityAsMap(client().performRequest(closeRequest)));
response = client().performRequest("get", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_stats");
assertEquals(200, response.getStatusLine().getStatusCode());
response = client().performRequest("post", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_open",
Collections.singletonMap("timeout", "20s"));
assertEquals(200, response.getStatusLine().getStatusCode());
assertEquals(Collections.singletonMap("opened", true), responseEntityToMap(response));
Request statsRequest = new Request("GET", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_stats");
client().performRequest(statsRequest);
Request openRequest = new Request("POST", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_open");
openRequest.addParameter("timeout", "20s");
Response openResponse2 = client().performRequest(openRequest);
assertEquals(Collections.singletonMap("opened", true), entityAsMap(openResponse2));
// feed some more data points
postData =
Request addDataRequest2 = new Request("POST", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_data");
addDataRequest2.setEntity(new NStringEntity(
"{\"airline\":\"AAL\",\"responsetime\":\"136.2361\",\"sourcetype\":\"farequote\",\"time\":\"1407081600\"}\n" +
"{\"airline\":\"VRD\",\"responsetime\":\"282.9847\",\"sourcetype\":\"farequote\",\"time\":\"1407081700\"}\n" +
"{\"airline\":\"JAL\",\"responsetime\":\"493.0338\",\"sourcetype\":\"farequote\",\"time\":\"1407081800\"}\n" +
"{\"airline\":\"UAL\",\"responsetime\":\"8.4275\",\"sourcetype\":\"farequote\",\"time\":\"1407081900\"}\n" +
"{\"airline\":\"FFT\",\"responsetime\":\"221.8693\",\"sourcetype\":\"farequote\",\"time\":\"1407082000\"}";
response = client().performRequest("post", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_data",
Collections.emptyMap(),
new StringEntity(postData, randomFrom(ContentType.APPLICATION_JSON, ContentType.create("application/x-ndjson"))));
assertEquals(202, response.getStatusLine().getStatusCode());
responseBody = responseEntityToMap(response);
assertEquals(5, responseBody.get("processed_record_count"));
assertEquals(10, responseBody.get("processed_field_count"));
assertEquals(442, responseBody.get("input_bytes"));
assertEquals(15, responseBody.get("input_field_count"));
assertEquals(0, responseBody.get("invalid_date_count"));
assertEquals(0, responseBody.get("missing_field_count"));
assertEquals(0, responseBody.get("out_of_order_timestamp_count"));
assertEquals(1000, responseBody.get("bucket_count"));
"{\"airline\":\"FFT\",\"responsetime\":\"221.8693\",\"sourcetype\":\"farequote\",\"time\":\"1407082000\"}",
randomFrom(ContentType.APPLICATION_JSON, ContentType.create("application/x-ndjson"))));
Response addDataResponse2 = client().performRequest(addDataRequest2);
assertEquals(202, addDataResponse2.getStatusLine().getStatusCode());
Map<String, Object> responseBody2 = entityAsMap(addDataResponse2);
assertEquals(5, responseBody2.get("processed_record_count"));
assertEquals(10, responseBody2.get("processed_field_count"));
assertEquals(442, responseBody2.get("input_bytes"));
assertEquals(15, responseBody2.get("input_field_count"));
assertEquals(0, responseBody2.get("invalid_date_count"));
assertEquals(0, responseBody2.get("missing_field_count"));
assertEquals(0, responseBody2.get("out_of_order_timestamp_count"));
assertEquals(1000, responseBody2.get("bucket_count"));
// unintuitive: should return the earliest record timestamp of this feed???
assertEquals(null, responseBody.get("earliest_record_timestamp"));
assertEquals(1407082000000L, responseBody.get("latest_record_timestamp"));
response = client().performRequest("post", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_close",
Collections.singletonMap("timeout", "20s"));
assertEquals(200, response.getStatusLine().getStatusCode());
assertEquals(Collections.singletonMap("closed", true), responseEntityToMap(response));
assertEquals(null, responseBody2.get("earliest_record_timestamp"));
assertEquals(1407082000000L, responseBody2.get("latest_record_timestamp"));
assertEquals(Collections.singletonMap("closed", true),
entityAsMap(client().performRequest(closeRequest)));
// counts should be summed up
response = client().performRequest("get", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_stats");
assertEquals(200, response.getStatusLine().getStatusCode());
@SuppressWarnings("unchecked")
Map<String, Object> dataCountsDoc = (Map<String, Object>)
((Map)((List) responseEntityToMap(response).get("jobs")).get(0)).get("data_counts");
Response statsResponse = client().performRequest(statsRequest);
Map<?, ?> dataCountsDoc = (Map<?, ?>)
((Map<?, ?>)((List<?>) entityAsMap(statsResponse).get("jobs")).get(0)).get("data_counts");
assertEquals(10, dataCountsDoc.get("processed_record_count"));
assertEquals(20, dataCountsDoc.get("processed_field_count"));
assertEquals(888, dataCountsDoc.get("input_bytes"));
@ -270,8 +257,7 @@ public class MlBasicMultiNodeIT extends ESRestTestCase {
assertEquals(1403481600000L, dataCountsDoc.get("earliest_record_timestamp"));
assertEquals(1407082000000L, dataCountsDoc.get("latest_record_timestamp"));
response = client().performRequest("delete", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId);
assertEquals(200, response.getStatusLine().getStatusCode());
client().performRequest(new Request("DELETE", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId));
}
private Response createDatafeed(String datafeedId, String jobId) throws Exception {
@ -282,45 +268,53 @@ public class MlBasicMultiNodeIT extends ESRestTestCase {
xContentBuilder.array("types", "response");
xContentBuilder.field("_source", true);
xContentBuilder.endObject();
return client().performRequest("put", MachineLearning.BASE_PATH + "datafeeds/" + datafeedId,
Collections.emptyMap(), new StringEntity(Strings.toString(xContentBuilder), ContentType.APPLICATION_JSON));
Request request = new Request("PUT", MachineLearning.BASE_PATH + "datafeeds/" + datafeedId);
request.setJsonEntity(Strings.toString(xContentBuilder));
return client().performRequest(request);
}
private Response createFarequoteJob(String jobId) throws Exception {
XContentBuilder xContentBuilder = jsonBuilder();
xContentBuilder.startObject();
xContentBuilder.field("job_id", jobId);
xContentBuilder.field("description", "Analysis of response time by airline");
{
xContentBuilder.field("job_id", jobId);
xContentBuilder.field("description", "Analysis of response time by airline");
xContentBuilder.startObject("analysis_config");
xContentBuilder.field("bucket_span", "3600s");
xContentBuilder.startArray("detectors");
xContentBuilder.startObject();
xContentBuilder.field("function", "metric");
xContentBuilder.field("field_name", "responsetime");
xContentBuilder.field("by_field_name", "airline");
xContentBuilder.endObject();
xContentBuilder.endArray();
xContentBuilder.startObject("analysis_config");
{
xContentBuilder.field("bucket_span", "3600s");
xContentBuilder.startArray("detectors");
{
xContentBuilder.startObject();
{
xContentBuilder.field("function", "metric");
xContentBuilder.field("field_name", "responsetime");
xContentBuilder.field("by_field_name", "airline");
}
xContentBuilder.endObject();
}
xContentBuilder.endArray();
}
xContentBuilder.endObject();
xContentBuilder.startObject("data_description");
{
xContentBuilder.field("format", "xcontent");
xContentBuilder.field("time_field", "time");
xContentBuilder.field("time_format", "epoch");
}
xContentBuilder.endObject();
}
xContentBuilder.endObject();
xContentBuilder.startObject("data_description");
xContentBuilder.field("format", "xcontent");
xContentBuilder.field("time_field", "time");
xContentBuilder.field("time_format", "epoch");
xContentBuilder.endObject();
xContentBuilder.endObject();
return client().performRequest("put", MachineLearning.BASE_PATH + "anomaly_detectors/" + URLEncoder.encode(jobId, "UTF-8"),
Collections.emptyMap(), new StringEntity(Strings.toString(xContentBuilder), ContentType.APPLICATION_JSON));
}
private static Map<String, Object> responseEntityToMap(Response response) throws IOException {
return XContentHelper.convertToMap(JSON.xContent(), response.getEntity().getContent(), false);
Request request = new Request("PUT", MachineLearning.BASE_PATH + "anomaly_detectors/" + URLEncoder.encode(jobId, "UTF-8"));
request.setJsonEntity(Strings.toString(xContentBuilder));
return client().performRequest(request);
}
private static void assertFlushResponse(Response response, boolean expectedFlushed, long expectedLastFinalizedBucketEnd)
throws IOException {
Map<String, Object> asMap = responseEntityToMap(response);
Map<String, Object> asMap = entityAsMap(response);
assertThat(asMap.size(), equalTo(2));
assertThat(asMap.get("flushed"), is(true));
assertThat(asMap.get("last_finalized_bucket_end"), equalTo(expectedLastFinalizedBucketEnd));