blob: b40a51f7ba6155aa079674d388d6f7410a2cd44f [file] [log] [blame]
diff -urp src.orig/netserver.c src/netserver.c
--- src.orig/netserver.c 2009-05-28 05:48:44.000000000 +0800
+++ src/netserver.c 2010-05-22 11:43:40.000000000 +0800
@@ -580,7 +580,7 @@ set_up_server(char hostname[], char port
if ((bind (server_control,
local_res_temp->ai_addr,
local_res_temp->ai_addrlen) != SOCKET_ERROR) &&
- (listen (server_control,5) != SOCKET_ERROR)) {
+ (listen (server_control, 512) != SOCKET_ERROR)) {
not_listening = 0;
break;
}
diff -urp src.orig/netsh.c src/netsh.c
--- src.orig/netsh.c 2008-10-25 07:38:57.000000000 +0800
+++ src/netsh.c 2010-05-22 11:44:29.000000000 +0800
@@ -94,7 +94,7 @@ double atof(const char *);
/* Some of the args take optional parameters. Since we are using */
/* getopt to parse the command line, we will tell getopt that they do */
/* not take parms, and then look for them ourselves */
-#define GLOBAL_CMD_LINE_ARGS "A:a:b:B:CcdDf:F:H:hi:I:k:K:l:L:n:NO:o:P:p:rt:T:v:VW:w:46"
+#define GLOBAL_CMD_LINE_ARGS "A:a:b:B:CcdDf:F:H:hi:I:k:K:l:L:n:NO:o:P:p:rt:s:T:v:VW:w:46"
/************************************************************************/
/* */
@@ -186,6 +186,10 @@ int
remote_interval_usecs,
remote_interval_burst;
+/* wait time between control/data connection establishment and
+ start of data traffic */
+int wait_time_secs;
+
#if defined(WANT_INTERVALS) || defined(WANT_DEMO)
int demo_mode; /* are we actually in demo mode? */
@@ -275,6 +279,7 @@ Global options:\n\
-p port,lport* Specify netserver port number and/or local port\n\
-P 0|1 Don't/Do display test headers\n\
-r Allow confidence to be hit on result only\n\
+ -s time Time to wait before starting data traffic\n\
-t testname Specify test to perform\n\
-T lcpu,rcpu Request netperf/netserver be bound to local/remote cpu\n\
-v verbosity Specify the verbosity level\n\
@@ -816,6 +821,9 @@ scan_cmd_line(int argc, char *argv[])
test_time = 0;
}
break;
+ case 's':
+ wait_time_secs = convert(optarg);
+ break;
case 'v':
/* say how much to say */
verbosity = convert(optarg);
diff -urp src.orig/netsh.h src/netsh.h
--- src.orig/netsh.h 2008-02-20 06:48:52.000000000 +0800
+++ src/netsh.h 2010-05-22 11:44:32.000000000 +0800
@@ -91,6 +91,8 @@ extern int
test_bytes, /* test ends on byte count */
test_trans; /* test ends on tran count */
+extern int wait_time_secs;
+
/* the alignment conditions for the tests */
extern int
local_recv_align, /* alignment for local receives */
diff -urp src.orig/nettest_bsd.c src/nettest_bsd.c
--- src.orig/nettest_bsd.c 2009-06-04 08:31:15.000000000 +0800
+++ src/nettest_bsd.c 2010-05-22 11:43:09.000000000 +0800
@@ -326,6 +326,12 @@ static struct timeval *temp_intvl_ptr =
#endif
#endif
+#define WAIT_BEFORE_DATA_TRAFFIC() \
+{ \
+ if (wait_time_secs) \
+ sleep(wait_time_secs); \
+} \
+
#ifdef WANT_DEMO
#ifdef HAVE_GETHRTIME
static hrtime_t demo_one;
@@ -1836,6 +1842,8 @@ Size (bytes)\n\
/* we'll see it here. If it didn't, we might as well start pumping */
/* data. */
+ WAIT_BEFORE_DATA_TRAFFIC();
+
/* Set-up the test end conditions. For a stream test, they can be */
/* either time or byte-count based. */
@@ -2542,6 +2550,8 @@ Size (bytes)\n\
/* we'll see it here. If it didn't, we might as well start pumping */
/* data. */
+ WAIT_BEFORE_DATA_TRAFFIC();
+
/* Set-up the test end conditions. For a maerts test, they can be */
/* either time or byte-count based. */
@@ -4195,7 +4205,7 @@ Size (bytes)\n\
tcp_stream_request->cpu_rate = remote_cpu_rate;
if (test_time) {
- tcp_stream_request->test_length = test_time;
+ tcp_stream_request->test_length = test_time + wait_time_secs;
}
else {
tcp_stream_request->test_length = test_bytes;
@@ -4286,6 +4296,8 @@ Size (bytes)\n\
we'll see it here. If it didn't, we might as well start pumping
data. */
+ WAIT_BEFORE_DATA_TRAFFIC();
+
/* Set-up the test end conditions. For a stream test, they can be */
/* either time or byte-count based. */
@@ -5715,7 +5727,7 @@ Send Recv Send Recv usec/Tran
tcp_rr_request->so_rcvavoid = rem_rcvavoid;
tcp_rr_request->so_sndavoid = rem_sndavoid;
if (test_time) {
- tcp_rr_request->test_length = test_time;
+ tcp_rr_request->test_length = test_time + wait_time_secs;
}
else {
tcp_rr_request->test_length = test_trans * -1;
@@ -5777,6 +5789,8 @@ Send Recv Send Recv usec/Tran
exit(1);
}
+
+ WAIT_BEFORE_DATA_TRAFFIC();
#ifdef WIN32
/* this is used so the timer thread can close the socket out from */
@@ -6501,6 +6515,8 @@ bytes bytes secs #
fflush(where);
}
}
+
+ WAIT_BEFORE_DATA_TRAFFIC();
#ifdef WIN32
/* this is used so the timer thread can close the socket out from */
@@ -7375,7 +7391,7 @@ bytes bytes bytes bytes secs. per
udp_rr_request->so_rcvavoid = rem_rcvavoid;
udp_rr_request->so_sndavoid = rem_sndavoid;
if (test_time) {
- udp_rr_request->test_length = test_time;
+ udp_rr_request->test_length = test_time + wait_time_secs;
}
else {
udp_rr_request->test_length = test_trans * -1;
@@ -7456,6 +7472,8 @@ bytes bytes bytes bytes secs. per
/* message after the accept on the remote. If it failed, we'll see it */
/* here. If it didn't, we might as well start pumping data. */
+ WAIT_BEFORE_DATA_TRAFFIC();
+
/* Set-up the test end conditions. For a request/response test, they */
/* can be either time or transaction based. */
@@ -8767,7 +8785,7 @@ Send Recv Send Recv\n\
tcp_conn_rr_request->so_rcvavoid = rem_rcvavoid;
tcp_conn_rr_request->so_sndavoid = rem_sndavoid;
if (test_time) {
- tcp_conn_rr_request->test_length = test_time;
+ tcp_conn_rr_request->test_length = test_time + wait_time_secs;
}
else {
tcp_conn_rr_request->test_length = test_trans * -1;
@@ -10961,7 +10979,7 @@ Send Recv Send Recv\n\
tcp_rr_request->so_rcvavoid = rem_rcvavoid;
tcp_rr_request->so_sndavoid = rem_sndavoid;
if (test_time) {
- tcp_rr_request->test_length = test_time;
+ tcp_rr_request->test_length = test_time + wait_time_secs;
}
else {
tcp_rr_request->test_length = test_trans * -1;
@@ -11038,6 +11056,8 @@ Send Recv Send Recv\n\
/* message after the accept on the remote. If it failed, we'll see it */
/* here. If it didn't, we might as well start pumping data. */
+ WAIT_BEFORE_DATA_TRAFFIC();
+
/* Set-up the test end conditions. For a request/response test, they */
/* can be either time or transaction based. */
@@ -12021,6 +12041,8 @@ Send Recv Send Recv\n\
/* Set-up the test end conditions. For a request/response test, they */
/* can be either time or transaction based. */
+ WAIT_BEFORE_DATA_TRAFFIC();
+
if (test_time) {
/* The user wanted to end the test after a period of time. */
times_up = 0;