66
77package org .elasticsearch .xpack .transform .integration ;
88
9+ import org .apache .logging .log4j .Level ;
910import org .elasticsearch .action .admin .cluster .node .tasks .list .ListTasksRequest ;
1011import org .elasticsearch .action .admin .indices .refresh .RefreshRequest ;
1112import org .elasticsearch .action .bulk .BulkRequest ;
1213import org .elasticsearch .action .bulk .BulkResponse ;
1314import org .elasticsearch .action .index .IndexRequest ;
15+ import org .elasticsearch .action .search .SearchRequest ;
16+ import org .elasticsearch .action .search .SearchResponse ;
1417import org .elasticsearch .client .RequestOptions ;
1518import org .elasticsearch .client .RestHighLevelClient ;
1619import org .elasticsearch .client .core .AcknowledgedResponse ;
4851import org .elasticsearch .common .xcontent .XContentHelper ;
4952import org .elasticsearch .common .xcontent .XContentParser ;
5053import org .elasticsearch .common .xcontent .XContentType ;
54+ import org .elasticsearch .index .query .MatchAllQueryBuilder ;
5155import org .elasticsearch .index .query .QueryBuilder ;
5256import org .elasticsearch .index .query .QueryBuilders ;
57+ import org .elasticsearch .search .SearchHit ;
5358import org .elasticsearch .search .SearchModule ;
5459import org .elasticsearch .search .aggregations .AggregatorFactories ;
5560import org .elasticsearch .search .aggregations .bucket .histogram .DateHistogramInterval ;
61+ import org .elasticsearch .search .builder .SearchSourceBuilder ;
62+ import org .elasticsearch .search .sort .SortOrder ;
5663import org .elasticsearch .test .rest .ESRestTestCase ;
64+ import org .joda .time .Instant ;
5765
5866import java .io .IOException ;
5967import java .nio .charset .StandardCharsets ;
6270import java .util .Collections ;
6371import java .util .HashMap ;
6472import java .util .List ;
73+ import java .util .Locale ;
6574import java .util .Map ;
6675import java .util .concurrent .TimeUnit ;
6776
@@ -73,10 +82,36 @@ abstract class TransformIntegTestCase extends ESRestTestCase {
7382 private Map <String , TransformConfig > transformConfigs = new HashMap <>();
7483
7584 protected void cleanUp () throws IOException {
85+ logAudits ();
7686 cleanUpTransforms ();
7787 waitForPendingTasks ();
7888 }
7989
90+ private void logAudits () throws IOException {
91+ RestHighLevelClient restClient = new TestRestHighLevelClient ();
92+
93+ // using '*' to make this lenient and do not fail if the audit index does not exist
94+ SearchRequest searchRequest = new SearchRequest (".transform-notifications-*" );
95+ searchRequest .source (new SearchSourceBuilder ().query (new MatchAllQueryBuilder ()).size (100 ).sort ("timestamp" , SortOrder .ASC ));
96+
97+ restClient .indices ().refresh (new RefreshRequest (searchRequest .indices ()), RequestOptions .DEFAULT );
98+
99+ SearchResponse searchResponse = restClient .search (searchRequest , RequestOptions .DEFAULT );
100+
101+ for (SearchHit hit : searchResponse .getHits ()) {
102+ Map <String , Object > source = hit .getSourceAsMap ();
103+ String level = (String ) source .getOrDefault ("level" , "info" );
104+ logger .log (
105+ Level .getLevel (level .toUpperCase (Locale .ROOT )),
106+ "Transform audit: [{}] [{}] [{}] [{}]" ,
107+ Instant .ofEpochMilli ((long ) source .getOrDefault ("timestamp" , 0 )),
108+ source .getOrDefault ("transform_id" , "n/a" ),
109+ source .getOrDefault ("message" , "n/a" ),
110+ source .getOrDefault ("node_name" , "n/a" )
111+ );
112+ }
113+ }
114+
80115 protected void cleanUpTransforms () throws IOException {
81116 for (TransformConfig config : transformConfigs .values ()) {
82117 stopTransform (config .getId ());
0 commit comments