|
11 | 11 | import org.elasticsearch.client.RequestOptions;
|
12 | 12 | import org.elasticsearch.client.Response;
|
13 | 13 | import org.elasticsearch.client.ResponseException;
|
14 |
| -import org.elasticsearch.client.RestHighLevelClient; |
15 | 14 | import org.elasticsearch.client.WarningsHandler;
|
16 |
| -import org.elasticsearch.client.core.AcknowledgedResponse; |
17 |
| -import org.elasticsearch.client.core.PageParams; |
18 |
| -import org.elasticsearch.client.transform.DeleteTransformRequest; |
19 |
| -import org.elasticsearch.client.transform.GetTransformRequest; |
20 |
| -import org.elasticsearch.client.transform.GetTransformResponse; |
21 |
| -import org.elasticsearch.client.transform.GetTransformStatsRequest; |
22 |
| -import org.elasticsearch.client.transform.GetTransformStatsResponse; |
23 |
| -import org.elasticsearch.client.transform.PutTransformRequest; |
24 |
| -import org.elasticsearch.client.transform.transforms.DestConfig; |
25 |
| -import org.elasticsearch.client.transform.transforms.QueryConfig; |
26 |
| -import org.elasticsearch.client.transform.transforms.SourceConfig; |
27 |
| -import org.elasticsearch.client.transform.transforms.TransformConfig; |
28 |
| -import org.elasticsearch.client.transform.transforms.TransformStats; |
29 |
| -import org.elasticsearch.client.transform.transforms.pivot.AggregationConfig; |
30 |
| -import org.elasticsearch.client.transform.transforms.pivot.GroupConfig; |
31 |
| -import org.elasticsearch.client.transform.transforms.pivot.PivotConfig; |
32 |
| -import org.elasticsearch.client.transform.transforms.pivot.TermsGroupSource; |
33 |
| -import org.elasticsearch.common.settings.Settings; |
34 | 15 | import org.elasticsearch.common.xcontent.support.XContentMapValues;
|
35 |
| -import org.elasticsearch.core.TimeValue; |
36 |
| -import org.elasticsearch.index.query.QueryBuilders; |
37 |
| -import org.elasticsearch.search.SearchModule; |
38 |
| -import org.elasticsearch.search.aggregations.AggregationBuilders; |
39 |
| -import org.elasticsearch.search.aggregations.AggregatorFactories; |
40 |
| -import org.elasticsearch.xcontent.NamedXContentRegistry; |
41 | 16 | import org.elasticsearch.xpack.core.transform.TransformField;
|
42 | 17 | import org.elasticsearch.xpack.core.transform.transforms.persistence.TransformInternalIndexConstants;
|
43 | 18 | import org.junit.After;
|
|
50 | 25 | import java.util.Map;
|
51 | 26 | import java.util.concurrent.TimeUnit;
|
52 | 27 |
|
53 |
| -import static java.util.Collections.emptyList; |
54 | 28 | import static java.util.Collections.singletonList;
|
55 | 29 | import static org.hamcrest.Matchers.equalTo;
|
56 | 30 | import static org.hamcrest.Matchers.greaterThan;
|
@@ -518,83 +492,84 @@ public void testGetStatsWithContinuous() throws Exception {
|
518 | 492 | }, 120, TimeUnit.SECONDS);
|
519 | 493 | }
|
520 | 494 |
|
521 |
| - public void testManyTranformsUsingHlrc() throws IOException { |
522 |
| - AggregatorFactories.Builder aggs = AggregatorFactories.builder() |
523 |
| - .addAggregator(AggregationBuilders.avg("review_score.avg").field("stars")) |
524 |
| - .addAggregator(AggregationBuilders.max("timestamp.max").field("timestamp")); |
525 |
| - |
526 |
| - TransformConfig.Builder configBuilder = TransformConfig.builder() |
527 |
| - .setSource( |
528 |
| - SourceConfig.builder().setIndex(REVIEWS_INDEX_NAME).setQueryConfig(new QueryConfig(QueryBuilders.matchAllQuery())).build() |
529 |
| - ) |
530 |
| - .setDest(DestConfig.builder().setIndex("dest").build()) |
531 |
| - .setFrequency(TimeValue.timeValueSeconds(10)) |
532 |
| - .setDescription("Test 10000 transform configs") |
533 |
| - .setPivotConfig( |
534 |
| - PivotConfig.builder() |
535 |
| - .setGroups(GroupConfig.builder().groupBy("by-user", TermsGroupSource.builder().setField("user_id").build()).build()) |
536 |
| - .setAggregationConfig(new AggregationConfig(aggs)) |
537 |
| - .build() |
538 |
| - ); |
539 |
| - |
540 |
| - try (RestHighLevelClient restClient = new TestRestHighLevelClient()) { |
541 |
| - int numberOfTransforms = randomIntBetween(1_500, 4_000); |
542 |
| - for (int i = 0; i < numberOfTransforms; ++i) { |
543 |
| - AcknowledgedResponse response = restClient.transform() |
544 |
| - .putTransform( |
545 |
| - new PutTransformRequest(configBuilder.setId(String.format(Locale.ROOT, "t-%05d", i)).build()), |
546 |
| - RequestOptions.DEFAULT |
547 |
| - ); |
548 |
| - assertTrue(response.isAcknowledged()); |
549 |
| - } |
550 |
| - |
551 |
| - for (int i = 0; i < 3; ++i) { |
552 |
| - int from = randomIntBetween(0, numberOfTransforms - 1_000); |
553 |
| - int size = randomIntBetween(1, 1000); |
| 495 | + @SuppressWarnings("unchecked") |
| 496 | + public void testManyTransforms() throws IOException { |
| 497 | + String config = transformConfig(); |
| 498 | + |
| 499 | + int numberOfTransforms = randomIntBetween(1_500, 4_000); |
| 500 | + for (int i = 0; i < numberOfTransforms; ++i) { |
| 501 | + String transformId = String.format(Locale.ROOT, "t-%05d", i); |
| 502 | + final Request createTransformRequest = createRequestWithAuth("PUT", getTransformEndpoint() + transformId, null); |
| 503 | + createTransformRequest.setJsonEntity(config); |
| 504 | + assertOK(client().performRequest(createTransformRequest)); |
| 505 | + } |
554 | 506 |
|
555 |
| - GetTransformRequest request = new GetTransformRequest("*"); |
556 |
| - request.setPageParams(new PageParams(from, size)); |
557 |
| - GetTransformStatsRequest statsRequest = new GetTransformStatsRequest("*"); |
558 |
| - statsRequest.setPageParams(new PageParams(from, size)); |
| 507 | + for (int i = 0; i < 3; ++i) { |
| 508 | + int from = randomIntBetween(0, numberOfTransforms - 1_000); |
| 509 | + int size = randomIntBetween(1, 1000); |
559 | 510 |
|
560 |
| - GetTransformResponse response = restClient.transform().getTransform(request, RequestOptions.DEFAULT); |
561 |
| - GetTransformStatsResponse statsResponse = restClient.transform().getTransformStats(statsRequest, RequestOptions.DEFAULT); |
| 511 | + var transforms = getTransforms(from, size); |
| 512 | + var statsResponse = getTransformsStateAndStats(from, size); |
562 | 513 |
|
563 |
| - assertEquals(numberOfTransforms, response.getCount()); |
564 |
| - assertEquals(numberOfTransforms, statsResponse.getCount()); |
| 514 | + assertEquals(numberOfTransforms, transforms.get("count")); |
| 515 | + assertEquals(numberOfTransforms, statsResponse.get("count")); |
565 | 516 |
|
566 |
| - List<TransformConfig> configs = response.getTransformConfigurations(); |
567 |
| - List<TransformStats> stats = statsResponse.getTransformsStats(); |
| 517 | + var configs = (List<Map<String, Object>>) transforms.get("transforms"); |
| 518 | + var stats = (List<Map<String, Object>>) statsResponse.get("transforms"); |
568 | 519 |
|
569 |
| - assertEquals(size, configs.size()); |
570 |
| - assertEquals(size, stats.size()); |
| 520 | + assertEquals(size, configs.size()); |
| 521 | + assertEquals(size, stats.size()); |
571 | 522 |
|
572 |
| - assertThat(configs.get(0).getId(), equalTo(String.format(Locale.ROOT, "t-%05d", from))); |
573 |
| - assertThat(configs.get(configs.size() - 1).getId(), equalTo(String.format(Locale.ROOT, "t-%05d", from + size - 1))); |
574 |
| - assertThat(stats.get(0).getId(), equalTo(String.format(Locale.ROOT, "t-%05d", from))); |
575 |
| - assertThat(stats.get(stats.size() - 1).getId(), equalTo(String.format(Locale.ROOT, "t-%05d", from + size - 1))); |
| 523 | + assertThat(configs.get(0).get("id"), equalTo(String.format(Locale.ROOT, "t-%05d", from))); |
| 524 | + assertThat(configs.get(configs.size() - 1).get("id"), equalTo(String.format(Locale.ROOT, "t-%05d", from + size - 1))); |
| 525 | + assertThat(stats.get(0).get("id"), equalTo(String.format(Locale.ROOT, "t-%05d", from))); |
| 526 | + assertThat(stats.get(stats.size() - 1).get("id"), equalTo(String.format(Locale.ROOT, "t-%05d", from + size - 1))); |
576 | 527 |
|
577 |
| - if (size > 2) { |
578 |
| - int randomElement = randomIntBetween(1, size - 1); |
579 |
| - assertThat(configs.get(randomElement).getId(), equalTo(String.format(Locale.ROOT, "t-%05d", from + randomElement))); |
580 |
| - assertThat(stats.get(randomElement).getId(), equalTo(String.format(Locale.ROOT, "t-%05d", from + randomElement))); |
581 |
| - } |
| 528 | + if (size > 2) { |
| 529 | + int randomElement = randomIntBetween(1, size - 1); |
| 530 | + assertThat(configs.get(randomElement).get("id"), equalTo(String.format(Locale.ROOT, "t-%05d", from + randomElement))); |
| 531 | + assertThat(stats.get(randomElement).get("id"), equalTo(String.format(Locale.ROOT, "t-%05d", from + randomElement))); |
582 | 532 | }
|
| 533 | + } |
583 | 534 |
|
584 |
| - for (int i = 0; i < numberOfTransforms; ++i) { |
585 |
| - AcknowledgedResponse response = restClient.transform() |
586 |
| - .deleteTransform(new DeleteTransformRequest(String.format(Locale.ROOT, "t-%05d", i)), RequestOptions.DEFAULT); |
587 |
| - assertTrue(response.isAcknowledged()); |
588 |
| - } |
| 535 | + for (int i = 0; i < numberOfTransforms; ++i) { |
| 536 | + deleteTransform(String.format(Locale.ROOT, "t-%05d", i)); |
589 | 537 | }
|
590 | 538 | }
|
591 | 539 |
|
592 |
| - protected static class TestRestHighLevelClient extends RestHighLevelClient { |
593 |
| - private static final List<NamedXContentRegistry.Entry> X_CONTENT_ENTRIES = new SearchModule(Settings.EMPTY, emptyList()) |
594 |
| - .getNamedXContents(); |
595 |
| - |
596 |
| - TestRestHighLevelClient() { |
597 |
| - super(client(), restClient -> {}, X_CONTENT_ENTRIES); |
598 |
| - } |
| 540 | + private static String transformConfig() { |
| 541 | + return """ |
| 542 | + { |
| 543 | + "description": "Test 10000 transform configs", |
| 544 | + "source": { |
| 545 | + "index":""" + "\"" + REVIEWS_INDEX_NAME + "\"" + """ |
| 546 | + }, |
| 547 | + "pivot": { |
| 548 | + "group_by": { |
| 549 | + "by-user": { |
| 550 | + "terms": { |
| 551 | + "field": "user_id" |
| 552 | + } |
| 553 | + } |
| 554 | + }, |
| 555 | + "aggregations": { |
| 556 | + "review_score.avg": { |
| 557 | + "avg": { |
| 558 | + "field": "stars" |
| 559 | + } |
| 560 | + }, |
| 561 | + "timestamp.max": { |
| 562 | + "max": { |
| 563 | + "field": "timestamp" |
| 564 | + } |
| 565 | + } |
| 566 | + } |
| 567 | + }, |
| 568 | + "dest": { |
| 569 | + "index":"dest" |
| 570 | + }, |
| 571 | + "frequency": "10s" |
| 572 | + } |
| 573 | + """; |
599 | 574 | }
|
600 | 575 | }
|
0 commit comments