@@ -285,6 +285,182 @@ void flb_test_line_format()
285285 flb_destroy (ctx );
286286}
287287
288+ static void cb_check_drop_single_key_off (void * ctx , int ffd ,
289+ int res_ret , void * res_data , size_t res_size ,
290+ void * data )
291+ {
292+ char * p ;
293+ flb_sds_t out_js = res_data ;
294+ char * index_line = "{\\\"key\\\":\\\"value\\\"}" ;
295+
296+ p = strstr (out_js , index_line );
297+ if (!TEST_CHECK (p != NULL )) {
298+ TEST_MSG ("Given:%s" , out_js );
299+ }
300+
301+ flb_sds_destroy (out_js );
302+ }
303+
304+ void flb_test_drop_single_key_off ()
305+ {
306+ int ret ;
307+ int size = sizeof (JSON_BASIC ) - 1 ;
308+ flb_ctx_t * ctx ;
309+ int in_ffd ;
310+ int out_ffd ;
311+
312+ /* Create context, flush every second (some checks omitted here) */
313+ ctx = flb_create ();
314+ flb_service_set (ctx , "flush" , "1" , "grace" , "1" ,
315+ "log_level" , "error" ,
316+ NULL );
317+
318+ /* Lib input mode */
319+ in_ffd = flb_input (ctx , (char * ) "lib" , NULL );
320+ flb_input_set (ctx , in_ffd , "tag" , "test" , NULL );
321+
322+ /* Loki output */
323+ out_ffd = flb_output (ctx , (char * ) "loki" , NULL );
324+ flb_output_set (ctx , out_ffd ,
325+ "match" , "test" ,
326+ "drop_single_key" , "off" ,
327+ NULL );
328+
329+ /* Enable test mode */
330+ ret = flb_output_set_test (ctx , out_ffd , "formatter" ,
331+ cb_check_drop_single_key_off ,
332+ NULL , NULL );
333+
334+ /* Start */
335+ ret = flb_start (ctx );
336+ TEST_CHECK (ret == 0 );
337+
338+ /* Ingest data sample */
339+ ret = flb_lib_push (ctx , in_ffd , (char * ) JSON_BASIC , size );
340+ TEST_CHECK (ret >= 0 );
341+
342+ sleep (2 );
343+ flb_stop (ctx );
344+ flb_destroy (ctx );
345+ }
346+
347+ static void cb_check_drop_single_key_on (void * ctx , int ffd ,
348+ int res_ret , void * res_data , size_t res_size ,
349+ void * data )
350+ {
351+ char * p ;
352+ flb_sds_t out_js = res_data ;
353+ char * index_line = "\\\"value\\\"" ;
354+
355+ p = strstr (out_js , index_line );
356+ if (!TEST_CHECK (p != NULL )) {
357+ TEST_MSG ("Given:%s" , out_js );
358+ }
359+
360+ flb_sds_destroy (out_js );
361+ }
362+
363+ void flb_test_drop_single_key_on ()
364+ {
365+ int ret ;
366+ int size = sizeof (JSON_BASIC ) - 1 ;
367+ flb_ctx_t * ctx ;
368+ int in_ffd ;
369+ int out_ffd ;
370+
371+ /* Create context, flush every second (some checks omitted here) */
372+ ctx = flb_create ();
373+ flb_service_set (ctx , "flush" , "1" , "grace" , "1" ,
374+ "log_level" , "error" ,
375+ NULL );
376+
377+ /* Lib input mode */
378+ in_ffd = flb_input (ctx , (char * ) "lib" , NULL );
379+ flb_input_set (ctx , in_ffd , "tag" , "test" , NULL );
380+
381+ /* Loki output */
382+ out_ffd = flb_output (ctx , (char * ) "loki" , NULL );
383+ flb_output_set (ctx , out_ffd ,
384+ "match" , "test" ,
385+ "drop_single_key" , "on" ,
386+ NULL );
387+
388+ /* Enable test mode */
389+ ret = flb_output_set_test (ctx , out_ffd , "formatter" ,
390+ cb_check_drop_single_key_on ,
391+ NULL , NULL );
392+
393+ /* Start */
394+ ret = flb_start (ctx );
395+ TEST_CHECK (ret == 0 );
396+
397+ /* Ingest data sample */
398+ ret = flb_lib_push (ctx , in_ffd , (char * ) JSON_BASIC , size );
399+ TEST_CHECK (ret >= 0 );
400+
401+ sleep (2 );
402+ flb_stop (ctx );
403+ flb_destroy (ctx );
404+ }
405+
406+ static void cb_check_drop_single_key_raw (void * ctx , int ffd ,
407+ int res_ret , void * res_data , size_t res_size ,
408+ void * data )
409+ {
410+ char * p ;
411+ flb_sds_t out_js = res_data ;
412+ char * index_line = "\"value\"" ;
413+
414+ p = strstr (out_js , index_line );
415+ if (!TEST_CHECK (p != NULL )) {
416+ TEST_MSG ("Given:%s" , out_js );
417+ }
418+
419+ flb_sds_destroy (out_js );
420+ }
421+
422+ void flb_test_drop_single_key_raw ()
423+ {
424+ int ret ;
425+ int size = sizeof (JSON_BASIC ) - 1 ;
426+ flb_ctx_t * ctx ;
427+ int in_ffd ;
428+ int out_ffd ;
429+
430+ /* Create context, flush every second (some checks omitted here) */
431+ ctx = flb_create ();
432+ flb_service_set (ctx , "flush" , "1" , "grace" , "1" ,
433+ "log_level" , "error" ,
434+ NULL );
435+
436+ /* Lib input mode */
437+ in_ffd = flb_input (ctx , (char * ) "lib" , NULL );
438+ flb_input_set (ctx , in_ffd , "tag" , "test" , NULL );
439+
440+ /* Loki output */
441+ out_ffd = flb_output (ctx , (char * ) "loki" , NULL );
442+ flb_output_set (ctx , out_ffd ,
443+ "match" , "test" ,
444+ "drop_single_key" , "raw" ,
445+ NULL );
446+
447+ /* Enable test mode */
448+ ret = flb_output_set_test (ctx , out_ffd , "formatter" ,
449+ cb_check_drop_single_key_raw ,
450+ NULL , NULL );
451+
452+ /* Start */
453+ ret = flb_start (ctx );
454+ TEST_CHECK (ret == 0 );
455+
456+ /* Ingest data sample */
457+ ret = flb_lib_push (ctx , in_ffd , (char * ) JSON_BASIC , size );
458+ TEST_CHECK (ret >= 0 );
459+
460+ sleep (2 );
461+ flb_stop (ctx );
462+ flb_destroy (ctx );
463+ }
288464
289465static void cb_check_line_format_remove_keys (void * ctx , int ffd ,
290466 int res_ret , void * res_data ,
@@ -611,13 +787,16 @@ void flb_test_float_value()
611787/* Test list */
612788TEST_LIST = {
613789 {"remove_keys_remove_map" , flb_test_remove_map },
614- {"labels_ra" , flb_test_labels_ra },
615- {"remove_keys" , flb_test_remove_keys },
616- {"basic" , flb_test_basic },
617- {"labels" , flb_test_labels },
618- {"label_keys" , flb_test_label_keys },
619- {"line_format" , flb_test_line_format },
620- {"label_map_path" , flb_test_label_map_path },
621- {"float_value" , flb_test_float_value },
790+ {"labels_ra" , flb_test_labels_ra },
791+ {"remove_keys" , flb_test_remove_keys },
792+ {"basic" , flb_test_basic },
793+ {"labels" , flb_test_labels },
794+ {"label_keys" , flb_test_label_keys },
795+ {"line_format" , flb_test_line_format },
796+ {"drop_single_key_off" , flb_test_drop_single_key_off },
797+ {"drop_single_key_on" , flb_test_drop_single_key_on },
798+ {"drop_single_key_raw" , flb_test_drop_single_key_raw },
799+ {"label_map_path" , flb_test_label_map_path },
800+ {"float_value" , flb_test_float_value },
622801 {NULL , NULL }
623802};
0 commit comments