@@ -86,6 +86,35 @@ static int get_output_num()
86
86
return ret ;
87
87
}
88
88
89
+ void wait_for_output_num (uint32_t timeout_ms , int * output_num )
90
+ {
91
+ struct flb_time start_time ;
92
+ struct flb_time end_time ;
93
+ struct flb_time diff_time ;
94
+ uint64_t elapsed_time_flb = 0 ;
95
+
96
+ flb_time_get (& start_time );
97
+
98
+ while (true) {
99
+ * output_num = get_output_num ();
100
+
101
+ if (* output_num > 0 ) {
102
+ break ;
103
+ }
104
+
105
+ flb_time_msleep (100 );
106
+ flb_time_get (& end_time );
107
+ flb_time_diff (& end_time , & start_time , & diff_time );
108
+ elapsed_time_flb = flb_time_to_nanosec (& diff_time ) / 1000000 ;
109
+
110
+ if (elapsed_time_flb > timeout_ms ) {
111
+ flb_warn ("[timeout] elapsed_time: %ld" , elapsed_time_flb );
112
+ /* Reached timeout. */
113
+ break ;
114
+ }
115
+ }
116
+ }
117
+
89
118
static int cb_count_msgpack_events (void * record , size_t size , void * data )
90
119
{
91
120
msgpack_unpacked result ;
@@ -1125,6 +1154,7 @@ void flb_test_invalid_metatable()
1125
1154
void flb_test_metadata_single_record ()
1126
1155
{
1127
1156
int ret ;
1157
+ int num ;
1128
1158
flb_ctx_t * ctx ;
1129
1159
int in_ffd ;
1130
1160
int out_ffd ;
@@ -1169,10 +1199,11 @@ void flb_test_metadata_single_record()
1169
1199
ret = flb_start (ctx );
1170
1200
TEST_CHECK (ret == 0 );
1171
1201
1172
- flb_time_msleep (2000 );
1173
-
1174
- ret = get_output_num ();
1175
- TEST_CHECK (ret > 0 );
1202
+ /* waiting to flush */
1203
+ wait_for_output_num (3000 , & num );
1204
+ if (!TEST_CHECK (num > 0 )) {
1205
+ TEST_MSG ("no outputs" );
1206
+ }
1176
1207
1177
1208
flb_stop (ctx );
1178
1209
flb_destroy (ctx );
@@ -1181,6 +1212,7 @@ void flb_test_metadata_single_record()
1181
1212
void flb_test_metadata_array (void )
1182
1213
{
1183
1214
int ret ;
1215
+ int num ;
1184
1216
flb_ctx_t * ctx ;
1185
1217
int in_ffd ;
1186
1218
int out_ffd ;
@@ -1222,10 +1254,11 @@ void flb_test_metadata_array(void)
1222
1254
ret = flb_start (ctx );
1223
1255
TEST_CHECK (ret == 0 );
1224
1256
1225
- flb_time_msleep (2000 );
1226
-
1227
- ret = get_output_num ();
1228
- TEST_CHECK (ret == 2 );
1257
+ /* waiting to flush */
1258
+ wait_for_output_num (3000 , & num );
1259
+ if (!TEST_CHECK (num == 2 )) {
1260
+ TEST_MSG ("no intended outputs. Expected 2 actual %d" , num );
1261
+ }
1229
1262
1230
1263
flb_stop (ctx );
1231
1264
flb_destroy (ctx );
0 commit comments