@@ -73,7 +73,7 @@ protected RestClient buildClient(Settings settings, HttpHost[] hosts) throws IOE
73
73
}
74
74
75
75
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 };
77
77
78
78
// create mapping
79
79
try (XContentBuilder builder = jsonBuilder ()) {
@@ -158,6 +158,7 @@ protected void createReviewsIndex(String indexName, int numDocs) throws IOExcept
158
158
bulkRequest .setJsonEntity (bulk .toString ());
159
159
client ().performRequest (bulkRequest );
160
160
}
161
+
161
162
/**
162
163
* Create a simple dataset for testing with reviewers, ratings and businesses
163
164
*/
@@ -182,9 +183,8 @@ protected void createContinuousPivotReviewsTransform(String transformId, String
182
183
183
184
final Request createDataframeTransformRequest = createRequestWithAuth ("PUT" , getTransformEndpoint () + transformId , authHeader );
184
185
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
188
188
+ " \" sync\" : {\" time\" :{\" field\" : \" timestamp\" , \" delay\" : \" 15m\" }},"
189
189
+ " \" frequency\" : \" 1s\" ,"
190
190
+ " \" pivot\" : {"
@@ -206,7 +206,6 @@ protected void createContinuousPivotReviewsTransform(String transformId, String
206
206
assertThat (createDataframeTransformResponse .get ("acknowledged" ), equalTo (Boolean .TRUE ));
207
207
}
208
208
209
-
210
209
protected void createPivotReviewsTransform (String transformId , String dataFrameIndex , String query , String pipeline , String authHeader )
211
210
throws IOException {
212
211
final Request createDataframeTransformRequest = createRequestWithAuth ("PUT" , getTransformEndpoint () + transformId , authHeader );
@@ -226,30 +225,30 @@ protected void createPivotReviewsTransform(String transformId, String dataFrameI
226
225
}
227
226
228
227
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
+ + "}" ;
241
240
242
241
createDataframeTransformRequest .setJsonEntity (config );
243
242
244
243
Map <String , Object > createDataframeTransformResponse = entityAsMap (client ().performRequest (createDataframeTransformRequest ));
245
244
assertThat (createDataframeTransformResponse .get ("acknowledged" ), equalTo (Boolean .TRUE ));
246
245
}
247
246
248
- protected void startDataframeTransform (String transformId ) throws IOException {
249
- startDataframeTransform (transformId , null );
247
+ protected void startTransform (String transformId ) throws IOException {
248
+ startTransform (transformId , null );
250
249
}
251
250
252
- protected void startDataframeTransform (String transformId , String authHeader , String ... warnings ) throws IOException {
251
+ protected void startTransform (String transformId , String authHeader , String ... warnings ) throws IOException {
253
252
// start the transform
254
253
final Request startTransformRequest = createRequestWithAuth ("POST" , getTransformEndpoint () + transformId + "/_start" , authHeader );
255
254
if (warnings .length > 0 ) {
@@ -280,10 +279,10 @@ protected void startAndWaitForTransform(String transformId, String dataFrameInde
280
279
startAndWaitForTransform (transformId , dataFrameIndex , authHeader , new String [0 ]);
281
280
}
282
281
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 {
285
284
// start the transform
286
- startDataframeTransform (transformId , authHeader , warnings );
285
+ startTransform (transformId , authHeader , warnings );
287
286
assertTrue (indexExists (dataFrameIndex ));
288
287
// wait until the dataframe has been created and all data is available
289
288
waitForDataFrameCheckpoint (transformId );
@@ -292,18 +291,14 @@ protected void startAndWaitForTransform(String transformId, String dataFrameInde
292
291
refreshIndex (dataFrameIndex );
293
292
}
294
293
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 {
298
295
startAndWaitForContinuousTransform (transformId , dataFrameIndex , authHeader , 1L );
299
296
}
300
297
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 {
305
300
// start the transform
306
- startDataframeTransform (transformId , authHeader , new String [0 ]);
301
+ startTransform (transformId , authHeader , new String [0 ]);
307
302
assertTrue (indexExists (dataFrameIndex ));
308
303
// wait until the dataframe has been created and all data is available
309
304
waitForTransformCheckpoint (transformId , checkpoint );
@@ -323,9 +318,7 @@ protected Request createRequestWithAuth(final String method, final String endpoi
323
318
}
324
319
325
320
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 );
329
322
}
330
323
331
324
void waitForDataFrameCheckpoint (String transformId ) throws Exception {
@@ -341,20 +334,20 @@ void refreshIndex(String index) throws IOException {
341
334
}
342
335
343
336
@ SuppressWarnings ("unchecked" )
344
- private static List <Map <String , Object >> getDataFrameTransforms () throws IOException {
337
+ protected static List <Map <String , Object >> getTransforms () throws IOException {
345
338
Response response = adminClient ().performRequest (new Request ("GET" , getTransformEndpoint () + "_all" ));
346
339
Map <String , Object > transforms = entityAsMap (response );
347
340
List <Map <String , Object >> transformConfigs = (List <Map <String , Object >>) XContentMapValues .extractValue ("transforms" , transforms );
348
341
349
342
return transformConfigs == null ? Collections .emptyList () : transformConfigs ;
350
343
}
351
344
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 );
354
347
return transformStatsAsMap == null ? null : (String ) XContentMapValues .extractValue ("state" , transformStatsAsMap );
355
348
}
356
349
357
- protected static Map <?, ?> getDataFrameState (String transformId ) throws IOException {
350
+ protected static Map <?, ?> getTransformStateAndStats (String transformId ) throws IOException {
358
351
Response statsResponse = client ().performRequest (new Request ("GET" , getTransformEndpoint () + transformId + "/_stats" ));
359
352
List <?> transforms = ((List <?>) entityAsMap (statsResponse ).get ("transforms" ));
360
353
if (transforms .isEmpty ()) {
@@ -383,7 +376,7 @@ public static void removeIndices() throws Exception {
383
376
}
384
377
385
378
public void wipeTransforms () throws IOException {
386
- List <Map <String , Object >> transformConfigs = getDataFrameTransforms ();
379
+ List <Map <String , Object >> transformConfigs = getTransforms ();
387
380
for (Map <String , Object > transformConfig : transformConfigs ) {
388
381
String transformId = (String ) transformConfig .get ("id" );
389
382
Request request = new Request ("POST" , getTransformEndpoint () + transformId + "/_stop" );
@@ -395,7 +388,7 @@ public void wipeTransforms() throws IOException {
395
388
396
389
for (Map <String , Object > transformConfig : transformConfigs ) {
397
390
String transformId = (String ) transformConfig .get ("id" );
398
- String state = getDataFrameTransformState (transformId );
391
+ String state = getTransformState (transformId );
399
392
assertEquals ("Transform [" + transformId + "] is not in the stopped state" , "stopped" , state );
400
393
}
401
394
@@ -405,7 +398,7 @@ public void wipeTransforms() throws IOException {
405
398
}
406
399
407
400
// transforms should be all gone
408
- transformConfigs = getDataFrameTransforms ();
401
+ transformConfigs = getTransforms ();
409
402
assertTrue (transformConfigs .isEmpty ());
410
403
411
404
// the configuration index should be empty
@@ -437,11 +430,15 @@ static int getDataFrameCheckpoint(String transformId) throws IOException {
437
430
protected void setupDataAccessRole (String role , String ... indices ) throws IOException {
438
431
String indicesStr = Arrays .stream (indices ).collect (Collectors .joining ("\" ,\" " , "\" " , "\" " ));
439
432
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
+ );
445
442
client ().performRequest (request );
446
443
}
447
444
@@ -450,13 +447,18 @@ protected void setupUser(String user, List<String> roles) throws IOException {
450
447
451
448
String rolesStr = roles .stream ().collect (Collectors .joining ("\" ,\" " , "\" " , "\" " ));
452
449
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 + " ]" + "}" );
457
451
client ().performRequest (request );
458
452
}
459
453
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
+
460
462
protected static String getTransformEndpoint () {
461
463
return useDeprecatedEndpoints ? TransformField .REST_BASE_PATH_TRANSFORMS_DEPRECATED : TransformField .REST_BASE_PATH_TRANSFORMS ;
462
464
}
0 commit comments