X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fsession-apps%2Fecho_client.c;h=5b70d4906bcc601ae6c32a0a13f28a16eafd16f7;hb=8f89dd0;hp=b8a4fb31f268e5b19d839d6ff877b024b80038f5;hpb=4399c2eb848b79762ff52a95fa5d9fab222c73bd;p=vpp.git diff --git a/src/vnet/session-apps/echo_client.c b/src/vnet/session-apps/echo_client.c index b8a4fb31f26..5b70d4906bc 100644 --- a/src/vnet/session-apps/echo_client.c +++ b/src/vnet/session-apps/echo_client.c @@ -257,7 +257,10 @@ echo_client_node_fn (vlib_main_t * vm, vlib_node_runtime_t * node, __sync_fetch_and_add (&ecm->ready_connections, -1); } else - clib_warning ("session AWOL?"); + { + clib_warning ("session AWOL?"); + vec_delete (connections_this_batch, 1, i); + } /* Kick the debug CLI process */ if (ecm->ready_connections == 0) @@ -407,7 +410,13 @@ echo_clients_session_disconnect_callback (stream_session_t * s) static int echo_clients_rx_callback (stream_session_t * s) { - clib_warning ("BUG"); + return 0; +} + +int +echo_client_add_segment_callback (u32 client_index, const ssvm_private_t * sp) +{ + /* New heaps may be added */ return 0; } @@ -417,14 +426,15 @@ static session_cb_vft_t echo_clients = { .session_connected_callback = echo_clients_session_connected_callback, .session_accept_callback = echo_clients_session_create_callback, .session_disconnect_callback = echo_clients_session_disconnect_callback, - .builtin_server_rx_callback = echo_clients_rx_callback + .builtin_app_rx_callback = echo_clients_rx_callback, + .add_segment_callback = echo_client_add_segment_callback }; /* *INDENT-ON* */ static clib_error_t * echo_clients_attach (u8 * appns_id, u64 appns_flags, u64 appns_secret) { - u32 prealloc_fifos, segment_size = 2 << 20; + u32 prealloc_fifos, segment_size = 256 << 20; echo_client_main_t *ecm = &echo_client_main; vnet_app_attach_args_t _a, *a = &_a; u64 options[16]; @@ -443,6 +453,7 @@ echo_clients_attach (u8 * appns_id, u64 appns_flags, u64 appns_secret) options[APP_OPTIONS_ACCEPT_COOKIE] = 0x12345678; options[APP_OPTIONS_SEGMENT_SIZE] = segment_size; + options[APP_OPTIONS_ADD_SEGMENT_SIZE] = segment_size; options[APP_OPTIONS_RX_FIFO_SIZE] = ecm->fifo_size; options[APP_OPTIONS_TX_FIFO_SIZE] = ecm->fifo_size; options[APP_OPTIONS_PRIVATE_SEGMENT_COUNT] = ecm->private_segment_count; @@ -509,14 +520,13 @@ echo_clients_connect (vlib_main_t * vm, u32 n_clients) vnet_connect_args_t _a, *a = &_a; clib_error_t *error = 0; int i; + + memset (a, 0, sizeof (*a)); for (i = 0; i < n_clients; i++) { - memset (a, 0, sizeof (*a)); - a->uri = (char *) ecm->connect_uri; a->api_context = i; a->app_index = ecm->app_index; - a->mp = 0; if ((error = vnet_connect_uri (a))) return error; @@ -543,15 +553,16 @@ echo_clients_command_fn (vlib_main_t * vm, { echo_client_main_t *ecm = &echo_client_main; vlib_thread_main_t *thread_main = vlib_get_thread_main (); - uword *event_data = 0, event_type; - u8 *default_uri = (u8 *) "tcp://6.0.1.1/1234", *appns_id = 0; u64 tmp, total_bytes, appns_flags = 0, appns_secret = 0; f64 test_timeout = 20.0, syn_timeout = 20.0, delta; + char *default_uri = "tcp://6.0.1.1/1234"; + uword *event_data = 0, event_type; f64 time_before_connects; u32 n_clients = 1; int preallocate_sessions = 0; char *transfer_type; clib_error_t *error = 0; + u8 *appns_id = 0; int i; ecm->bytes_to_send = 8192; @@ -622,7 +633,7 @@ echo_clients_command_fn (vlib_main_t * vm, else if (unformat (input, "test-bytes")) ecm->test_bytes = 1; else - return clib_error_return (0, "unknown input `%U'", + return clib_error_return (0, "failed: unknown input `%U'", format_unformat_error, input); } @@ -644,8 +655,8 @@ echo_clients_command_fn (vlib_main_t * vm, if (!ecm->connect_uri) { - clib_warning ("No uri provided. Using default: %v", default_uri); - ecm->connect_uri = default_uri; + clib_warning ("No uri provided. Using default: %s", default_uri); + ecm->connect_uri = format (0, "%s%c", default_uri, 0); } #if ECHO_CLIENT_PTHREAD @@ -785,6 +796,7 @@ cleanup: } if (error) ec_cli_output ("test failed"); + vec_free (ecm->connect_uri); return error; }