ParameterizedTest(LogTransportMockConstructor *log_transport_mock_new, log_proto, test_lines_separated_with_prefix_and_garbage) { LogProtoServer *proto; MultiLineRegexp *re1, *re2; proto = log_proto_prefix_garbage_multiline_server_new( /* 32 bytes max line length, which means that the complete * multi-line block plus one additional line must fit into 32 * bytes. */ (*log_transport_mock_new)( "Foo First Line Bar\n" "Foo Second Line Bar\n" "Foo Third Line Bar\n" "Foo Multiline\n" "multi Bar\n" "Foo final\n", -1, LTM_PADDING, LTM_EOF), get_inited_proto_server_options(), re1 = multi_line_regexp_compile("^Foo", NULL), re2 = multi_line_regexp_compile(" Bar$", NULL)); assert_proto_server_fetch(proto, "Foo First Line", -1); assert_proto_server_fetch(proto, "Foo Second Line", -1); assert_proto_server_fetch(proto, "Foo Third Line", -1); assert_proto_server_fetch(proto, "Foo Multiline\nmulti", -1); log_proto_server_free(proto); multi_line_regexp_free(re1); multi_line_regexp_free(re2); }
static void test_lines_separated_with_prefix_and_suffix(gboolean input_is_stream) { LogProtoServer *proto; MultiLineRegexp *re1, *re2; proto = log_proto_prefix_suffix_multiline_server_new( /* 32 bytes max line length, which means that the complete * multi-line block plus one additional line must fit into 32 * bytes. */ (0 && input_is_stream ? log_transport_mock_stream_new : log_transport_mock_records_new)( "prefix first suffix garbage\n" "prefix multi\n" "suffix garbage\n" "prefix final\n", -1, LTM_PADDING, LTM_EOF), get_inited_proto_server_options(), re1 = multi_line_regexp_compile("^prefix", NULL), re2 = multi_line_regexp_compile("suffix", NULL)); assert_proto_server_fetch(proto, "prefix first suffix", -1); assert_proto_server_fetch(proto, "prefix multi\nsuffix", -1); log_proto_server_free(proto); log_proto_server_options_destroy(&proto_server_options); multi_line_regexp_free(re1); multi_line_regexp_free(re2); };
static void test_lines_separated_with_prefix_and_garbage(gboolean input_is_stream) { LogProtoServer *proto; MultiLineRegexp *re1, *re2; proto = log_proto_prefix_garbage_multiline_server_new( /* 32 bytes max line length, which means that the complete * multi-line block plus one additional line must fit into 32 * bytes. */ (input_is_stream ? log_transport_mock_stream_new : log_transport_mock_records_new)( "Foo First Line Bar\n" "Foo Second Line Bar\n" "Foo Third Line Bar\n" "Foo Multiline\n" "multi Bar\n" "Foo final\n", -1, LTM_PADDING, LTM_EOF), get_inited_proto_server_options(), re1 = multi_line_regexp_compile("^Foo", NULL), re2 = multi_line_regexp_compile(" Bar$", NULL)); assert_proto_server_fetch(proto, "Foo First Line", -1); assert_proto_server_fetch(proto, "Foo Second Line", -1); assert_proto_server_fetch(proto, "Foo Third Line", -1); assert_proto_server_fetch(proto, "Foo Multiline\nmulti", -1); log_proto_server_free(proto); log_proto_server_options_destroy(&proto_server_options); multi_line_regexp_free(re1); multi_line_regexp_free(re2); }
gboolean affile_sd_set_multi_line_garbage(LogDriver *s, const gchar *garbage_regexp, GError **error) { AFFileSourceDriver *self = (AFFileSourceDriver *) s; self->multi_line_garbage = multi_line_regexp_compile(garbage_regexp, error); return self->multi_line_garbage != NULL; }
gboolean affile_sd_set_multi_line_prefix(LogDriver *s, const gchar *prefix_regexp, GError **error) { AFFileSourceDriver *self = (AFFileSourceDriver *) s; self->multi_line_prefix = multi_line_regexp_compile(prefix_regexp, error); return self->multi_line_prefix != NULL; }