@@ -73,7 +73,7 @@ protected RestClient buildClient(Settings settings, HttpHost[] hosts) throws IOE
7373 }
7474
7575 protected void createReviewsIndex (String indexName , int numDocs ) throws IOException {
76- int [] distributionTable = {5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 4 , 4 , 4 , 3 , 3 , 2 , 1 , 1 , 1 };
76+ int [] distributionTable = { 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 4 , 4 , 4 , 3 , 3 , 2 , 1 , 1 , 1 };
7777
7878 // create mapping
7979 try (XContentBuilder builder = jsonBuilder ()) {
@@ -158,6 +158,7 @@ protected void createReviewsIndex(String indexName, int numDocs) throws IOExcept
158158 bulkRequest .setJsonEntity (bulk .toString ());
159159 client ().performRequest (bulkRequest );
160160 }
161+
161162 /**
162163 * Create a simple dataset for testing with reviewers, ratings and businesses
163164 */
@@ -182,9 +183,8 @@ protected void createContinuousPivotReviewsTransform(String transformId, String
182183
183184 final Request createDataframeTransformRequest = createRequestWithAuth ("PUT" , getTransformEndpoint () + transformId , authHeader );
184185
185- String config = "{ \" dest\" : {\" index\" :\" " + dataFrameIndex + "\" },"
186- + " \" source\" : {\" index\" :\" " + REVIEWS_INDEX_NAME + "\" },"
187- //Set frequency high for testing
186+ String config = "{ \" dest\" : {\" index\" :\" " + dataFrameIndex + "\" }," + " \" source\" : {\" index\" :\" " + REVIEWS_INDEX_NAME + "\" },"
187+ // Set frequency high for testing
188188 + " \" sync\" : {\" time\" :{\" field\" : \" timestamp\" , \" delay\" : \" 15m\" }},"
189189 + " \" frequency\" : \" 1s\" ,"
190190 + " \" pivot\" : {"
@@ -206,7 +206,6 @@ protected void createContinuousPivotReviewsTransform(String transformId, String
206206 assertThat (createDataframeTransformResponse .get ("acknowledged" ), equalTo (Boolean .TRUE ));
207207 }
208208
209-
210209 protected void createPivotReviewsTransform (String transformId , String dataFrameIndex , String query , String pipeline , String authHeader )
211210 throws IOException {
212211 final Request createDataframeTransformRequest = createRequestWithAuth ("PUT" , getTransformEndpoint () + transformId , authHeader );
@@ -226,30 +225,30 @@ protected void createPivotReviewsTransform(String transformId, String dataFrameI
226225 }
227226
228227 config += " \" pivot\" : {"
229- + " \" group_by\" : {"
230- + " \" reviewer\" : {"
231- + " \" terms\" : {"
232- + " \" field\" : \" user_id\" "
233- + " } } },"
234- + " \" aggregations\" : {"
235- + " \" avg_rating\" : {"
236- + " \" avg\" : {"
237- + " \" field\" : \" stars\" "
238- + " } } } },"
239- + "\" frequency\" :\" 1s\" "
240- + "}" ;
228+ + " \" group_by\" : {"
229+ + " \" reviewer\" : {"
230+ + " \" terms\" : {"
231+ + " \" field\" : \" user_id\" "
232+ + " } } },"
233+ + " \" aggregations\" : {"
234+ + " \" avg_rating\" : {"
235+ + " \" avg\" : {"
236+ + " \" field\" : \" stars\" "
237+ + " } } } },"
238+ + "\" frequency\" :\" 1s\" "
239+ + "}" ;
241240
242241 createDataframeTransformRequest .setJsonEntity (config );
243242
244243 Map <String , Object > createDataframeTransformResponse = entityAsMap (client ().performRequest (createDataframeTransformRequest ));
245244 assertThat (createDataframeTransformResponse .get ("acknowledged" ), equalTo (Boolean .TRUE ));
246245 }
247246
248- protected void startDataframeTransform (String transformId ) throws IOException {
249- startDataframeTransform (transformId , null );
247+ protected void startTransform (String transformId ) throws IOException {
248+ startTransform (transformId , null );
250249 }
251250
252- protected void startDataframeTransform (String transformId , String authHeader , String ... warnings ) throws IOException {
251+ protected void startTransform (String transformId , String authHeader , String ... warnings ) throws IOException {
253252 // start the transform
254253 final Request startTransformRequest = createRequestWithAuth ("POST" , getTransformEndpoint () + transformId + "/_start" , authHeader );
255254 if (warnings .length > 0 ) {
@@ -280,10 +279,10 @@ protected void startAndWaitForTransform(String transformId, String dataFrameInde
280279 startAndWaitForTransform (transformId , dataFrameIndex , authHeader , new String [0 ]);
281280 }
282281
283- protected void startAndWaitForTransform (String transformId , String dataFrameIndex ,
284- String authHeader , String ... warnings ) throws Exception {
282+ protected void startAndWaitForTransform (String transformId , String dataFrameIndex , String authHeader , String ... warnings )
283+ throws Exception {
285284 // start the transform
286- startDataframeTransform (transformId , authHeader , warnings );
285+ startTransform (transformId , authHeader , warnings );
287286 assertTrue (indexExists (dataFrameIndex ));
288287 // wait until the dataframe has been created and all data is available
289288 waitForDataFrameCheckpoint (transformId );
@@ -292,18 +291,14 @@ protected void startAndWaitForTransform(String transformId, String dataFrameInde
292291 refreshIndex (dataFrameIndex );
293292 }
294293
295- protected void startAndWaitForContinuousTransform (String transformId ,
296- String dataFrameIndex ,
297- String authHeader ) throws Exception {
294+ protected void startAndWaitForContinuousTransform (String transformId , String dataFrameIndex , String authHeader ) throws Exception {
298295 startAndWaitForContinuousTransform (transformId , dataFrameIndex , authHeader , 1L );
299296 }
300297
301- protected void startAndWaitForContinuousTransform (String transformId ,
302- String dataFrameIndex ,
303- String authHeader ,
304- long checkpoint ) throws Exception {
298+ protected void startAndWaitForContinuousTransform (String transformId , String dataFrameIndex , String authHeader , long checkpoint )
299+ throws Exception {
305300 // start the transform
306- startDataframeTransform (transformId , authHeader , new String [0 ]);
301+ startTransform (transformId , authHeader , new String [0 ]);
307302 assertTrue (indexExists (dataFrameIndex ));
308303 // wait until the dataframe has been created and all data is available
309304 waitForTransformCheckpoint (transformId , checkpoint );
@@ -323,9 +318,7 @@ protected Request createRequestWithAuth(final String method, final String endpoi
323318 }
324319
325320 void waitForDataFrameStopped (String transformId ) throws Exception {
326- assertBusy (() -> {
327- assertEquals ("stopped" , getDataFrameTransformState (transformId ));
328- }, 15 , TimeUnit .SECONDS );
321+ assertBusy (() -> { assertEquals ("stopped" , getTransformState (transformId )); }, 15 , TimeUnit .SECONDS );
329322 }
330323
331324 void waitForDataFrameCheckpoint (String transformId ) throws Exception {
@@ -341,20 +334,20 @@ void refreshIndex(String index) throws IOException {
341334 }
342335
343336 @ SuppressWarnings ("unchecked" )
344- private static List <Map <String , Object >> getDataFrameTransforms () throws IOException {
337+ protected static List <Map <String , Object >> getTransforms () throws IOException {
345338 Response response = adminClient ().performRequest (new Request ("GET" , getTransformEndpoint () + "_all" ));
346339 Map <String , Object > transforms = entityAsMap (response );
347340 List <Map <String , Object >> transformConfigs = (List <Map <String , Object >>) XContentMapValues .extractValue ("transforms" , transforms );
348341
349342 return transformConfigs == null ? Collections .emptyList () : transformConfigs ;
350343 }
351344
352- protected static String getDataFrameTransformState (String transformId ) throws IOException {
353- Map <?, ?> transformStatsAsMap = getDataFrameState (transformId );
345+ protected static String getTransformState (String transformId ) throws IOException {
346+ Map <?, ?> transformStatsAsMap = getTransformStateAndStats (transformId );
354347 return transformStatsAsMap == null ? null : (String ) XContentMapValues .extractValue ("state" , transformStatsAsMap );
355348 }
356349
357- protected static Map <?, ?> getDataFrameState (String transformId ) throws IOException {
350+ protected static Map <?, ?> getTransformStateAndStats (String transformId ) throws IOException {
358351 Response statsResponse = client ().performRequest (new Request ("GET" , getTransformEndpoint () + transformId + "/_stats" ));
359352 List <?> transforms = ((List <?>) entityAsMap (statsResponse ).get ("transforms" ));
360353 if (transforms .isEmpty ()) {
@@ -383,7 +376,7 @@ public static void removeIndices() throws Exception {
383376 }
384377
385378 public void wipeTransforms () throws IOException {
386- List <Map <String , Object >> transformConfigs = getDataFrameTransforms ();
379+ List <Map <String , Object >> transformConfigs = getTransforms ();
387380 for (Map <String , Object > transformConfig : transformConfigs ) {
388381 String transformId = (String ) transformConfig .get ("id" );
389382 Request request = new Request ("POST" , getTransformEndpoint () + transformId + "/_stop" );
@@ -395,7 +388,7 @@ public void wipeTransforms() throws IOException {
395388
396389 for (Map <String , Object > transformConfig : transformConfigs ) {
397390 String transformId = (String ) transformConfig .get ("id" );
398- String state = getDataFrameTransformState (transformId );
391+ String state = getTransformState (transformId );
399392 assertEquals ("Transform [" + transformId + "] is not in the stopped state" , "stopped" , state );
400393 }
401394
@@ -405,7 +398,7 @@ public void wipeTransforms() throws IOException {
405398 }
406399
407400 // transforms should be all gone
408- transformConfigs = getDataFrameTransforms ();
401+ transformConfigs = getTransforms ();
409402 assertTrue (transformConfigs .isEmpty ());
410403
411404 // the configuration index should be empty
@@ -437,11 +430,15 @@ static int getDataFrameCheckpoint(String transformId) throws IOException {
437430 protected void setupDataAccessRole (String role , String ... indices ) throws IOException {
438431 String indicesStr = Arrays .stream (indices ).collect (Collectors .joining ("\" ,\" " , "\" " , "\" " ));
439432 Request request = new Request ("PUT" , "/_security/role/" + role );
440- request .setJsonEntity ("{"
441- + " \" indices\" : ["
442- + " { \" names\" : [" + indicesStr + "], \" privileges\" : [\" create_index\" , \" read\" , \" write\" , \" view_index_metadata\" ] }"
443- + " ]"
444- + "}" );
433+ request .setJsonEntity (
434+ "{"
435+ + " \" indices\" : ["
436+ + " { \" names\" : ["
437+ + indicesStr
438+ + "], \" privileges\" : [\" create_index\" , \" read\" , \" write\" , \" view_index_metadata\" ] }"
439+ + " ]"
440+ + "}"
441+ );
445442 client ().performRequest (request );
446443 }
447444
@@ -450,13 +447,18 @@ protected void setupUser(String user, List<String> roles) throws IOException {
450447
451448 String rolesStr = roles .stream ().collect (Collectors .joining ("\" ,\" " , "\" " , "\" " ));
452449 Request request = new Request ("PUT" , "/_security/user/" + user );
453- request .setJsonEntity ("{"
454- + " \" password\" : \" " + password + "\" ,"
455- + " \" roles\" : [ " + rolesStr + " ]"
456- + "}" );
450+ request .setJsonEntity ("{" + " \" password\" : \" " + password + "\" ," + " \" roles\" : [ " + rolesStr + " ]" + "}" );
457451 client ().performRequest (request );
458452 }
459453
454+ protected void assertOnePivotValue (String query , double expected ) throws IOException {
455+ Map <String , Object > searchResult = getAsMap (query );
456+
457+ assertEquals (1 , XContentMapValues .extractValue ("hits.total.value" , searchResult ));
458+ double actual = (Double ) ((List <?>) XContentMapValues .extractValue ("hits.hits._source.avg_rating" , searchResult )).get (0 );
459+ assertEquals (expected , actual , 0.000001 );
460+ }
461+
460462 protected static String getTransformEndpoint () {
461463 return useDeprecatedEndpoints ? TransformField .REST_BASE_PATH_TRANSFORMS_DEPRECATED : TransformField .REST_BASE_PATH_TRANSFORMS ;
462464 }
0 commit comments