}
}
- if (hcm->repeat)
- hc_session->stats.start =
- vlib_time_now (vlib_get_main_by_index (s->thread_index));
+ hc_session->stats.start =
+ vlib_time_now (vlib_get_main_by_index (s->thread_index));
return hc_request (s, wrk, hc_session, err);
}
done:
if (hc_session->to_recv == 0)
{
+ hc_session->stats.end = vlib_time_now (wrk->vlib_main);
+ hc_session->stats.elapsed_time =
+ hc_session->stats.end - hc_session->stats.start;
if (hcm->repeat)
{
hc_session->stats.request_count++;
- hc_session->stats.end = vlib_time_now (wrk->vlib_main);
- hc_session->stats.elapsed_time =
- hc_session->stats.end - hc_session->stats.start;
if (hc_session->stats.elapsed_time >= hcm->duration &&
hc_session->stats.request_count >= hc_session->stats.req_per_wrk)
hc_get_repeat_stats (vlib_main_t *vm)
{
hc_main_t *hcm = &hc_main;
- hc_worker_t *wrk;
- hc_session_t *hc_session;
- if (hcm->repeat)
+ if (hcm->repeat || hcm->verbose)
{
+ hc_worker_t *wrk;
+ hc_session_t *hc_session;
vec_foreach (wrk, hcm->wrk)
{
vec_foreach (hc_session, wrk->sessions)
}
}
}
- vlib_cli_output (vm,
- "< %d request(s) in %.6fs\n< avg latency "
- "%.4fms\n< %.2f req/sec",
- hc_stats.request_count, hc_stats.elapsed_time,
- (hc_stats.elapsed_time / hc_stats.request_count) * 1000,
- hc_stats.request_count / hc_stats.elapsed_time);
+
+ if (hcm->repeat)
+ {
+ vlib_cli_output (vm,
+ "* %d request(s) in %.6fs\n"
+ "* avg latency %.4fms\n"
+ "* %.2f req/sec",
+ hc_stats.request_count, hc_stats.elapsed_time,
+ (hc_stats.elapsed_time / hc_stats.request_count) *
+ 1000,
+ hc_stats.request_count / hc_stats.elapsed_time);
+ }
+ else
+ {
+ vlib_cli_output (vm, "* latency: %.4fms",
+ hc_stats.elapsed_time * 1000);
+ }
}
}
event_timeout += 5;
vlib_process_wait_for_event_or_clock (vm, event_timeout);
event_type = vlib_process_get_events (vm, &event_data);
+ hc_get_repeat_stats (vm);
switch (event_type)
{
case ~0:
- hc_get_repeat_stats (vm);
err = clib_error_return (0, "error: timeout");
break;
case HC_CONNECT_FAILED:
- hc_get_repeat_stats (vm);
err = clib_error_return (0, "error: failed to connect");
break;
case HC_TRANSPORT_CLOSED:
- hc_get_repeat_stats (vm);
err = clib_error_return (0, "error: transport closed");
break;
case HC_GENERIC_ERR:
- hc_get_repeat_stats (vm);
err = clib_error_return (0, "error: unknown");
break;
case HC_REPLY_RECEIVED:
fopen ((char *) format (0, "/tmp/%v", hcm->filename), "a");
if (file_ptr == NULL)
{
- vlib_cli_output (vm, "couldn't open file %v", hcm->filename);
+ vlib_cli_output (vm, "* couldn't open file %v", hcm->filename);
}
else
{
hc_session->response_status, hc_session->resp_headers,
hc_session->http_response);
fclose (file_ptr);
- vlib_cli_output (vm, "file saved (/tmp/%v)", hcm->filename);
+ vlib_cli_output (vm, "* file saved (/tmp/%v)", hcm->filename);
}
}
if (hcm->verbose)
}
break;
case HC_REPEAT_DONE:
- hc_get_repeat_stats (vm);
break;
default:
- hc_get_repeat_stats (vm);
err = clib_error_return (0, "error: unexpected event %d", event_type);
break;
}
hcm->appns_id = appns_id;
if (hcm->repeat)
- vlib_cli_output (vm, "Running, please wait...");
+ vlib_cli_output (vm, "* Running, please wait...");
session_enable_disable_args_t args = { .is_en = 1,
.rt_engine_type =