|
25 | 25 | import org.elasticsearch.action.ingest.GetPipelineRequest;
|
26 | 26 | import org.elasticsearch.action.ingest.GetPipelineResponse;
|
27 | 27 | import org.elasticsearch.action.ingest.PutPipelineRequest;
|
| 28 | +import org.elasticsearch.action.ingest.SimulateDocumentBaseResult; |
| 29 | +import org.elasticsearch.action.ingest.SimulateDocumentResult; |
| 30 | +import org.elasticsearch.action.ingest.SimulateDocumentVerboseResult; |
| 31 | +import org.elasticsearch.action.ingest.SimulatePipelineRequest; |
| 32 | +import org.elasticsearch.action.ingest.SimulatePipelineResponse; |
| 33 | +import org.elasticsearch.action.ingest.SimulateProcessorResult; |
28 | 34 | import org.elasticsearch.action.ingest.WritePipelineResponse;
|
29 | 35 | import org.elasticsearch.client.ESRestHighLevelClientTestCase;
|
30 | 36 | import org.elasticsearch.client.RequestOptions;
|
@@ -277,4 +283,109 @@ public void onFailure(Exception e) {
|
277 | 283 | }
|
278 | 284 | }
|
279 | 285 |
|
| 286 | + public void testSimulatePipeline() throws IOException { |
| 287 | + RestHighLevelClient client = highLevelClient(); |
| 288 | + |
| 289 | + { |
| 290 | + // tag::simulate-pipeline-request |
| 291 | + String source = |
| 292 | + "{\"" + |
| 293 | + "pipeline\":{" + |
| 294 | + "\"description\":\"_description\"," + |
| 295 | + "\"processors\":[{\"set\":{\"field\":\"field2\",\"value\":\"_value\"}}]" + |
| 296 | + "}," + |
| 297 | + "\"docs\":[" + |
| 298 | + "{\"_index\":\"index\",\"_type\":\"_doc\",\"_id\":\"id\",\"_source\":{\"foo\":\"bar\"}}," + |
| 299 | + "{\"_index\":\"index\",\"_type\":\"_doc\",\"_id\":\"id\",\"_source\":{\"foo\":\"rab\"}}" + |
| 300 | + "]" + |
| 301 | + "}"; |
| 302 | + SimulatePipelineRequest request = new SimulatePipelineRequest( |
| 303 | + new BytesArray(source.getBytes(StandardCharsets.UTF_8)), // <1> |
| 304 | + XContentType.JSON // <2> |
| 305 | + ); |
| 306 | + // end::simulate-pipeline-request |
| 307 | + |
| 308 | + // tag::simulate-pipeline-request-pipeline-id |
| 309 | + request.setId("my-pipeline-id"); // <1> |
| 310 | + // end::simulate-pipeline-request-pipeline-id |
| 311 | + |
| 312 | + // For testing we set this back to null |
| 313 | + request.setId(null); |
| 314 | + |
| 315 | + // tag::simulate-pipeline-request-verbose |
| 316 | + request.setVerbose(true); // <1> |
| 317 | + // end::simulate-pipeline-request-verbose |
| 318 | + |
| 319 | + // tag::simulate-pipeline-execute |
| 320 | + SimulatePipelineResponse response = client.ingest().simulatePipeline(request, RequestOptions.DEFAULT); // <1> |
| 321 | + // end::simulate-pipeline-execute |
| 322 | + |
| 323 | + // tag::simulate-pipeline-response |
| 324 | + for (SimulateDocumentResult result: response.getResults()) { // <1> |
| 325 | + if (request.isVerbose()) { |
| 326 | + assert result instanceof SimulateDocumentVerboseResult; |
| 327 | + SimulateDocumentVerboseResult verboseResult = (SimulateDocumentVerboseResult)result; // <2> |
| 328 | + for (SimulateProcessorResult processorResult: verboseResult.getProcessorResults()) { // <3> |
| 329 | + processorResult.getIngestDocument(); // <4> |
| 330 | + processorResult.getFailure(); // <5> |
| 331 | + } |
| 332 | + } else { |
| 333 | + assert result instanceof SimulateDocumentBaseResult; |
| 334 | + SimulateDocumentBaseResult baseResult = (SimulateDocumentBaseResult)result; // <6> |
| 335 | + baseResult.getIngestDocument(); // <7> |
| 336 | + baseResult.getFailure(); // <8> |
| 337 | + } |
| 338 | + } |
| 339 | + // end::simulate-pipeline-response |
| 340 | + assert(response.getResults().size() > 0); |
| 341 | + } |
| 342 | + } |
| 343 | + |
| 344 | + public void testSimulatePipelineAsync() throws Exception { |
| 345 | + RestHighLevelClient client = highLevelClient(); |
| 346 | + |
| 347 | + { |
| 348 | + String source = |
| 349 | + "{\"" + |
| 350 | + "pipeline\":{" + |
| 351 | + "\"description\":\"_description\"," + |
| 352 | + "\"processors\":[{\"set\":{\"field\":\"field2\",\"value\":\"_value\"}}]" + |
| 353 | + "}," + |
| 354 | + "\"docs\":[" + |
| 355 | + "{\"_index\":\"index\",\"_type\":\"_doc\",\"_id\":\"id\",\"_source\":{\"foo\":\"bar\"}}," + |
| 356 | + "{\"_index\":\"index\",\"_type\":\"_doc\",\"_id\":\"id\",\"_source\":{\"foo\":\"rab\"}}" + |
| 357 | + "]" + |
| 358 | + "}"; |
| 359 | + SimulatePipelineRequest request = new SimulatePipelineRequest( |
| 360 | + new BytesArray(source.getBytes(StandardCharsets.UTF_8)), |
| 361 | + XContentType.JSON |
| 362 | + ); |
| 363 | + |
| 364 | + // tag::simulate-pipeline-execute-listener |
| 365 | + ActionListener<SimulatePipelineResponse> listener = |
| 366 | + new ActionListener<SimulatePipelineResponse>() { |
| 367 | + @Override |
| 368 | + public void onResponse(SimulatePipelineResponse response) { |
| 369 | + // <1> |
| 370 | + } |
| 371 | + |
| 372 | + @Override |
| 373 | + public void onFailure(Exception e) { |
| 374 | + // <2> |
| 375 | + } |
| 376 | + }; |
| 377 | + // end::simulate-pipeline-execute-listener |
| 378 | + |
| 379 | + // Replace the empty listener by a blocking listener in test |
| 380 | + final CountDownLatch latch = new CountDownLatch(1); |
| 381 | + listener = new LatchedActionListener<>(listener, latch); |
| 382 | + |
| 383 | + // tag::simulate-pipeline-execute-async |
| 384 | + client.ingest().simulatePipelineAsync(request, RequestOptions.DEFAULT, listener); // <1> |
| 385 | + // end::simulate-pipeline-execute-async |
| 386 | + |
| 387 | + assertTrue(latch.await(30L, TimeUnit.SECONDS)); |
| 388 | + } |
| 389 | + } |
| 390 | + |
280 | 391 | }
|
0 commit comments