Skip to content

Commit 091f8b7

Browse files
authored
Fixed todos in test h2 client (#241)
Remaining TODOs in client_test: h2_client_conn_err_stream_frames_received_long_after_closing: upcoming PR for removing entries from closed_streams_where_frames_might_trickle_in h2_client_stream/conn_err_flow_control: After we get APIs for user to change setting. h2_client_send_goaway_with_push_promises: After we fully support PUSH_PROMISE
1 parent a7e8e62 commit 091f8b7

File tree

5 files changed

+676
-101
lines changed

5 files changed

+676
-101
lines changed

bin/elasticurl/main.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,8 @@ static void s_usage(int exit_code) {
105105
fprintf(stderr, " -t, --trace FILE: dumps logs to FILE instead of stderr.\n");
106106
fprintf(stderr, " -v, --verbose: ERROR|INFO|DEBUG|TRACE: log level to configure. Default is none.\n");
107107
fprintf(stderr, " --version: print the version of elasticurl.\n");
108-
fprintf(stderr, " --http2: HTTP/2 connection required");
109-
fprintf(stderr, " --http1_1: HTTP/1.1 connection required");
108+
fprintf(stderr, " --http2: HTTP/2 connection required\n");
109+
fprintf(stderr, " --http1_1: HTTP/1.1 connection required\n");
110110
fprintf(stderr, " -h, --help\n");
111111
fprintf(stderr, " Display this message and quit.\n");
112112
exit(exit_code);
@@ -463,7 +463,7 @@ static void s_on_client_connection_setup(struct aws_http_connection *connection,
463463
struct elasticurl_ctx *app_ctx = user_data;
464464
if (app_ctx->required_http_version) {
465465
if (aws_http_connection_get_version(connection) != app_ctx->required_http_version) {
466-
fprintf(stderr, "Error. The requested http version, %s, is not supported by the peer.", app_ctx->alpn);
466+
fprintf(stderr, "Error. The requested HTTP version, %s, is not supported by the peer.", app_ctx->alpn);
467467
exit(1);
468468
}
469469
}
@@ -690,7 +690,7 @@ int main(int argc, char **argv) {
690690
}
691691
} else {
692692
if (app_ctx.required_http_version == AWS_HTTP_VERSION_2) {
693-
fprintf(stderr, "Error, we don't support h2c, please use TLS for HTTP2 connection");
693+
fprintf(stderr, "Error, we don't support h2c, please use TLS for HTTP/2 connection");
694694
exit(1);
695695
}
696696
port = 80;

source/h2_connection.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1804,7 +1804,6 @@ static bool s_connection_is_open(const struct aws_http_connection *connection_ba
18041804
/* Send a GOAWAY with the lowest possible last-stream-id */
18051805
static void s_send_goaway(struct aws_h2_connection *connection, enum aws_h2_error_code h2_error_code) {
18061806
AWS_PRECONDITION(aws_channel_thread_is_callers_thread(connection->base.channel_slot->channel));
1807-
AWS_PRECONDITION(!connection->thread_data.is_writing_stopped);
18081807

18091808
uint32_t last_stream_id = aws_min_u32(
18101809
connection->thread_data.latest_peer_initiated_stream_id, connection->thread_data.goaway_sent_last_stream_id);

source/h2_stream.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,8 @@ int aws_h2_stream_encode_data_frame(
364364

365365
/* Failed to write DATA, treat it as a Stream Error */
366366
AWS_H2_STREAM_LOGF(ERROR, stream, "Error encoding stream DATA, %s", aws_error_name(aws_last_error()));
367-
return aws_last_error();
367+
s_send_rst_and_close_stream(stream, aws_h2err_from_last_error());
368+
return AWS_OP_SUCCESS;
368369
}
369370

370371
if (body_complete) {

tests/CMakeLists.txt

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -331,22 +331,22 @@ add_test_case(h2_client_stream_create)
331331
add_test_case(h2_client_unactivated_stream_cleans_up)
332332
add_test_case(h2_client_connection_preface_sent)
333333
add_test_case(h2_client_ping_ack)
334+
add_test_case(h2_client_ping_ack_higher_priority)
334335
add_test_case(h2_client_setting_ack)
335336
add_test_case(h2_client_request_cookie_headers)
336337
add_test_case(h2_client_stream_complete)
337338
add_test_case(h2_client_close)
338-
#TODO add_test_case(h2_client_close_with_incomplete_stream)
339339
add_test_case(h2_client_stream_with_h1_request_message)
340340
add_test_case(h2_client_stream_err_malformed_header)
341-
#TODO add_test_case(h2_client_stream_err_state_forbids_frame)
341+
add_test_case(h2_client_stream_err_state_forbids_frame)
342342
add_test_case(h2_client_conn_err_stream_frames_received_for_idle_stream)
343343
add_test_case(h2_client_stream_ignores_some_frames_received_soon_after_closing)
344344
#TODO add_test_case(h2_client_conn_err_stream_frames_received_long_after_closing)
345-
#TODO add_test_case(h2_client_conn_err_stream_frames_received_after_rst_stream_received)
346-
#TODO add_test_case(h2_client_stream_receive_info_headers)
347-
#TODO add_test_case(h2_client_stream_err_receive_info_headers_after_main)
348-
#TODO add_test_case(h2_client_stream_receive_trailing_headers)
349-
#TODO add_test_case(h2_client_stream_err_receive_trailing_before_main)
345+
add_test_case(h2_client_conn_err_stream_frames_received_after_rst_stream_received)
346+
add_test_case(h2_client_stream_receive_info_headers)
347+
add_test_case(h2_client_stream_err_receive_info_headers_after_main)
348+
add_test_case(h2_client_stream_receive_trailing_headers)
349+
add_test_case(h2_client_stream_err_receive_trailing_before_main)
350350
add_test_case(h2_client_stream_receive_data)
351351
add_test_case(h2_client_stream_err_receive_data_before_headers)
352352
add_test_case(h2_client_stream_send_data)
@@ -362,11 +362,10 @@ add_test_case(h2_client_stream_send_window_update)
362362
add_test_case(h2_client_conn_err_window_update_exceed_max)
363363
add_test_case(h2_client_conn_err_window_update_size_zero)
364364
add_test_case(h2_client_conn_err_initial_window_size_cause_window_exceed_max)
365-
#TODO add_test_case(h2_client_stream_receive_end_stream_before_done_sending)
366-
#TODO add_test_case(h2_client_stream_receive_end_stream_and_rst_before_done_sending)
367-
#TODO add_test_case(h2_client_stream_err_input_stream_failure)
365+
add_test_case(h2_client_stream_receive_end_stream_before_done_sending)
366+
add_test_case(h2_client_stream_receive_end_stream_and_rst_before_done_sending)
367+
add_test_case(h2_client_stream_err_input_stream_failure)
368368
add_test_case(h2_client_stream_err_receive_rst_stream)
369-
add_test_case(h2_client_stream_receive_rst_stream_after_complete_response_ok)
370369
add_test_case(h2_client_push_promise_automatically_rejected)
371370
add_test_case(h2_client_conn_receive_goaway)
372371
add_test_case(h2_client_conn_err_invalid_last_stream_id_goaway)

0 commit comments

Comments
 (0)