Lines Matching refs:test
70 iperf_server_listen(struct iperf_test *test) in iperf_server_listen() argument
73 …if((test->listener = netannounce(test->settings->domain, Ptcp, test->bind_address, test->bind_dev,… in iperf_server_listen()
74 …if (errno == EAFNOSUPPORT && (test->settings->domain == AF_INET6 || test->settings->domain == AF_U… in iperf_server_listen()
81 test->settings->domain = AF_INET; in iperf_server_listen()
89 if (!test->json_output) { in iperf_server_listen()
90 if (test->server_last_run_rc != 2) in iperf_server_listen()
91 test->server_test_number +=1; in iperf_server_listen()
92 if (test->debug || test->server_last_run_rc != 2) { in iperf_server_listen()
93 iperf_printf(test, "-----------------------------------------------------------\n"); in iperf_server_listen()
94 …iperf_printf(test, "Server listening on %d (test #%d)\n", test->server_port, test->server_test_num… in iperf_server_listen()
95 iperf_printf(test, "-----------------------------------------------------------\n"); in iperf_server_listen()
96 if (test->forceflush) in iperf_server_listen()
97 iflush(test); in iperf_server_listen()
101 FD_ZERO(&test->read_set); in iperf_server_listen()
102 FD_ZERO(&test->write_set); in iperf_server_listen()
103 FD_SET(test->listener, &test->read_set); in iperf_server_listen()
104 if (test->listener > test->max_fd) test->max_fd = test->listener; in iperf_server_listen()
110 iperf_accept(struct iperf_test *test) in iperf_accept() argument
118 if ((s = accept(test->listener, (struct sockaddr *) &addr, &len)) < 0) { in iperf_accept()
123 if (test->ctrl_sck == -1) { in iperf_accept()
125 test->ctrl_sck = s; in iperf_accept()
128 if (setsockopt(test->ctrl_sck, IPPROTO_TCP, TCP_NODELAY, (char *) &flag, sizeof(int))) { in iperf_accept()
135 if ((opt = test->settings->snd_timeout)) { in iperf_accept()
143 if (Nread(test->ctrl_sck, test->cookie, COOKIE_SIZE, Ptcp) < 0) { in iperf_accept()
147 FD_SET(test->ctrl_sck, &test->read_set); in iperf_accept()
148 if (test->ctrl_sck > test->max_fd) test->max_fd = test->ctrl_sck; in iperf_accept()
150 if (iperf_set_send_state(test, PARAM_EXCHANGE) != 0) in iperf_accept()
152 if (iperf_exchange_parameters(test) < 0) in iperf_accept()
154 if (test->server_affinity != -1) in iperf_accept()
155 if (iperf_setaffinity(test, test->server_affinity) != 0) in iperf_accept()
157 if (test->on_connect) in iperf_accept()
158 test->on_connect(test); in iperf_accept()
167 if (test->debug) in iperf_accept()
170 if (test->debug) in iperf_accept()
182 iperf_handle_message_server(struct iperf_test *test) in iperf_handle_message_server() argument
188 if ((rval = Nread(test->ctrl_sck, (char*) &test->state, sizeof(signed char), Ptcp)) <= 0) { in iperf_handle_message_server()
190 iperf_err(test, "the client has unexpectedly closed the connection"); in iperf_handle_message_server()
192 test->state = IPERF_DONE; in iperf_handle_message_server()
200 switch(test->state) { in iperf_handle_message_server()
204 test->done = 1; in iperf_handle_message_server()
205 cpu_util(test->cpu_util); in iperf_handle_message_server()
206 test->stats_callback(test); in iperf_handle_message_server()
207 SLIST_FOREACH(sp, &test->streams, streams) { in iperf_handle_message_server()
208 FD_CLR(sp->socket, &test->read_set); in iperf_handle_message_server()
209 FD_CLR(sp->socket, &test->write_set); in iperf_handle_message_server()
212 test->reporter_callback(test); in iperf_handle_message_server()
213 if (iperf_set_send_state(test, EXCHANGE_RESULTS) != 0) in iperf_handle_message_server()
215 if (iperf_exchange_results(test) < 0) in iperf_handle_message_server()
217 if (iperf_set_send_state(test, DISPLAY_RESULTS) != 0) in iperf_handle_message_server()
219 if (test->on_test_finish) in iperf_handle_message_server()
220 test->on_test_finish(test); in iperf_handle_message_server()
229 signed char oldstate = test->state; in iperf_handle_message_server()
230 cpu_util(test->cpu_util); in iperf_handle_message_server()
231 test->state = DISPLAY_RESULTS; in iperf_handle_message_server()
232 test->reporter_callback(test); in iperf_handle_message_server()
233 test->state = oldstate; in iperf_handle_message_server()
236 iperf_err(test, "the client has terminated"); in iperf_handle_message_server()
237 SLIST_FOREACH(sp, &test->streams, streams) { in iperf_handle_message_server()
238 FD_CLR(sp->socket, &test->read_set); in iperf_handle_message_server()
239 FD_CLR(sp->socket, &test->write_set); in iperf_handle_message_server()
242 test->state = IPERF_DONE; in iperf_handle_message_server()
255 struct iperf_test *test = client_data.p; in server_timer_proc() local
258 test->timer = NULL; in server_timer_proc()
259 if (test->done) in server_timer_proc()
261 test->done = 1; in server_timer_proc()
263 while (!SLIST_EMPTY(&test->streams)) { in server_timer_proc()
264 sp = SLIST_FIRST(&test->streams); in server_timer_proc()
265 SLIST_REMOVE_HEAD(&test->streams, streams); in server_timer_proc()
269 close(test->ctrl_sck); in server_timer_proc()
275 struct iperf_test *test = client_data.p; in server_stats_timer_proc() local
277 if (test->done) in server_stats_timer_proc()
279 if (test->stats_callback) in server_stats_timer_proc()
280 test->stats_callback(test); in server_stats_timer_proc()
286 struct iperf_test *test = client_data.p; in server_reporter_timer_proc() local
288 if (test->done) in server_reporter_timer_proc()
290 if (test->reporter_callback) in server_reporter_timer_proc()
291 test->reporter_callback(test); in server_reporter_timer_proc()
295 create_server_timers(struct iperf_test * test) in create_server_timers() argument
307 cd.p = test; in create_server_timers()
308 test->timer = test->stats_timer = test->reporter_timer = NULL; in create_server_timers()
309 if (test->duration != 0 ) { in create_server_timers()
310 test->done = 0; in create_server_timers()
311 …test->timer = tmr_create(&now, server_timer_proc, cd, (test->duration + test->omit + grace_period)… in create_server_timers()
312 if (test->timer == NULL) { in create_server_timers()
318 test->stats_timer = test->reporter_timer = NULL; in create_server_timers()
319 if (test->stats_interval != 0) { in create_server_timers()
320 …test->stats_timer = tmr_create(&now, server_stats_timer_proc, cd, test->stats_interval * SEC_TO_US… in create_server_timers()
321 if (test->stats_timer == NULL) { in create_server_timers()
326 if (test->reporter_interval != 0) { in create_server_timers()
327 …test->reporter_timer = tmr_create(&now, server_reporter_timer_proc, cd, test->reporter_interval * … in create_server_timers()
328 if (test->reporter_timer == NULL) { in create_server_timers()
339 struct iperf_test *test = client_data.p; in server_omit_timer_proc() local
341 test->omit_timer = NULL; in server_omit_timer_proc()
342 test->omitting = 0; in server_omit_timer_proc()
343 iperf_reset_stats(test); in server_omit_timer_proc()
344 if (test->verbose && !test->json_output && test->reporter_interval == 0) in server_omit_timer_proc()
345 iperf_printf(test, "%s", report_omit_done); in server_omit_timer_proc()
348 if (test->stats_timer != NULL) in server_omit_timer_proc()
349 tmr_reset(nowP, test->stats_timer); in server_omit_timer_proc()
350 if (test->reporter_timer != NULL) in server_omit_timer_proc()
351 tmr_reset(nowP, test->reporter_timer); in server_omit_timer_proc()
355 create_server_omit_timer(struct iperf_test * test) in create_server_omit_timer() argument
360 if (test->omit == 0) { in create_server_omit_timer()
361 test->omit_timer = NULL; in create_server_omit_timer()
362 test->omitting = 0; in create_server_omit_timer()
368 test->omitting = 1; in create_server_omit_timer()
369 cd.p = test; in create_server_omit_timer()
370 test->omit_timer = tmr_create(&now, server_omit_timer_proc, cd, test->omit * SEC_TO_US, 0); in create_server_omit_timer()
371 if (test->omit_timer == NULL) { in create_server_omit_timer()
381 cleanup_server(struct iperf_test *test) in cleanup_server() argument
386 SLIST_FOREACH(sp, &test->streams, streams) { in cleanup_server()
387 FD_CLR(sp->socket, &test->read_set); in cleanup_server()
388 FD_CLR(sp->socket, &test->write_set); in cleanup_server()
393 if (test->ctrl_sck) { in cleanup_server()
394 close(test->ctrl_sck); in cleanup_server()
396 if (test->listener) { in cleanup_server()
397 close(test->listener); in cleanup_server()
399 if (test->prot_listener > -1) { // May remain open if create socket failed in cleanup_server()
400 close(test->prot_listener); in cleanup_server()
404 if (test->stats_timer != NULL) { in cleanup_server()
405 tmr_cancel(test->stats_timer); in cleanup_server()
406 test->stats_timer = NULL; in cleanup_server()
408 if (test->reporter_timer != NULL) { in cleanup_server()
409 tmr_cancel(test->reporter_timer); in cleanup_server()
410 test->reporter_timer = NULL; in cleanup_server()
412 if (test->omit_timer != NULL) { in cleanup_server()
413 tmr_cancel(test->omit_timer); in cleanup_server()
414 test->omit_timer = NULL; in cleanup_server()
416 if (test->congestion_used != NULL) { in cleanup_server()
417 free(test->congestion_used); in cleanup_server()
418 test->congestion_used = NULL; in cleanup_server()
420 if (test->timer != NULL) { in cleanup_server()
421 tmr_cancel(test->timer); in cleanup_server()
422 test->timer = NULL; in cleanup_server()
428 iperf_run_server(struct iperf_test *test) in iperf_run_server() argument
448 if (test->logfile) in iperf_run_server()
449 if (iperf_open_logfile(test) < 0) in iperf_run_server()
452 if (test->affinity != -1) in iperf_run_server()
453 if (iperf_setaffinity(test, test->affinity) != 0) in iperf_run_server()
456 if (test->json_output) in iperf_run_server()
457 if (iperf_json_start(test) < 0) in iperf_run_server()
460 if (test->json_output) { in iperf_run_server()
461 cJSON_AddItemToObject(test->json_start, "version", cJSON_CreateString(version)); in iperf_run_server()
462 cJSON_AddItemToObject(test->json_start, "system_info", cJSON_CreateString(get_system_info())); in iperf_run_server()
463 } else if (test->verbose) { in iperf_run_server()
464 iperf_printf(test, "%s\n", version); in iperf_run_server()
465 iperf_printf(test, "%s", ""); in iperf_run_server()
466 iperf_printf(test, "%s\n", get_system_info()); in iperf_run_server()
467 iflush(test); in iperf_run_server()
471 if (iperf_server_listen(test) < 0) { in iperf_run_server()
477 test->state = IPERF_START; in iperf_run_server()
480 …rcv_timeout_us = (test->settings->rcv_timeout.secs * SEC_TO_US) + test->settings->rcv_timeout.usec… in iperf_run_server()
482 while (test->state != IPERF_DONE) { in iperf_run_server()
485 if (test->bitrate_limit_exceeded) { in iperf_run_server()
486 cleanup_server(test); in iperf_run_server()
491 memcpy(&read_set, &test->read_set, sizeof(fd_set)); in iperf_run_server()
492 memcpy(&write_set, &test->write_set, sizeof(fd_set)); in iperf_run_server()
498 if (test->state == IPERF_START) { // In idle mode server may need to restart in iperf_run_server()
499 if (timeout == NULL && test->settings->idle_timeout > 0) { in iperf_run_server()
500 used_timeout.tv_sec = test->settings->idle_timeout; in iperf_run_server()
504 …} else if (test->mode != SENDER) { // In non-reverse active mode server ensures data is receiv… in iperf_run_server()
512 used_timeout.tv_sec = test->settings->rcv_timeout.secs; in iperf_run_server()
513 used_timeout.tv_usec = test->settings->rcv_timeout.usecs; in iperf_run_server()
518 result = select(test->max_fd + 1, &read_set, &write_set, NULL, timeout); in iperf_run_server()
520 cleanup_server(test); in iperf_run_server()
531 if (test->state == IPERF_START) { in iperf_run_server()
532 … if (test->settings->idle_timeout > 0 && t_usecs >= test->settings->idle_timeout * SEC_TO_US) { in iperf_run_server()
533 test->server_forced_idle_restarts_count += 1; in iperf_run_server()
534 if (test->debug) in iperf_run_server()
536 … test->server_forced_idle_restarts_count, test->settings->idle_timeout); in iperf_run_server()
537 cleanup_server(test); in iperf_run_server()
538 if ( iperf_get_test_one_off(test) ) { in iperf_run_server()
539 if (test->debug) in iperf_run_server()
541 test->settings->idle_timeout); in iperf_run_server()
548 else if (test->mode != SENDER && t_usecs > rcv_timeout_us) { in iperf_run_server()
549 test->server_forced_no_msg_restarts_count += 1; in iperf_run_server()
551 if (iperf_get_verbose(test)) in iperf_run_server()
552 … iperf_err(test, "Server restart (#%d) during active test due to idle data for receiving data", in iperf_run_server()
553 test->server_forced_no_msg_restarts_count); in iperf_run_server()
554 cleanup_server(test); in iperf_run_server()
563 if (FD_ISSET(test->listener, &read_set)) { in iperf_run_server()
564 if (test->state != CREATE_STREAMS) { in iperf_run_server()
565 if (iperf_accept(test) < 0) { in iperf_run_server()
566 cleanup_server(test); in iperf_run_server()
569 FD_CLR(test->listener, &read_set); in iperf_run_server()
572 if (test->mode == BIDIRECTIONAL) { in iperf_run_server()
573 streams_to_send = test->num_streams; in iperf_run_server()
574 streams_to_rec = test->num_streams; in iperf_run_server()
575 } else if (test->mode == RECEIVER) { in iperf_run_server()
576 streams_to_rec = test->num_streams; in iperf_run_server()
579 streams_to_send = test->num_streams; in iperf_run_server()
584 if (FD_ISSET(test->ctrl_sck, &read_set)) { in iperf_run_server()
585 if (iperf_handle_message_server(test) < 0) { in iperf_run_server()
586 cleanup_server(test); in iperf_run_server()
589 FD_CLR(test->ctrl_sck, &read_set); in iperf_run_server()
592 if (test->state == CREATE_STREAMS) { in iperf_run_server()
593 if (FD_ISSET(test->prot_listener, &read_set)) { in iperf_run_server()
595 if ((s = test->protocol->accept(test)) < 0) { in iperf_run_server()
596 cleanup_server(test); in iperf_run_server()
603 if (test->protocol->id == Ptcp) { in iperf_run_server()
605 if ((opt = test->settings->snd_timeout)) { in iperf_run_server()
609 cleanup_server(test); in iperf_run_server()
619 if (test->protocol->id == Ptcp) { in iperf_run_server()
620 if (test->congestion) { in iperf_run_server()
621 … if (setsockopt(s, IPPROTO_TCP, TCP_CONGESTION, test->congestion, strlen(test->congestion)) < 0) { in iperf_run_server()
637 cleanup_server(test); in iperf_run_server()
649 if (rc < 0 && test->congestion) { in iperf_run_server()
652 cleanup_server(test); in iperf_run_server()
663 if (test->congestion_used != NULL) { in iperf_run_server()
664 free(test->congestion_used); in iperf_run_server()
668 test->congestion_used = strdup("unknown"); in iperf_run_server()
670 test->congestion_used = strdup(ca); in iperf_run_server()
671 if (test->debug) { in iperf_run_server()
672 printf("Congestion algorithm is %s\n", test->congestion_used); in iperf_run_server()
687 sp = iperf_new_stream(test, s, flag); in iperf_run_server()
689 cleanup_server(test); in iperf_run_server()
694 FD_SET(s, &test->write_set); in iperf_run_server()
696 FD_SET(s, &test->read_set); in iperf_run_server()
698 if (s > test->max_fd) test->max_fd = s; in iperf_run_server()
706 if (test->protocol->id != Pudp || in iperf_run_server()
711 if (test->on_new_stream) in iperf_run_server()
712 test->on_new_stream(sp); in iperf_run_server()
717 FD_CLR(test->prot_listener, &read_set); in iperf_run_server()
722 if (test->protocol->id != Ptcp) { in iperf_run_server()
723 FD_CLR(test->prot_listener, &test->read_set); in iperf_run_server()
724 close(test->prot_listener); in iperf_run_server()
726 … if (test->no_delay || test->settings->mss || test->settings->socket_bufsize) { in iperf_run_server()
727 FD_CLR(test->listener, &test->read_set); in iperf_run_server()
728 close(test->listener); in iperf_run_server()
729 test->listener = 0; in iperf_run_server()
730 …if ((s = netannounce(test->settings->domain, Ptcp, test->bind_address, test->bind_dev, test->serve… in iperf_run_server()
731 cleanup_server(test); in iperf_run_server()
735 test->listener = s; in iperf_run_server()
736 FD_SET(test->listener, &test->read_set); in iperf_run_server()
737 if (test->listener > test->max_fd) test->max_fd = test->listener; in iperf_run_server()
740 test->prot_listener = -1; in iperf_run_server()
743 …iperf_size_t total_requested_rate = test->num_streams * test->settings->rate * (test->mode == BIDI… in iperf_run_server()
744 … if (test->settings->bitrate_limit > 0 && total_requested_rate > test->settings->bitrate_limit) { in iperf_run_server()
745 if (iperf_get_verbose(test)) in iperf_run_server()
746 …iperf_err(test, "Client total requested throughput rate of %" PRIu64 " bps exceeded %" PRIu64 " bp… in iperf_run_server()
747 total_requested_rate, test->settings->bitrate_limit); in iperf_run_server()
748 cleanup_server(test); in iperf_run_server()
756 if (iperf_set_send_state(test, TEST_START) != 0) { in iperf_run_server()
757 cleanup_server(test); in iperf_run_server()
760 if (iperf_init_test(test) < 0) { in iperf_run_server()
761 cleanup_server(test); in iperf_run_server()
764 if (create_server_timers(test) < 0) { in iperf_run_server()
765 cleanup_server(test); in iperf_run_server()
768 if (create_server_omit_timer(test) < 0) { in iperf_run_server()
769 cleanup_server(test); in iperf_run_server()
772 if (test->mode != RECEIVER) in iperf_run_server()
773 if (iperf_create_send_timers(test) < 0) { in iperf_run_server()
774 cleanup_server(test); in iperf_run_server()
777 if (iperf_set_send_state(test, TEST_RUNNING) != 0) { in iperf_run_server()
778 cleanup_server(test); in iperf_run_server()
784 if (test->state == TEST_RUNNING) { in iperf_run_server()
785 if (test->mode == BIDIRECTIONAL) { in iperf_run_server()
786 if (iperf_recv(test, &read_set) < 0) { in iperf_run_server()
787 cleanup_server(test); in iperf_run_server()
790 if (iperf_send(test, &write_set) < 0) { in iperf_run_server()
791 cleanup_server(test); in iperf_run_server()
794 } else if (test->mode == SENDER) { in iperf_run_server()
796 if (iperf_send(test, &write_set) < 0) { in iperf_run_server()
797 cleanup_server(test); in iperf_run_server()
802 if (iperf_recv(test, &read_set) < 0) { in iperf_run_server()
803 cleanup_server(test); in iperf_run_server()
818 cleanup_server(test); in iperf_run_server()
820 if (test->json_output) { in iperf_run_server()
821 if (iperf_json_finish(test) < 0) in iperf_run_server()
825 iflush(test); in iperf_run_server()
827 if (test->server_affinity != -1) in iperf_run_server()
828 if (iperf_clearaffinity(test) != 0) in iperf_run_server()