Merge pull request #1200 from davidBar-On/issue-952-bidir-json-output
Fix for issue #952 - different json object names for bidir reverse ch…
Этот коммит содержится в:
Коммит
f39fa9c9a0
@ -3326,6 +3326,8 @@ iperf_print_intermediate(struct iperf_test *test)
|
||||
double avg_jitter = 0.0, lost_percent;
|
||||
int stream_must_be_sender = current_mode * current_mode;
|
||||
|
||||
char *sum_name;
|
||||
|
||||
/* Print stream role just for bidirectional mode. */
|
||||
|
||||
if (test->mode == BIDIRECTIONAL) {
|
||||
@ -3360,6 +3362,22 @@ iperf_print_intermediate(struct iperf_test *test)
|
||||
|
||||
/* next build string with sum of all streams */
|
||||
if (test->num_streams > 1 || test->json_output) {
|
||||
/*
|
||||
* With BIDIR give a different JSON object name to the one sent/receive sums.
|
||||
* The different name is given to the data sent from the server, which is
|
||||
* the "reverse" channel. This makes sure that the name reported on the server
|
||||
* and client are compatible, and the names are the same as with non-bdir,
|
||||
* except for when reverse is used.
|
||||
*/
|
||||
sum_name = "sum";
|
||||
if (test->mode == BIDIRECTIONAL) {
|
||||
if ((test->role == 'c' && !stream_must_be_sender) ||
|
||||
(test->role != 'c' && stream_must_be_sender))
|
||||
{
|
||||
sum_name = "sum_bdir_reverse";
|
||||
}
|
||||
}
|
||||
|
||||
sp = SLIST_FIRST(&test->streams); /* reset back to 1st stream */
|
||||
/* Only do this of course if there was a first stream */
|
||||
if (sp) {
|
||||
@ -3377,13 +3395,13 @@ iperf_print_intermediate(struct iperf_test *test)
|
||||
if (test->sender_has_retransmits == 1 && stream_must_be_sender) {
|
||||
/* Interval sum, TCP with retransmits. */
|
||||
if (test->json_output)
|
||||
cJSON_AddItemToObject(json_interval, "sum", iperf_json_printf("start: %f end: %f seconds: %f bytes: %d bits_per_second: %f retransmits: %d omitted: %b sender: %b", (double) start_time, (double) end_time, (double) irp->interval_duration, (int64_t) bytes, bandwidth * 8, (int64_t) retransmits, irp->omitted, stream_must_be_sender)); /* XXX irp->omitted or test->omitting? */
|
||||
cJSON_AddItemToObject(json_interval, sum_name, iperf_json_printf("start: %f end: %f seconds: %f bytes: %d bits_per_second: %f retransmits: %d omitted: %b sender: %b", (double) start_time, (double) end_time, (double) irp->interval_duration, (int64_t) bytes, bandwidth * 8, (int64_t) retransmits, irp->omitted, stream_must_be_sender)); /* XXX irp->omitted or test->omitting? */
|
||||
else
|
||||
iperf_printf(test, report_sum_bw_retrans_format, mbuf, start_time, end_time, ubuf, nbuf, retransmits, irp->omitted?report_omitted:""); /* XXX irp->omitted or test->omitting? */
|
||||
} else {
|
||||
/* Interval sum, TCP without retransmits. */
|
||||
if (test->json_output)
|
||||
cJSON_AddItemToObject(json_interval, "sum", iperf_json_printf("start: %f end: %f seconds: %f bytes: %d bits_per_second: %f omitted: %b sender: %b", (double) start_time, (double) end_time, (double) irp->interval_duration, (int64_t) bytes, bandwidth * 8, test->omitting, stream_must_be_sender));
|
||||
cJSON_AddItemToObject(json_interval, sum_name, iperf_json_printf("start: %f end: %f seconds: %f bytes: %d bits_per_second: %f omitted: %b sender: %b", (double) start_time, (double) end_time, (double) irp->interval_duration, (int64_t) bytes, bandwidth * 8, test->omitting, stream_must_be_sender));
|
||||
else
|
||||
iperf_printf(test, report_sum_bw_format, mbuf, start_time, end_time, ubuf, nbuf, test->omitting?report_omitted:"");
|
||||
}
|
||||
@ -3391,7 +3409,7 @@ iperf_print_intermediate(struct iperf_test *test)
|
||||
/* Interval sum, UDP. */
|
||||
if (stream_must_be_sender) {
|
||||
if (test->json_output)
|
||||
cJSON_AddItemToObject(json_interval, "sum", iperf_json_printf("start: %f end: %f seconds: %f bytes: %d bits_per_second: %f packets: %d omitted: %b sender: %b", (double) start_time, (double) end_time, (double) irp->interval_duration, (int64_t) bytes, bandwidth * 8, (int64_t) total_packets, test->omitting, stream_must_be_sender));
|
||||
cJSON_AddItemToObject(json_interval, sum_name, iperf_json_printf("start: %f end: %f seconds: %f bytes: %d bits_per_second: %f packets: %d omitted: %b sender: %b", (double) start_time, (double) end_time, (double) irp->interval_duration, (int64_t) bytes, bandwidth * 8, (int64_t) total_packets, test->omitting, stream_must_be_sender));
|
||||
else
|
||||
iperf_printf(test, report_sum_bw_udp_sender_format, mbuf, start_time, end_time, ubuf, nbuf, zbuf, total_packets, test->omitting?report_omitted:"");
|
||||
} else {
|
||||
@ -3403,7 +3421,7 @@ iperf_print_intermediate(struct iperf_test *test)
|
||||
lost_percent = 0.0;
|
||||
}
|
||||
if (test->json_output)
|
||||
cJSON_AddItemToObject(json_interval, "sum", iperf_json_printf("start: %f end: %f seconds: %f bytes: %d bits_per_second: %f jitter_ms: %f lost_packets: %d packets: %d lost_percent: %f omitted: %b sender: %b", (double) start_time, (double) end_time, (double) irp->interval_duration, (int64_t) bytes, bandwidth * 8, (double) avg_jitter * 1000.0, (int64_t) lost_packets, (int64_t) total_packets, (double) lost_percent, test->omitting, stream_must_be_sender));
|
||||
cJSON_AddItemToObject(json_interval, sum_name, iperf_json_printf("start: %f end: %f seconds: %f bytes: %d bits_per_second: %f jitter_ms: %f lost_packets: %d packets: %d lost_percent: %f omitted: %b sender: %b", (double) start_time, (double) end_time, (double) irp->interval_duration, (int64_t) bytes, bandwidth * 8, (double) avg_jitter * 1000.0, (int64_t) lost_packets, (int64_t) total_packets, (double) lost_percent, test->omitting, stream_must_be_sender));
|
||||
else
|
||||
iperf_printf(test, report_sum_bw_udp_format, mbuf, start_time, end_time, ubuf, nbuf, avg_jitter * 1000.0, lost_packets, total_packets, lost_percent, test->omitting?report_omitted:"");
|
||||
}
|
||||
@ -3425,6 +3443,8 @@ iperf_print_results(struct iperf_test *test)
|
||||
int lower_mode, upper_mode;
|
||||
int current_mode;
|
||||
|
||||
char *sum_sent_name, *sum_received_name, *sum_name;
|
||||
|
||||
int tmp_sender_has_retransmits = test->sender_has_retransmits;
|
||||
|
||||
/* print final summary for all intervals */
|
||||
@ -3744,6 +3764,27 @@ iperf_print_results(struct iperf_test *test)
|
||||
}
|
||||
|
||||
if (test->num_streams > 1 || test->json_output) {
|
||||
/*
|
||||
* With BIDIR give a different JSON object name to the one sent/receive sums.
|
||||
* The different name is given to the data sent from the server, which is
|
||||
* the "reverse" channel. This makes sure that the name reported on the server
|
||||
* and client are compatible, and the names are the same as with non-bdir,
|
||||
* except for when reverse is used.
|
||||
*/
|
||||
sum_name = "sum";
|
||||
sum_sent_name = "sum_sent";
|
||||
sum_received_name = "sum_received";
|
||||
if (test->mode == BIDIRECTIONAL) {
|
||||
if ((test->role == 'c' && !stream_must_be_sender) ||
|
||||
(test->role != 'c' && stream_must_be_sender))
|
||||
{
|
||||
sum_name = "sum_bdir_reverse";
|
||||
sum_sent_name = "sum_sent_bdir_reverse";
|
||||
sum_received_name = "sum_received_bdir_reverse";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
unit_snprintf(ubuf, UNIT_LEN, (double) total_sent, 'A');
|
||||
/* If no tests were run, arbitrarily set bandwidth to 0. */
|
||||
if (sender_time > 0.0) {
|
||||
@ -3757,7 +3798,7 @@ iperf_print_results(struct iperf_test *test)
|
||||
if (test->sender_has_retransmits) {
|
||||
/* Summary sum, TCP with retransmits. */
|
||||
if (test->json_output)
|
||||
cJSON_AddItemToObject(test->json_end, "sum_sent", iperf_json_printf("start: %f end: %f seconds: %f bytes: %d bits_per_second: %f retransmits: %d sender: %b", (double) start_time, (double) sender_time, (double) sender_time, (int64_t) total_sent, bandwidth * 8, (int64_t) total_retransmits, stream_must_be_sender));
|
||||
cJSON_AddItemToObject(test->json_end, sum_sent_name, iperf_json_printf("start: %f end: %f seconds: %f bytes: %d bits_per_second: %f retransmits: %d sender: %b", (double) start_time, (double) sender_time, (double) sender_time, (int64_t) total_sent, bandwidth * 8, (int64_t) total_retransmits, stream_must_be_sender));
|
||||
else
|
||||
if (test->role == 's' && !stream_must_be_sender) {
|
||||
if (test->verbose)
|
||||
@ -3769,7 +3810,7 @@ iperf_print_results(struct iperf_test *test)
|
||||
} else {
|
||||
/* Summary sum, TCP without retransmits. */
|
||||
if (test->json_output)
|
||||
cJSON_AddItemToObject(test->json_end, "sum_sent", iperf_json_printf("start: %f end: %f seconds: %f bytes: %d bits_per_second: %f sender: %b", (double) start_time, (double) sender_time, (double) sender_time, (int64_t) total_sent, bandwidth * 8, stream_must_be_sender));
|
||||
cJSON_AddItemToObject(test->json_end, sum_sent_name, iperf_json_printf("start: %f end: %f seconds: %f bytes: %d bits_per_second: %f sender: %b", (double) start_time, (double) sender_time, (double) sender_time, (int64_t) total_sent, bandwidth * 8, stream_must_be_sender));
|
||||
else
|
||||
if (test->role == 's' && !stream_must_be_sender) {
|
||||
if (test->verbose)
|
||||
@ -3789,7 +3830,7 @@ iperf_print_results(struct iperf_test *test)
|
||||
}
|
||||
unit_snprintf(nbuf, UNIT_LEN, bandwidth, test->settings->unit_format);
|
||||
if (test->json_output)
|
||||
cJSON_AddItemToObject(test->json_end, "sum_received", iperf_json_printf("start: %f end: %f seconds: %f bytes: %d bits_per_second: %f sender: %b", (double) start_time, (double) receiver_time, (double) receiver_time, (int64_t) total_received, bandwidth * 8, stream_must_be_sender));
|
||||
cJSON_AddItemToObject(test->json_end, sum_received_name, iperf_json_printf("start: %f end: %f seconds: %f bytes: %d bits_per_second: %f sender: %b", (double) start_time, (double) receiver_time, (double) receiver_time, (int64_t) total_received, bandwidth * 8, stream_must_be_sender));
|
||||
else
|
||||
if (test->role == 's' && stream_must_be_sender) {
|
||||
if (test->verbose)
|
||||
@ -3814,14 +3855,14 @@ iperf_print_results(struct iperf_test *test)
|
||||
* structure is not recommended due to
|
||||
* ambiguities between the sender and receiver.
|
||||
*/
|
||||
cJSON_AddItemToObject(test->json_end, "sum", iperf_json_printf("start: %f end: %f seconds: %f bytes: %d bits_per_second: %f jitter_ms: %f lost_packets: %d packets: %d lost_percent: %f sender: %b", (double) start_time, (double) receiver_time, (double) receiver_time, (int64_t) total_sent, bandwidth * 8, (double) avg_jitter * 1000.0, (int64_t) lost_packets, (int64_t) total_packets, (double) lost_percent, stream_must_be_sender));
|
||||
cJSON_AddItemToObject(test->json_end, sum_name, iperf_json_printf("start: %f end: %f seconds: %f bytes: %d bits_per_second: %f jitter_ms: %f lost_packets: %d packets: %d lost_percent: %f sender: %b", (double) start_time, (double) receiver_time, (double) receiver_time, (int64_t) total_sent, bandwidth * 8, (double) avg_jitter * 1000.0, (int64_t) lost_packets, (int64_t) total_packets, (double) lost_percent, stream_must_be_sender));
|
||||
/*
|
||||
* Separate sum_sent and sum_received structures.
|
||||
* Using these structures to get the most complete
|
||||
* information about UDP transfer.
|
||||
*/
|
||||
cJSON_AddItemToObject(test->json_end, "sum_sent", iperf_json_printf("start: %f end: %f seconds: %f bytes: %d bits_per_second: %f jitter_ms: %f lost_packets: %d packets: %d lost_percent: %f sender: %b", (double) start_time, (double) sender_time, (double) sender_time, (int64_t) total_sent, (double) total_sent * 8 / sender_time, (double) 0.0, (int64_t) 0, (int64_t) sender_total_packets, (double) 0.0, 1));
|
||||
cJSON_AddItemToObject(test->json_end, "sum_received", iperf_json_printf("start: %f end: %f seconds: %f bytes: %d bits_per_second: %f jitter_ms: %f lost_packets: %d packets: %d lost_percent: %f sender: %b", (double) start_time, (double) receiver_time, (double) receiver_time, (int64_t) total_received, (double) total_received * 8 / receiver_time, (double) avg_jitter * 1000.0, (int64_t) lost_packets, (int64_t) receiver_total_packets, (double) lost_percent, 0));
|
||||
cJSON_AddItemToObject(test->json_end, sum_sent_name, iperf_json_printf("start: %f end: %f seconds: %f bytes: %d bits_per_second: %f jitter_ms: %f lost_packets: %d packets: %d lost_percent: %f sender: %b", (double) start_time, (double) sender_time, (double) sender_time, (int64_t) total_sent, (double) total_sent * 8 / sender_time, (double) 0.0, (int64_t) 0, (int64_t) sender_total_packets, (double) 0.0, 1));
|
||||
cJSON_AddItemToObject(test->json_end, sum_received_name, iperf_json_printf("start: %f end: %f seconds: %f bytes: %d bits_per_second: %f jitter_ms: %f lost_packets: %d packets: %d lost_percent: %f sender: %b", (double) start_time, (double) receiver_time, (double) receiver_time, (int64_t) total_received, (double) total_received * 8 / receiver_time, (double) avg_jitter * 1000.0, (int64_t) lost_packets, (int64_t) receiver_total_packets, (double) lost_percent, 0));
|
||||
} else {
|
||||
/*
|
||||
* On the client we have both sender and receiver overall summary
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user