#!/bin/sh

cd tests

rm -rf tests.log

# known good tests
TESTS="\
headers_add \
headers_add_array \
headers_set \
headers_erase_index \
headers_erase \
headers_erase_value \
headers_clear \
headers_get_all \
h2_headers_request_pseudos_get_set \
h2_headers_response_pseudos_get_set \
message_sanity_check \
message_request_method \
message_request_path \
message_response_status \
message_refcounts \
message_with_existing_headers \
h1_test_get_request \
h1_test_request_bad_version \
h1_test_response_unsupported_version \
h1_test_response_1_0 \
h1_test_get_status_code \
h1_test_overflow_scratch_space \
h1_test_receive_request_headers \
h1_test_receive_response_headers \
h1_test_get_transfer_encoding_flags \
h1_test_body_unchunked \
h1_test_body_chunked \
h1_decode_trailers \
h1_decode_one_byte_at_a_time \
h1_decode_messages_at_random_intervals \
h1_decode_bad_requests_and_assert_failure \
h1_decode_bad_responses_and_assert_failure \
h1_test_extraneous_buffer_data_ensure_not_processed \
h1_test_ignore_chunk_extensions \
h1_encoder_content_length_put_request_headers \
h1_encoder_transfer_encoding_chunked_put_request_headers \
h1_encoder_transfer_encoding_chunked_put_request_multiple_te_headers \
h1_encoder_transfer_encoding_chunked_put_request_headers_case_insensitivity \
h1_encoder_transfer_encoding_chunked_and_content_length_put_request_headers \
h1_encoder_transfer_encoding_not_chunked_put_request_headers \
h1_encoder_transfer_encoding_set_body_stream_errors \
h1_encoder_transfer_encoding_chunked_multiple_put_request_headers \
h1_encoder_transfer_encoding_chunked_not_final_encoding_put_request_headers \
h1_encoder_transfer_encoding_not_ending_in_chunked_put_request_headers \
h1_encoder_rejects_bad_method \
h1_encoder_rejects_missing_method \
h1_encoder_rejects_bad_path \
h1_encoder_rejects_missing_path \
h1_encoder_rejects_bad_header_name \
h1_encoder_rejects_bad_header_value \
h1_client_sanity_check \
h1_client_request_send_1liner \
h1_client_request_send_headers \
h1_client_request_send_body \
h1_client_request_send_body_chunked \
h1_client_request_send_chunked_trailer \
h1_client_request_forbidden_trailer \
h1_client_request_send_empty_chunked_trailer \
h1_client_request_send_large_body \
h1_client_request_send_large_body_chunked \
h1_client_request_send_large_head \
h1_client_request_content_length_0_ok \
h1_client_request_waits_for_chunks \
h1_client_request_send_chunk_from_chunk_complete_callback \
h1_client_request_write_chunk_as_write_completes_regression \
h1_client_request_send_chunked_extensions \
h1_client_request_send_large_chunk_extensions \
h1_client_request_send_chunk_size_0_ok \
h1_client_request_send_chunk_size_0_with_extensions_ok \
h1_client_request_content_length_too_small_is_error \
h1_client_request_content_length_too_large_is_error \
h1_client_request_chunk_size_too_small_is_error \
h1_client_request_chunk_size_too_large_is_error \
h1_client_request_chunks_cancelled_by_channel_shutdown \
h1_client_request_send_multiple \
h1_client_request_send_multiple_chunked_encoding \
h1_client_request_close_header_ends_connection \
h1_client_request_close_header_with_pipelining \
h1_client_request_close_header_with_chunked_encoding_and_pipelining \
h1_client_stream_release_after_complete \
h1_client_stream_release_before_complete \
h1_client_response_get_1liner \
h1_client_response_get_headers \
h1_client_response_get_body \
h1_client_response_get_no_body_for_head_request \
h1_client_response_get_no_body_from_304 \
h1_client_response_get_100 \
h1_client_response_get_1_from_multiple_io_messages \
h1_client_response_get_multiple_from_1_io_message \
h1_client_response_with_bad_data_shuts_down_connection \
h1_client_response_with_too_much_data_shuts_down_connection \
h1_client_response_arrives_before_request_done_sending_is_ok \
h1_client_response_arrives_before_request_chunks_done_sending_is_ok \
h1_client_response_without_request_shuts_down_connection \
h1_client_response_close_header_ends_connection \
h1_client_response_close_header_with_pipelining \
h1_client_respects_stream_window \
h1_client_connection_window_with_buffer \
h1_client_connection_window_with_small_buffer \
h1_client_request_cancelled_by_channel_shutdown \
h1_client_multiple_requests_cancelled_by_channel_shutdown \
h1_client_new_request_fails_if_channel_shut_down \
h1_client_error_from_outgoing_body_callback_stops_decoder \
h1_client_error_from_incoming_headers_callback_stops_decoder \
h1_client_error_from_incoming_headers_done_callback_stops_decoder \
h1_client_error_from_incoming_body_callback_stops_decoder \
h1_client_close_from_off_thread_makes_not_open \
h1_client_close_from_on_thread_makes_not_open \
h1_client_unactivated_stream_cleans_up \
h1_client_new_request_allowed \
h1_client_midchannel_sanity_check \
h1_client_midchannel_read \
h1_client_midchannel_read_immediately \
h1_client_midchannel_read_with_small_downstream_window \
h1_client_midchannel_write \
h1_client_midchannel_write_continues_after_shutdown_in_read_dir \
h1_client_midchannel_requires_switching_protocols \
h1_client_switching_protocols_fails_pending_requests \
h1_client_switching_protocols_fails_subsequent_requests \
h1_client_switching_protocols_requires_downstream_handler \
strutil_trim_http_whitespace \
strutil_is_http_token \
strutil_is_lowercase_http_token \
strutil_is_http_field_value \
strutil_is_http_reason_phrase \
strutil_is_http_request_target \
strutil_is_http_pseudo_header_name \
tls_download_medium_file_h1 \
tls_download_medium_file_h2 \
websocket_decoder_sanity_check \
websocket_decoder_simplest_frame \
websocket_decoder_rsv \
websocket_decoder_data_frame \
websocket_decoder_stops_at_frame_end \
websocket_decoder_masking \
websocket_decoder_extended_length_2byte \
websocket_decoder_extended_length_8byte \
websocket_decoder_1byte_at_a_time \
websocket_decoder_fail_on_unknown_opcode \
websocket_decoder_fragmented_message \
websocket_decoder_fail_on_bad_fragmentation \
websocket_decoder_control_frame_cannot_be_fragmented \
websocket_decoder_utf8_text \
websocket_decoder_fail_on_bad_utf8_text \
websocket_decoder_fragmented_utf8_text \
websocket_decoder_fail_on_fragmented_bad_utf8_text \
websocket_decoder_on_frame_callback_can_fail_decoder \
websocket_decoder_on_payload_callback_can_fail_decoder \
websocket_encoder_sanity_check \
websocket_encoder_simplest_frame \
websocket_encoder_rsv \
websocket_encoder_data_frame \
websocket_encoder_fail_if_payload_exceeds_stated_length \
websocket_encoder_masking \
websocket_encoder_extended_length \
websocket_encoder_1_byte_at_a_time \
websocket_encoder_fragmented_message \
websocket_encoder_fragmentation_failure_checks \
websocket_encoder_payload_callback_can_fail_encoder \
websocket_handler_sanity_check \
websocket_handler_refcounting \
websocket_handler_send_frame \
websocket_handler_send_frame_off_thread \
websocket_handler_send_multiple_frames \
websocket_handler_send_huge_frame \
websocket_handler_send_payload_slowly \
websocket_handler_send_payload_with_pauses \
websocket_handler_sends_nothing_after_close_frame \
websocket_handler_send_frames_always_complete \
websocket_handler_send_one_io_msg_at_a_time \
websocket_handler_delayed_write_completion \
websocket_handler_send_halts_if_payload_fn_returns_false \
websocket_handler_shutdown_automatically_sends_close_frame \
websocket_handler_shutdown_handles_queued_close_frame \
websocket_handler_shutdown_handles_unexpected_write_error \
websocket_handler_close_on_thread \
websocket_handler_close_off_thread \
websocket_handler_read_frame \
websocket_handler_read_multiple_frames \
websocket_handler_read_frames_split_across_io_messages \
websocket_handler_read_frames_complete_on_shutdown \
websocket_handler_read_halts_if_begin_fn_returns_false \
websocket_handler_read_halts_if_payload_fn_returns_false \
websocket_handler_read_halts_if_complete_fn_returns_false \
websocket_handler_window_manual_increment \
websocket_handler_window_manual_increment_off_thread \
websocket_handler_sends_pong_automatically \
websocket_handler_wont_send_pong_after_close_frame \
websocket_midchannel_sanity_check \
websocket_midchannel_write_message \
websocket_midchannel_write_multiple_messages \
websocket_midchannel_write_huge_message \
websocket_midchannel_read_message \
websocket_midchannel_read_multiple_messages \
websocket_boot_sanity_check \
websocket_boot_golden_path \
websocket_boot_fail_at_http_connect \
websocket_boot_fail_at_http_connect_error \
websocket_boot_fail_at_new_request \
websocket_boot_fail_at_activate_request \
websocket_boot_fail_before_response_headers \
websocket_boot_fail_before_response_headers_done \
websocket_boot_fail_at_new_handler \
websocket_boot_report_unexpected_http_shutdown \
websocket_boot_fail_from_handshake_rejection \
websocket_boot_fail_before_handshake_rejection_body \
websocket_boot_fail_before_handshake_rejection_stream_complete \
websocket_boot_fail_from_invalid_upgrade_header \
websocket_boot_fail_from_missing_upgrade_header \
websocket_boot_fail_from_invalid_connection_header \
websocket_boot_fail_from_invalid_sec_websocket_accept_header \
websocket_boot_fail_from_unsupported_sec_websocket_extensions_in_request \
websocket_boot_fail_from_unsupported_sec_websocket_extensions_in_response \
websocket_boot_ok_with_sec_websocket_protocol_header \
websocket_boot_ok_with_sec_websocket_protocol_split_across_headers \
websocket_boot_fail_from_missing_sec_websocket_protocol_header \
websocket_boot_fail_from_invalid_sec_websocket_protocol_header \
websocket_handshake_key_max_length \
websocket_handshake_key_randomness \
hpack_encode_integer \
hpack_decode_integer_5bits \
hpack_decode_integer_5bits_one_byte_at_a_time \
hpack_decode_integer_14bits \
hpack_decode_integer_14bits_one_byte_at_a_time \
hpack_decode_integer_8bits \
hpack_decode_integer_8bits_one_byte_at_a_time \
hpack_decode_integer_21bits \
hpack_decode_integer_21bits_one_byte_at_a_time \
hpack_decode_integer_ongoing \
hpack_decode_integer_ongoing_one_byte_at_a_time \
hpack_decode_integer_too_big \
hpack_decode_integer_too_big_one_byte_at_a_time \
hpack_decode_integer_few_in_a_row \
hpack_decode_integer_few_in_a_row_one_byte_at_a_time \
hpack_decode_string_blank \
hpack_decode_string_uncompressed \
hpack_decode_string_uncompressed_one_byte_at_a_time \
hpack_decode_string_huffman \
hpack_decode_string_huffman_one_byte_at_a_time \
hpack_decode_string_ongoing \
hpack_decode_string_ongoing_one_byte_at_a_time \
hpack_decode_string_short_buffer \
hpack_decode_string_short_buffer_one_byte_at_a_time \
hpack_static_table_find \
hpack_static_table_get \
hpack_dynamic_table_find \
hpack_dynamic_table_get \
hpack_decode_indexed_from_dynamic_table \
hpack_dynamic_table_empty_value \
hpack_dynamic_table_with_empty_header \
hpack_dynamic_table_size_update_from_setting \
h2_header_empty_payload \
h2_header_ex_2_1 \
h2_header_ex_2_1_one_byte_at_a_time \
h2_header_ex_2_2 \
h2_header_ex_2_2_one_byte_at_a_time \
h2_header_ex_2_3 \
h2_header_ex_2_3_one_byte_at_a_time \
h2_header_ex_2_4 \
h2_header_ex_2_4_one_byte_at_a_time \
h2_header_ex_3 \
h2_header_ex_3_one_byte_at_a_time \
h2_header_ex_4 \
h2_header_ex_4_one_byte_at_a_time \
h2_header_ex_5 \
h2_header_ex_5_one_byte_at_a_time \
h2_header_ex_6 \
h2_header_ex_6_one_byte_at_a_time \
h2_encoder_data \
h2_encoder_data_stalled \
h2_encoder_data_stalled_completely \
h2_encoder_headers \
h2_encoder_priority \
h2_encoder_rst_stream \
h2_encoder_settings \
h2_encoder_settings_ack \
h2_encoder_push_promise \
h2_encoder_ping \
h2_encoder_goaway \
h2_encoder_window_update \
h2_decoder_sanity_check \
h2_decoder_data \
h2_decoder_data_one_byte_at_a_time \
h2_decoder_data_padded \
h2_decoder_data_padded_one_byte_at_a_time \
h2_decoder_data_pad_length_zero \
h2_decoder_data_pad_length_zero_one_byte_at_a_time \
h2_decoder_data_empty \
h2_decoder_data_empty_one_byte_at_a_time \
h2_decoder_data_empty_padded \
h2_decoder_data_empty_padded_one_byte_at_a_time \
h2_decoder_data_ignores_unknown_flags \
h2_decoder_data_ignores_unknown_flags_one_byte_at_a_time \
h2_decoder_data_payload_max_size_update \
h2_decoder_data_payload_max_size_update_one_byte_at_a_time \
h2_decoder_err_data_payload_exceed_max_size \
h2_decoder_err_data_payload_exceed_max_size_one_byte_at_a_time \
h2_decoder_err_data_requires_stream_id \
h2_decoder_err_data_requires_stream_id_one_byte_at_a_time \
h2_decoder_err_payload_too_small_for_pad_length \
h2_decoder_err_payload_too_small_for_pad_length_one_byte_at_a_time \
h2_decoder_stream_id_ignores_reserved_bit \
h2_decoder_stream_id_ignores_reserved_bit_one_byte_at_a_time \
h2_decoder_headers \
h2_decoder_headers_one_byte_at_a_time \
h2_decoder_headers_padded \
h2_decoder_headers_padded_one_byte_at_a_time \
h2_decoder_headers_priority \
h2_decoder_headers_priority_one_byte_at_a_time \
h2_decoder_headers_ignores_unknown_flags \
h2_decoder_headers_ignores_unknown_flags_one_byte_at_a_time \
h2_decoder_headers_response_informational \
h2_decoder_headers_response_informational_one_byte_at_a_time \
h2_decoder_headers_request \
h2_decoder_headers_request_one_byte_at_a_time \
h2_decoder_headers_cookies \
h2_decoder_headers_cookies_one_byte_at_a_time \
h2_decoder_headers_trailer \
h2_decoder_headers_trailer_one_byte_at_a_time \
h2_decoder_headers_empty_trailer \
h2_decoder_headers_empty_trailer_one_byte_at_a_time \
h2_decoder_err_headers_requires_stream_id \
h2_decoder_err_headers_requires_stream_id_one_byte_at_a_time \
h2_decoder_err_headers_payload_too_small_for_padding \
h2_decoder_err_headers_payload_too_small_for_padding_one_byte_at_a_time \
h2_decoder_err_headers_payload_too_small_for_priority \
h2_decoder_err_headers_payload_too_small_for_priority_one_byte_at_a_time \
h2_decoder_malformed_headers_blank_name \
h2_decoder_malformed_headers_blank_name_one_byte_at_a_time \
h2_decoder_malformed_headers_illegal_name \
h2_decoder_malformed_headers_illegal_name_one_byte_at_a_time \
h2_decoder_malformed_headers_response_to_server \
h2_decoder_malformed_headers_response_to_server_one_byte_at_a_time \
h2_decoder_malformed_headers_request_to_client \
h2_decoder_malformed_headers_request_to_client_one_byte_at_a_time \
h2_decoder_malformed_headers_mixed_pseudoheaders \
h2_decoder_malformed_headers_mixed_pseudoheaders_one_byte_at_a_time \
h2_decoder_malformed_headers_late_pseudoheaders \
h2_decoder_malformed_headers_late_pseudoheaders_one_byte_at_a_time \
h2_decoder_malformed_headers_trailer_must_end_stream \
h2_decoder_malformed_headers_trailer_must_end_stream_one_byte_at_a_time \
h2_decoder_malformed_header_continues_hpack_parsing \
h2_decoder_malformed_header_continues_hpack_parsing_one_byte_at_a_time \
h2_decoder_continuation \
h2_decoder_continuation_one_byte_at_a_time \
h2_decoder_continuation_ignores_unknown_flags \
h2_decoder_continuation_ignores_unknown_flags_one_byte_at_a_time \
h2_decoder_continuation_header_field_spans_frames \
h2_decoder_continuation_header_field_spans_frames_one_byte_at_a_time \
h2_decoder_continuation_many_frames \
h2_decoder_continuation_many_frames_one_byte_at_a_time \
h2_decoder_continuation_empty_payloads \
h2_decoder_continuation_empty_payloads_one_byte_at_a_time \
h2_decoder_err_continuation_frame_expected \
h2_decoder_err_continuation_frame_expected_one_byte_at_a_time \
h2_decoder_err_continuation_frame_same_stream_expected \
h2_decoder_err_continuation_frame_same_stream_expected_one_byte_at_a_time \
h2_decoder_err_partial_header \
h2_decoder_err_partial_header_one_byte_at_a_time \
h2_decoder_err_bad_hpack_data \
h2_decoder_err_bad_hpack_data_one_byte_at_a_time \
h2_decoder_priority \
h2_decoder_priority_one_byte_at_a_time \
h2_decoder_priority_ignores_unknown_flags \
h2_decoder_priority_ignores_unknown_flags_one_byte_at_a_time \
h2_decoder_err_priority_requires_stream_id \
h2_decoder_err_priority_requires_stream_id_one_byte_at_a_time \
h2_decoder_err_priority_payload_too_small \
h2_decoder_err_priority_payload_too_small_one_byte_at_a_time \
h2_decoder_err_priority_payload_too_large \
h2_decoder_err_priority_payload_too_large_one_byte_at_a_time \
h2_decoder_rst_stream \
h2_decoder_rst_stream_one_byte_at_a_time \
h2_decoder_rst_stream_ignores_unknown_flags \
h2_decoder_rst_stream_ignores_unknown_flags_one_byte_at_a_time \
h2_decoder_err_rst_stream_requires_stream_id \
h2_decoder_err_rst_stream_requires_stream_id_one_byte_at_a_time \
h2_decoder_err_rst_stream_payload_too_small \
h2_decoder_err_rst_stream_payload_too_small_one_byte_at_a_time \
h2_decoder_err_rst_stream_payload_too_large \
h2_decoder_err_rst_stream_payload_too_large_one_byte_at_a_time \
h2_decoder_settings \
h2_decoder_settings_one_byte_at_a_time \
h2_decoder_settings_empty \
h2_decoder_settings_empty_one_byte_at_a_time \
h2_decoder_settings_ack \
h2_decoder_settings_ack_one_byte_at_a_time \
h2_decoder_settings_ignores_unknown_ids \
h2_decoder_settings_ignores_unknown_ids_one_byte_at_a_time \
h2_decoder_settings_ignores_unknown_flags \
h2_decoder_settings_ignores_unknown_flags_one_byte_at_a_time \
h2_decoder_err_settings_ack_with_data \
h2_decoder_err_settings_ack_with_data_one_byte_at_a_time \
h2_decoder_err_settings_forbids_stream_id \
h2_decoder_err_settings_forbids_stream_id_one_byte_at_a_time \
h2_decoder_err_settings_payload_size \
h2_decoder_err_settings_payload_size_one_byte_at_a_time \
h2_decoder_err_settings_invalid_values_enable_push \
h2_decoder_err_settings_invalid_values_enable_push_one_byte_at_a_time \
h2_decoder_err_settings_invalid_values_initial_window_size \
h2_decoder_err_settings_invalid_values_initial_window_size_one_byte_at_a_time \
h2_decoder_err_settings_invalid_values_max_frame_size \
h2_decoder_err_settings_invalid_values_max_frame_size_one_byte_at_a_time \
h2_decoder_push_promise \
h2_decoder_push_promise_one_byte_at_a_time \
h2_decoder_push_promise_ignores_unknown_flags \
h2_decoder_push_promise_ignores_unknown_flags_one_byte_at_a_time \
h2_decoder_push_promise_continuation \
h2_decoder_push_promise_continuation_one_byte_at_a_time \
h2_decoder_err_push_promise_continuation_expected \
h2_decoder_err_push_promise_continuation_expected_one_byte_at_a_time \
h2_decoder_err_push_promise_requires_stream_id \
h2_decoder_err_push_promise_requires_stream_id_one_byte_at_a_time \
h2_decoder_err_push_promise_requires_promised_stream_id \
h2_decoder_err_push_promise_requires_promised_stream_id_one_byte_at_a_time \
h2_decoder_err_push_promise_with_enable_push_0 \
h2_decoder_err_push_promise_with_enable_push_0_one_byte_at_a_time \
h2_decoder_malformed_push_promise_must_be_request_1 \
h2_decoder_malformed_push_promise_must_be_request_1_one_byte_at_a_time \
h2_decoder_malformed_push_promise_must_be_request_2 \
h2_decoder_malformed_push_promise_must_be_request_2_one_byte_at_a_time \
h2_decoder_ping \
h2_decoder_ping_one_byte_at_a_time \
h2_decoder_ping_ack \
h2_decoder_ping_ack_one_byte_at_a_time \
h2_decoder_err_ping_forbids_stream_id \
h2_decoder_err_ping_forbids_stream_id_one_byte_at_a_time \
h2_decoder_err_ping_payload_too_small \
h2_decoder_err_ping_payload_too_small_one_byte_at_a_time \
h2_decoder_err_ping_payload_too_large \
h2_decoder_err_ping_payload_too_large_one_byte_at_a_time \
h2_decoder_goaway \
h2_decoder_goaway_one_byte_at_a_time \
h2_decoder_goaway_empty \
h2_decoder_goaway_empty_one_byte_at_a_time \
h2_decoder_err_goaway_forbids_stream_id \
h2_decoder_err_goaway_forbids_stream_id_one_byte_at_a_time \
h2_decoder_err_goaway_payload_too_small \
h2_decoder_err_goaway_payload_too_small_one_byte_at_a_time \
h2_decoder_window_update_connection \
h2_decoder_window_update_connection_one_byte_at_a_time \
h2_decoder_window_update_stream \
h2_decoder_window_update_stream_one_byte_at_a_time \
h2_decoder_err_window_update_payload_too_small \
h2_decoder_err_window_update_payload_too_small_one_byte_at_a_time \
h2_decoder_err_window_update_payload_too_large \
h2_decoder_err_window_update_payload_too_large_one_byte_at_a_time \
h2_decoder_unknown_frame_type_ignored \
h2_decoder_unknown_frame_type_ignored_one_byte_at_a_time \
h2_decoder_many_frames_in_a_row \
h2_decoder_many_frames_in_a_row_one_byte_at_a_time \
h2_decoder_preface_from_server \
h2_decoder_preface_from_server_one_byte_at_a_time \
h2_decoder_err_bad_preface_from_server_1 \
h2_decoder_err_bad_preface_from_server_1_one_byte_at_a_time \
h2_decoder_err_bad_preface_from_server_2 \
h2_decoder_err_bad_preface_from_server_2_one_byte_at_a_time \
h2_decoder_err_bad_preface_from_server_3 \
h2_decoder_err_bad_preface_from_server_3_one_byte_at_a_time \
h2_decoder_preface_from_client \
h2_decoder_preface_from_client_one_byte_at_a_time \
h2_decoder_err_bad_preface_from_client_1 \
h2_decoder_err_bad_preface_from_client_1_one_byte_at_a_time \
h2_decoder_err_bad_preface_from_client_2 \
h2_decoder_err_bad_preface_from_client_2_one_byte_at_a_time \
h2_decoder_err_bad_preface_from_client_3 \
h2_decoder_err_bad_preface_from_client_3_one_byte_at_a_time \
h2_client_sanity_check \
h2_client_stream_create \
h2_client_stream_release_after_complete \
h2_client_unactivated_stream_cleans_up \
h2_client_connection_preface_sent \
h2_client_auto_ping_ack \
h2_client_auto_ping_ack_higher_priority \
h2_client_auto_settings_ack \
h2_client_stream_complete \
h2_client_close \
h2_client_connection_init_settings_applied_after_ack_by_peer \
h2_client_stream_with_h1_request_message \
h2_client_stream_with_cookies_headers \
h2_client_stream_err_malformed_header \
h2_client_stream_err_state_forbids_frame \
h2_client_conn_err_stream_frames_received_for_idle_stream \
h2_client_stream_ignores_some_frames_received_soon_after_closing \
h2_client_conn_err_stream_frames_received_soon_after_closing \
h2_client_stream_err_stream_frames_received_soon_after_rst_stream_received \
h2_client_conn_err_stream_frames_received_after_removed_from_cache \
h2_client_stream_receive_info_headers \
h2_client_stream_err_receive_info_headers_after_main \
h2_client_stream_receive_trailing_headers \
h2_client_stream_err_receive_trailing_before_main \
h2_client_stream_receive_data \
h2_client_stream_err_receive_data_before_headers \
h2_client_stream_err_receive_data_not_match_content_length \
h2_client_stream_send_data \
h2_client_stream_send_lots_of_data \
h2_client_stream_send_stalled_data \
h2_client_stream_send_data_controlled_by_stream_window_size \
h2_client_stream_send_data_controlled_by_negative_stream_window_size \
h2_client_stream_send_data_controlled_by_connection_window_size \
h2_client_stream_send_data_controlled_by_connection_and_stream_window_size \
h2_client_stream_send_window_update \
h2_client_stream_send_window_update \
h2_client_stream_err_received_data_flow_cont252\
h2_client_conn_err_received_data_flow_control \
h2_client_conn_err_window_update_exceed_max \
h2_client_conn_err_window_update_size_zero \
h2_client_conn_err_initial_window_size_settings_cause_window_exceed_max \
h2_client_stream_receive_end_stream_before_done_sending \
h2_client_stream_receive_end_stream_and_rst_before_done_sending \
h2_client_stream_err_input_stream_failure \
h2_client_stream_err_receive_rst_stream \
h2_client_push_promise_automatically_rejected \
h2_client_conn_receive_goaway \
h2_client_conn_receive_goaway_debug_data \
h2_client_conn_err_invalid_last_stream_id_goaway \
h2_client_change_settings_succeed \
h2_client_change_settings_failed_no_ack_received \
h2_client_manual_window_management_disabled_auto_window_update \
h2_client_manual_window_management_user_send_stream_window_update \
h2_client_manual_window_management_user_send_stream_window_update_with_padding \
h2_client_manual_window_management_user_send_stream_window_update_overflow \
h2_client_manual_window_management_user_send_conn_window_update \
h2_client_manual_window_management_user_send_conn_window_update_with_padding \
h2_client_manual_window_management_user_send_connection_window_update_overflow \
h2_client_send_ping_successfully_receive_ack \
h2_client_send_ping_no_ack_received \
h2_client_conn_err_extraneous_ping_ack_received \
h2_client_conn_err_mismatched_ping_ack_received \
h2_client_empty_initial_settings \
h2_client_conn_failed_initial_settings_completed_not_invoked \
h2_client_stream_reset_stream \
h2_client_stream_reset_ignored_stream_closed \
h2_client_stream_reset_failed_before_activate_called \
h2_client_stream_keeps_alive_for_cross_thread_task \
h2_client_stream_get_received_reset_error_code \
h2_client_stream_get_sent_reset_error_code \
h2_client_new_request_allowed \
h2_client_send_multiple_goaway \
h2_client_get_sent_goaway \
h2_client_get_received_goaway \
h2_client_request_apis_failed_after_connection_begin_shutdown \
h2_client_get_local_settings \
h2_client_get_remote_settings \
h2_client_error_from_outgoing_body_callback_reset_stream \
h2_client_error_from_incoming_headers_callback_reset_stream \
h2_client_error_from_incoming_headers_done_callback_reset_stream \
h2_client_error_from_incoming_body_callback_reset_stream \
h2_client_manual_data_write \
h2_client_manual_data_write_with_body \
h2_client_manual_data_write_no_data \
h2_client_manual_data_write_connection_close \
server_new_destroy \
connection_setup_shutdown \
connection_setup_shutdown_tls \
connection_setup_shutdown_proxy_setting_on_ev_not_found \
connection_setup_shutdown_pinned_event_loop \
connection_h2_prior_knowledge \
connection_h2_prior_knowledge_not_work_with_tls \
connection_customized_alpn \
connection_customized_alpn_error_with_unknown_return_string \
test_connection_manager_setup_shutdown \
test_connection_manager_acquire_release_mix_synchronous \
test_connection_manager_connect_callback_failure \
test_connection_manager_connect_immediate_failure \
test_connection_manager_proxy_setup_shutdown \
test_connection_manager_idle_culling_single \
test_connection_manager_idle_culling_many \
test_connection_manager_idle_culling_mixture \
test_connection_manager_idle_culling_refcount \
test_connection_manager_single_connection \
test_connection_manager_single_http2_connection \
test_connection_manager_single_http2_connection_failed \
test_connection_manager_single_http2_connection_with_settings \
test_connection_manager_many_connections \
test_connection_manager_many_http2_connections \
test_connection_manager_acquire_release \
test_connection_manager_close_and_release \
test_connection_manager_acquire_release_mix \
h1_server_sanity_check \
h1_server_receive_1line_request \
h1_server_receive_headers \
h1_server_receive_body \
h1_server_receive_1_request_from_multiple_io_messages \
h1_server_receive_multiple_requests_from_1_io_messages \
h1_server_receive_bad_request_shut_down_connection \
h1_server_receive_close_header_ends_connection \
h1_server_receive_close_header_more_requests_illegal \
h1_server_send_1line_response \
h1_server_send_response_headers \
h1_server_send_response_body \
h1_server_send_response_to_HEAD_request \
h1_server_send_304_response \
h1_server_send_multiple_responses_in_order \
h1_server_send_multiple_responses_out_of_order \
h1_server_send_multiple_responses_out_of_order_only_one_sent \
h1_server_send_response_before_request_finished \
h1_server_send_response_large_body \
h1_server_send_response_large_head \
h1_server_send_close_header_ends_connection \
h1_server_send_close_header_with_pipelining \
h1_server_close_before_message_is_sent \
h1_server_error_from_incoming_request_callback_stops_decoder \
h1_server_error_from_incoming_headers_callback_stops_decoder \
h1_server_error_from_incoming_headers_done_callback_stops_decoder \
h1_server_error_from_incoming_request_done_callback_stops_decoder \
h1_server_error_from_incoming_body_callback_stops_decoder \
h1_server_error_from_outgoing_body_callback_stops_sending \
h1_server_close_from_off_thread_makes_not_open \
h1_server_close_from_on_thread_makes_not_open \
test_http_forwarding_proxy_connection_proxy_target \
test_http_forwarding_proxy_connection_channel_failure \
test_http_forwarding_proxy_connection_connect_failure \
test_http_forwarding_proxy_request_transform \
test_http_forwarding_proxy_request_transform_basic_auth \
test_http_forwarding_proxy_request_transform_legacy_basic_auth \
test_http_proxy_request_transform_kerberos \
test_http_proxy_kerberos_token_failure \
test_http_proxy_kerberos_connect_failure \
test_http_proxy_adaptive_identity_success \
test_http_proxy_adaptive_kerberos_success \
test_http_proxy_adaptive_ntlm_success \
test_http_proxy_adaptive_failure \
test_http_forwarding_proxy_uri_rewrite \
test_http_forwarding_proxy_uri_rewrite_options_star \
test_http_tunnel_proxy_connection_success \
test_https_tunnel_proxy_connection_success \
test_http_tunnel_proxy_connection_failure_connect \
test_https_tunnel_proxy_connection_failure_connect \
test_https_tunnel_proxy_connection_failure_tls \
test_http_connection_monitor_options_is_valid \
test_http_connection_monitor_rw_above \
test_http_connection_monitor_r_above \
test_http_connection_monitor_w_above \
test_http_connection_monitor_write_then_read_above \
test_http_connection_monitor_below_but_undetectable \
test_http_connection_monitor_rw_below \
test_http_connection_monitor_below_then_above \
test_http_connection_monitor_failure_reset_when_empty \
test_http_connection_monitor_bytes_overflow \
test_http_connection_monitor_time_overflow \
test_http_connection_monitor_shutdown \
test_http_stats_trivial \
test_http_stats_basic_request \
test_http_stats_split_across_gather_boundary \
test_http_stats_pipelined \
test_http_stats_multiple_requests_with_gap \
h2_sm_sanity_check \
h2_sm_mock_connection \
h2_sm_mock_multiple_connections \
h2_sm_mock_bad_connection_acquired \
h2_sm_mock_connections_closed_before_request_made \
h2_sm_mock_max_concurrent_streams_remote \
h2_sm_mock_fetch_metric \
h2_sm_mock_complete_stream \
h2_sm_mock_ideal_num_streams \
h2_sm_mock_large_ideal_num_streams \
h2_sm_mock_goaway \
h2_sm_connection_ping \
h2_sm_acquire_stream \
h2_sm_acquire_stream_multiple_connections \
h2_sm_closing_before_connection_acquired \
h2_sm_close_connection_on_server_error \
random_access_set_sanitize_test \
random_access_set_insert_test \
random_access_set_get_random_test \
random_access_set_exist_test \
random_access_set_remove_test \
random_access_set_owns_element_test \
"

for TEST in $TESTS
do
./aws-c-http-tests $TEST >> tests.log
done

sed  -e '/OK/ s/^/PASS: / ; /FAILED/ s/^/FAIL: / ; /ERROR/ s/^/FAIL: /' tests.log
