@@ -248,6 +248,56 @@ public void testLabelValues(TestInfo info) throws InterruptedException {
248
248
assertEquals (2 , values .size ());
249
249
assertTrue (values .get (1 ).values .containsKey ("value" ));
250
250
}
251
+ @ org .junit .jupiter .api .Test
252
+ public void testFilterLabelValues (TestInfo info ) throws InterruptedException {
253
+ Test test = createTest (createExampleTest (getTestName (info )));
254
+
255
+ String name = info .getTestClass ().map (Class ::getName ).orElse ("<unknown>" ) + "." + info .getDisplayName ();
256
+ Schema schema = createSchema (name , uriForTest (info , "1.0" ));
257
+
258
+
259
+ addLabel (schema , "filter-1" , null , true , false , new Extractor ("filter" , "$.filter1" , false ));
260
+ addLabel (schema , "filter-2" , null , true , false , new Extractor ("filter" , "$.filter2" , false ));
261
+
262
+
263
+ BlockingQueue <Dataset .LabelsUpdatedEvent > newDatasetQueue = serviceMediator .getEventQueue (AsyncEventChannels .DATASET_UPDATED_LABELS , test .id );
264
+ ObjectNode run ;
265
+
266
+ run = runWithValue (42 , schema );
267
+ run .put ("filter1" , "foo" );
268
+ run .put ("filter2" , "bar" );
269
+ uploadRun (run , test .name );
270
+
271
+ run = runWithValue (43 , schema );
272
+ run .put ("filter1" , "foo" );
273
+ run .put ("filter2" , "bar" );
274
+ uploadRun (run , test .name );
275
+
276
+ run = runWithValue (44 , schema );
277
+ run .put ("filter1" , "biz" );
278
+ run .put ("filter2" , "bar" );
279
+ uploadRun (run , test .name );
280
+
281
+ run = runWithValue (45 , schema );
282
+ run .put ("filter1" , "foo" );
283
+ run .put ("filter2" , "baz" );
284
+ uploadRun (run , test .name );
285
+
286
+ for ( int i = 0 ; i < 4 ; i ++){
287
+ assertNotNull (newDatasetQueue .poll (10 , TimeUnit .SECONDS ));
288
+ }
289
+
290
+ List <ObjectNode > values = jsonRequest ().get ("/api/test/" + test .id + "/filteringLabelValues" ).then ().statusCode (200 ).
291
+ extract ().body ().as (new TypeRef <>() {});
292
+ assertNotNull (values );
293
+ assertFalse (values .isEmpty ());
294
+ assertEquals (3 , values .size ());
295
+ assertNotNull (values .stream ().filter ( node -> node .get ("filter-1" ).asText ().equals ("foo" ) && node .get ("filter-2" ).asText ().equals ("bar" )).findAny ().orElse (null ));
296
+ assertNotNull (values .stream ().filter ( node -> node .get ("filter-1" ).asText ().equals ("biz" ) && node .get ("filter-2" ).asText ().equals ("bar" )).findAny ().orElse (null ));
297
+ assertNotNull (values .stream ().filter ( node -> node .get ("filter-1" ).asText ().equals ("foo" ) && node .get ("filter-2" ).asText ().equals ("baz" )).findAny ().orElse (null ));
298
+
299
+ }
300
+
251
301
@ org .junit .jupiter .api .Test
252
302
public void testImportFromFile () throws JsonProcessingException {
253
303
Path p = new File (getClass ().getClassLoader ().getResource ("." ).getPath ()).toPath ();
0 commit comments