Skip to Content.
Sympa Menu

ndt-dev - [ndt] r303 committed - More changes to resolve bugs in the mlab distro....

Subject: NDT-DEV email list created

List archive

[ndt] r303 committed - More changes to resolve bugs in the mlab distro....


Chronological Thread 
  • From:
  • To:
  • Subject: [ndt] r303 committed - More changes to resolve bugs in the mlab distro....
  • Date: Sun, 28 Feb 2010 19:30:13 +0000

Revision: 303
Author: rcarlson501
Date: Sun Feb 28 11:29:32 2010
Log: More changes to resolve bugs in the mlab distro.

From looking at the code this weekend (2.27.10) and running tests it appears
the part of the problem is that the server and/or client is timing out on
reads/writes and then the test fails. As a specific example the network.c
file contains the readn() function, which is called by the read_msg() function.
This routine reads data from the network and returns the data it found. I
earlier found that the read() call would exit if an interrupt was received so
this could cause the readn() routine to fail. I also noticed that it could hang
forever if nothing ever arrived on the socket. To resolve these problems I
added a select with a timer to prevent an indefinate hang, and handled the errno=INTR
case. This should have fixed thing, but I then found that both the server code AND
the client code use this same readxxx() functions, and the timeout for the server was
way too short for the client. This cased the client to exit before the server sent it
the wait time signal. (at least this happend in multi-client mode.) The solution was
to make the time much longer (was 10 sec, now it's 600 sec). This may need to be
revisited.

I then found a couple of bugs in the web100srv.c code. In 1 case if the client times out
the waiting variable was decremented twice, causing the server to miss count waiting clients.
I also moved one of the test conditions to handle errors better, The server was attempting
to run tests with invalid test suite data, it now detects this condition.

Handled error and exit conditions better when a client can't get into the queue.

Handled a full queue bug that caused an extra client to enter the queue.

Improved the exit and error reporting for the command-line and java client.

Fixed a bug in deploying the janalyze class and jar files.

incremented the version number to 3.6.1

Remaining, task -- The error messages on the Java applet have been updated to help
identify what was going on when the fault occurred. This version needs to be
patches with Seth's version and a new signed applet needs to be generated.

RAC 2/28/10


http://code.google.com/p/ndt/source/detail?r=303

Modified:
/trunk/Admin/Makefile.in
/trunk/Applet/Makefile.in
/trunk/Applet/Tcpbw100.java
/trunk/Makefile.in
/trunk/aclocal.m4
/trunk/conf/Makefile.in
/trunk/configure
/trunk/configure.ac
/trunk/doc/Makefile.in
/trunk/janalyze/Makefile.am
/trunk/janalyze/Makefile.in
/trunk/src/Makefile.in
/trunk/src/network.c
/trunk/src/testoptions.c
/trunk/src/web100clt.c
/trunk/src/web100srv.c
/trunk/src/web100srv.h

=======================================
--- /trunk/Admin/Makefile.in Thu Sep 10 09:16:13 2009
+++ /trunk/Admin/Makefile.in Sun Feb 28 11:29:32 2010
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@

# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -175,6 +175,7 @@
abs_top_srcdir = @abs_top_srcdir@
ac_aux_dir = @ac_aux_dir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_GCJ = @ac_ct_GCJ@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
=======================================
--- /trunk/Applet/Makefile.in Thu Sep 10 09:16:13 2009
+++ /trunk/Applet/Makefile.in Sun Feb 28 11:29:32 2010
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@

# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -175,6 +175,7 @@
abs_top_srcdir = @abs_top_srcdir@
ac_aux_dir = @ac_aux_dir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_GCJ = @ac_ct_GCJ@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
=======================================
--- /trunk/Applet/Tcpbw100.java Wed Jan 13 17:24:05 2010
+++ /trunk/Applet/Tcpbw100.java Sun Feb 28 11:29:32 2010
@@ -93,7 +93,7 @@

public class Tcpbw100 extends JApplet implements ActionListener
{
- private static final String VERSION = "3.5.14";
+ private static final String VERSION = "3.6.1";
private static final byte TEST_MID = (1 << 0);
private static final byte TEST_C2S = (1 << 1);
private static final byte TEST_S2C = (1 << 2);
@@ -544,7 +544,7 @@
emailText = "Checking for Middleboxes . . . . . . . . . . . . . . . . . . ";

if (ctl.recv_msg(msg) != 0) {
- errmsg = "Protocol error!\n";
+ errmsg = "Protocol error! Expected prepare, got: " + new String(msg.body) + "instead\n";
return true;
}
if (msg.type != TEST_PREPARE) {
@@ -593,7 +593,7 @@
s2cspd = ((8.0 * bytes) / 1000) / t;

if (ctl.recv_msg(msg) != 0) {
- errmsg = "Protocol error!\n";
+ errmsg = "Protocol error! Expected test data, got: " + new String(msg.body) + "instead\n";
return true;
}
if (msg.type != TEST_MSG) {
@@ -632,7 +632,7 @@
in2Socket.close();

if (ctl.recv_msg(msg) != 0) {
- errmsg = "Protocol error!\n";
+ errmsg = "Protocol error! Expected finalize, got: " + new String(msg.body) + "instead\n";
return true;
}
if (msg.type != TEST_FINALIZE) {
@@ -659,7 +659,7 @@
emailText = "checking for firewalls . . . . . . . . . . . . . . . . . . . ";

if (ctl.recv_msg(msg) != 0) {
- errmsg = "Protocol error!\n";
+ errmsg = "Protocol error! Expected prepare, got: " + new String(msg.body) + "instead\n";
return true;
}
if (msg.type != TEST_PREPARE) {
@@ -705,7 +705,7 @@
ctl.send_msg(TEST_MSG, Integer.toString(srvSocket.getLocalPort()).getBytes());

if (ctl.recv_msg(msg) != 0) {
- errmsg = "Protocol error!\n";
+ errmsg = "Protocol error! Expected port number, got: " + new String(msg.body) + "instead\n";
return true;
}
if (msg.type != TEST_START) {
@@ -731,7 +731,7 @@
}

if (ctl.recv_msg(msg) != 0) {
- errmsg = "Protocol error!\n";
+ errmsg = "Protocol error! Expected test data, got: " + new String(msg.body) + "instead\n";
return true;
}
if (msg.type != TEST_MSG) {
@@ -746,7 +746,7 @@
osfwTest.finalize();

if (ctl.recv_msg(msg) != 0) {
- errmsg = "Protocol error!\n";
+ errmsg = "Protocol error! Expected finalize, got: " + new String(msg.body) + "instead\n";
return true;
}
if (msg.type != TEST_FINALIZE) {
@@ -775,7 +775,7 @@
emailText += "running 10s outbound test (client-to-server [C2S]) . . . . . ";

if (ctl.recv_msg(msg) != 0) {
- errmsg = "Protocol error!\n";
+ errmsg = "Protocol error! Expected prepare, got: " + new String(msg.body) + "instead\n";
return true;
}
if (msg.type != TEST_PREPARE) {
@@ -805,7 +805,7 @@
// wait here for signal from server application
// This signal tells the client to start pumping out data
if (ctl.recv_msg(msg) != 0) {
- errmsg = "Protocol error!\n";
+ errmsg = "Protocol error! Expected start signal, got: " + new String(msg.body) + "instead\n";
return true;
}
if (msg.type != TEST_START) {
@@ -851,7 +851,7 @@
c2sspd = ((8.0 * pkts * lth) / 1000) / t;
/* receive the c2sspd from the server */
if (ctl.recv_msg(msg) != 0) {
- errmsg = "Protocol error!\n";
+ errmsg = "Protocol error! Expected test data, got: " + new String(msg.body) + "instead\n";
return true;
}
if (msg.type != TEST_MSG) {
@@ -883,7 +883,7 @@
/************************************************************************/

if (ctl.recv_msg(msg) != 0) {
- errmsg = "Protocol error!\n";
+ errmsg = "Protocol error! Expected finalize, got: " + new String(msg.body) + "instead\n";
return true;
}
if (msg.type != TEST_FINALIZE) {
@@ -908,7 +908,7 @@
emailText += "running 10s inbound test (server-to-client [S2C]) . . . . . . ";

if (ctl.recv_msg(msg) != 0) {
- errmsg = "Protocol error!\n";
+ errmsg = "Protocol error! Expected prepare, got: " + new String(msg.body) + "instead\n";
return true;
}
if (msg.type != TEST_PREPARE) {
@@ -941,7 +941,7 @@

// wait here for signal from server application
if (ctl.recv_msg(msg) != 0) {
- errmsg = "Protocol error!\n";
+ errmsg = "Protocol error! Expected start signal, got: " + new String(msg.body) + "instead\n";
return true;
}
if (msg.type != TEST_START) {
@@ -970,7 +970,7 @@

/* receive the s2cspd from the server */
if (ctl.recv_msg(msg) != 0) {
- errmsg = "Protocol error!\n";
+ errmsg = "Protocol error! Expected test data, got: " + new String(msg.body) + "instead\n";
return true;
}
if (msg.type != TEST_MSG) {
@@ -1028,7 +1028,7 @@
try {
for (;;) {
if (ctl.recv_msg(msg) != 0) {
- errmsg = "Protocol error!\n";
+ errmsg = "Protocol error! Expected finalize, got: " + new String(msg.body) + "instead\n";
return true;
}
if (msg.type == TEST_FINALIZE) {
@@ -1123,7 +1123,7 @@

for (;;) {
if (ctl.recv_msg(msg) != 0) {
- errmsg = "Protocol error!\n";
+ errmsg = "Protocol error! Expected wait time, got: " + new String(msg.body) + "instead\n";
failed = true;
return;
}
@@ -1168,7 +1168,7 @@
ff.toBack();

if (ctl.recv_msg(msg) != 0) {
- errmsg = "Protocol error!\n";
+ errmsg = "Protocol error! Expected hello signal, got: " + new String(msg.body) + "instead\n";
failed = true;
return;
}
@@ -1187,7 +1187,7 @@
System.out.println("Server version: " + vVersion.substring(1));

if (ctl.recv_msg(msg) != 0) {
- errmsg = "Protocol error!\n";
+ errmsg = "Protocol error! Expected server version info, got: " + new String(msg.body) + "instead\n";
failed = true;
return;
}
@@ -1262,7 +1262,7 @@
try {
for (;;) {
if (ctl.recv_msg(msg) != 0) {
- errmsg = "Protocol error!\n";
+ errmsg = "Protocol error! Expected test results, got: " + new String(msg.body) + "instead\n";
failed = true;
return;
}
=======================================
--- /trunk/Makefile.in Tue Feb 9 17:30:07 2010
+++ /trunk/Makefile.in Sun Feb 28 11:29:32 2010
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@

# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -216,6 +216,7 @@
abs_top_srcdir = @abs_top_srcdir@
ac_aux_dir = @ac_aux_dir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_GCJ = @ac_ct_GCJ@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
@@ -352,7 +353,7 @@
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
- @failcom='exit 1'; \
+ @fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
@@ -377,7 +378,7 @@
fi; test -z "$$fail"

$(RECURSIVE_CLEAN_TARGETS):
- @failcom='exit 1'; \
+ @fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
@@ -541,7 +542,8 @@
fi; \
done
-test -n "$(am__skip_mode_fix)" \
- || find "$(distdir)" -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
+ || find "$(distdir)" -type d ! -perm -755 \
+ -exec chmod u+rwx,go+rx {} \; -o \
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
@@ -585,17 +587,17 @@
distcheck: dist
case '$(DIST_ARCHIVES)' in \
*.tar.gz*) \
- GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
- bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.lzma*) \
- unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\
+ lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
*.tar.xz*) \
xz -dc $(distdir).tar.xz | $(am__untar) ;;\
*.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
- GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
+ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
esac
=======================================
--- /trunk/aclocal.m4 Thu Sep 10 09:16:13 2009
+++ /trunk/aclocal.m4 Sun Feb 28 11:29:32 2010
@@ -1,4 +1,4 @@
-# generated automatically by aclocal 1.11 -*- Autoconf -*-
+# generated automatically by aclocal 1.11.1 -*- Autoconf -*-

# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
@@ -34,7 +34,7 @@
[am__api_version='1.11'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.11], [],
+m4_if([$1], [1.11.1], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])

@@ -50,7 +50,7 @@
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.11])dnl
+[AM_AUTOMAKE_VERSION([1.11.1])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
@@ -409,14 +409,14 @@
# Check for Java compiler. -*- Autoconf -*-
# For now we only handle the GNU compiler.

-# Copyright (C) 1999, 2000, 2003, 2005 Free Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2003, 2005, 2009 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.

AC_DEFUN([AM_PROG_GCJ],[
-AC_CHECK_PROGS(GCJ, gcj, gcj)
+AC_CHECK_TOOLS(GCJ, gcj, gcj)
test -z "$GCJ" && AC_MSG_ERROR([no acceptable gcj found in \$PATH])
if test "x${GCJFLAGS-unset}" = xunset; then
GCJFLAGS="-g -O2"
=======================================
--- /trunk/conf/Makefile.in Thu Sep 10 09:16:13 2009
+++ /trunk/conf/Makefile.in Sun Feb 28 11:29:32 2010
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@

# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -120,6 +120,7 @@
abs_top_srcdir = @abs_top_srcdir@
ac_aux_dir = @ac_aux_dir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_GCJ = @ac_ct_GCJ@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
=======================================
--- /trunk/configure Thu Feb 11 08:31:38 2010
+++ /trunk/configure Sun Feb 28 11:29:32 2010
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.63 for NDT 3.6.0.
+# Generated by GNU Autoconf 2.63 for NDT 3.6.1.
#
# Report bugs to
<>.
#
@@ -596,8 +596,8 @@
# Identity of this package.
PACKAGE_NAME='NDT'
PACKAGE_TARNAME='ndt'
-PACKAGE_VERSION='3.6.0'
-PACKAGE_STRING='NDT 3.6.0'
+PACKAGE_VERSION='3.6.1'
+PACKAGE_STRING='NDT 3.6.1'

'

ac_unique_file="src/analyze.c"
@@ -650,6 +650,7 @@
am__fastdepGCJ_TRUE
GCJDEPMODE
GCJFLAGS
+ac_ct_GCJ
GCJ
LN_S
NDTJARFLAG
@@ -1330,7 +1331,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures NDT 3.6.0 to adapt to many kinds of systems.
+\`configure' configures NDT 3.6.1 to adapt to many kinds of systems.

Usage: $0 [OPTION]... [VAR=VALUE]...

@@ -1396,7 +1397,7 @@

if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of NDT 3.6.0:";;
+ short | recursive ) echo "Configuration of NDT 3.6.1:";;
esac
cat <<\_ACEOF

@@ -1494,7 +1495,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-NDT configure 3.6.0
+NDT configure 3.6.1
generated by GNU Autoconf 2.63

Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1508,7 +1509,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.

-It was created by NDT $as_me 3.6.0, which was
+It was created by NDT $as_me 3.6.1, which was
generated by GNU Autoconf 2.63. Invocation command line was

$ $0 $@
@@ -2358,7 +2359,7 @@

# Define the identity of the package.
PACKAGE='ndt'
- VERSION='3.6.0'
+ VERSION='3.6.1'


cat >>confdefs.h <<_ACEOF
@@ -5822,10 +5823,11 @@
fi


-for ac_prog in gcj
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
+if test -n "$ac_tool_prefix"; then
+ for ac_prog in gcj
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if test "${ac_cv_prog_GCJ+set}" = set; then
@@ -5841,7 +5843,7 @@
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_GCJ="$ac_prog"
+ ac_cv_prog_GCJ="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
@@ -5861,9 +5863,65 @@
fi


- test -n "$GCJ" && break
+ test -n "$GCJ" && break
+ done
+fi
+if test -z "$GCJ"; then
+ ac_ct_GCJ=$GCJ
+ for ac_prog in gcj
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_GCJ+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_GCJ"; then
+ ac_cv_prog_ac_ct_GCJ="$ac_ct_GCJ" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_GCJ="$ac_prog"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
done
-test -n "$GCJ" || GCJ="gcj"
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_GCJ=$ac_cv_prog_ac_ct_GCJ
+if test -n "$ac_ct_GCJ"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_GCJ" >&5
+$as_echo "$ac_ct_GCJ" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_GCJ" && break
+done
+
+ if test "x$ac_ct_GCJ" = x; then
+ GCJ="gcj"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ GCJ=$ac_ct_GCJ
+ fi
+fi

test -z "$GCJ" && { { $as_echo "$as_me:$LINENO: error: no acceptable gcj found in \$PATH" >&5
$as_echo "$as_me: error: no acceptable gcj found in \$PATH" >&2;}
@@ -8587,7 +8645,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by NDT $as_me 3.6.0, which was
+This file was extended by NDT $as_me 3.6.1, which was
generated by GNU Autoconf 2.63. Invocation command line was

CONFIG_FILES = $CONFIG_FILES
@@ -8650,7 +8708,7 @@
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_version="\\
-NDT config.status 3.6.0
+NDT config.status 3.6.1
configured by $0, generated by GNU Autoconf 2.63,
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"

=======================================
--- /trunk/configure.ac Thu Feb 11 08:31:38 2010
+++ /trunk/configure.ac Sun Feb 28 11:29:32 2010
@@ -29,7 +29,7 @@
# Process this file with autoconf to produce a configure script.
#
# AC_PREREQ(2.57)
-AC_INIT([NDT],[3.6.0],[])
+AC_INIT([NDT],[3.6.1],[])
AC_CONFIG_AUX_DIR(config)
# AM_INIT_AUTOMAKE(NDT, v1.0, [no-define])
AM_INIT_AUTOMAKE
=======================================
--- /trunk/doc/Makefile.in Thu Sep 10 09:16:13 2009
+++ /trunk/doc/Makefile.in Sun Feb 28 11:29:32 2010
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@

# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -164,6 +164,7 @@
abs_top_srcdir = @abs_top_srcdir@
ac_aux_dir = @ac_aux_dir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_GCJ = @ac_ct_GCJ@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
=======================================
--- /trunk/janalyze/Makefile.am Tue Jan 12 13:27:35 2010
+++ /trunk/janalyze/Makefile.am Sun Feb 28 11:29:32 2010
@@ -56,17 +56,17 @@
test -z "$(ndtdir)" || $(mkdir_p) "$(DESTDIR)$(ndtdir)"
@list='dist/$(ndt_DATA)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- f=$(am__strip_dir) \
- echo " $(ndtDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(ndtdir)/$$f'"; \
- $(ndtDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(ndtdir)/$$f"; \
+ $(am__strip_dir) \
+ echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(JAnalyzedir)/$$f'"; \
+ $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(JAnalyzedir)/$$f"; \
done
@list='bin/*.class'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- f=$(am__strip_dir) \
- echo " $(ndtDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(ndtdir)/$$f'"; \
- $(ndtDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(ndtdir)/$$f"; \
+ $(am__strip_dir) \
+ echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(JAnalyzedir)/$$f'"; \
+ $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(JAnalyzedir)/$$f"; \
done
- /bin/cp -Rp external/de $(DESTDIR)$(ndtdir)/
+ /bin/cp -Rp external/de $(DESTDIR)$(JAnalyzedir)/

classJAnalyzestamp: $(JAnalyze_JAVA)
if test -n "$?"; then \
=======================================
--- /trunk/janalyze/Makefile.in Tue Feb 9 17:30:07 2010
+++ /trunk/janalyze/Makefile.in Sun Feb 28 11:29:32 2010
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@

# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -183,6 +183,7 @@
abs_top_srcdir = @abs_top_srcdir@
ac_aux_dir = @ac_aux_dir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_GCJ = @ac_ct_GCJ@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
@@ -878,17 +879,17 @@
test -z "$(ndtdir)" || $(mkdir_p) "$(DESTDIR)$(ndtdir)"
@list='dist/$(ndt_DATA)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- f=$(am__strip_dir) \
- echo " $(ndtDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(ndtdir)/$$f'"; \
- $(ndtDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(ndtdir)/$$f"; \
+ $(am__strip_dir) \
+ echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(JAnalyzedir)/$$f'"; \
+ $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(JAnalyzedir)/$$f"; \
done
@list='bin/*.class'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- f=$(am__strip_dir) \
- echo " $(ndtDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(ndtdir)/$$f'"; \
- $(ndtDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(ndtdir)/$$f"; \
+ $(am__strip_dir) \
+ echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(JAnalyzedir)/$$f'"; \
+ $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(JAnalyzedir)/$$f"; \
done
- /bin/cp -Rp external/de $(DESTDIR)$(ndtdir)/
+ /bin/cp -Rp external/de $(DESTDIR)$(JAnalyzedir)/

classJAnalyzestamp: $(JAnalyze_JAVA)
if test -n "$?"; then \
=======================================
--- /trunk/src/Makefile.in Thu Sep 10 09:16:13 2009
+++ /trunk/src/Makefile.in Sun Feb 28 11:29:32 2010
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@

# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -206,6 +206,7 @@
abs_top_srcdir = @abs_top_srcdir@
ac_aux_dir = @ac_aux_dir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_GCJ = @ac_ct_GCJ@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
=======================================
--- /trunk/src/network.c Tue Feb 9 17:30:07 2010
+++ /trunk/src/network.c Sun Feb 28 11:29:32 2010
@@ -435,16 +435,16 @@
int
readn(int fd, void* buf, int amount)
{
- int received, n, rc;
+ int received=0, n, rc;
char* ptr = buf;
- received = 0;
- assert(amount >= 0);
struct timeval sel_tv;
fd_set rfd;

+ assert(amount >= 0);
+
FD_ZERO(&rfd);
FD_SET(fd, &rfd);
- sel_tv.tv_sec = 10;
+ sel_tv.tv_sec = 600;
sel_tv.tv_usec = 0;

/* modified readn() routine 11/26/09 - RAC
@@ -465,6 +465,8 @@
if (n == -1) {
if (errno == EINTR)
continue;
+ if (errno == ECONNRESET)
+ return(ECONNRESET);
if (errno != EAGAIN)
return 0;
}
=======================================
--- /trunk/src/testoptions.c Sun Feb 21 11:06:25 2010
+++ /trunk/src/testoptions.c Sun Feb 28 11:29:32 2010
@@ -181,26 +181,10 @@

/* read the test suite request */
if (recv_msg(ctlsockfd, &msgType, &useropt, &msgLen)) {
-/* don't process these signals here, do it only after all tests end
- * RAC 1/19/10
- *
- if ((sig1 > 0) || (sig2 > 0))
- check_signal_flags();
- if (sig17 > 0)
- child_sig(0);
-*/
sprintf(buff, "Invalid test suite request");
send_msg(ctlsockfd, MSG_ERROR, buff, strlen(buff));
return (-1);
}
-/* don't process these signals here, do it only after all tests end
- * RAC 1/19/10
- *
- if ((sig1 > 0) || (sig2 > 0))
- check_signal_flags();
- if (sig17 > 0)
- child_sig(0);
-*/
if (msgLen == -1) {
sprintf(buff, "Client timeout");
return (-4);
@@ -258,11 +242,6 @@
strcat(buff, tmpbuff);
}
}
- /* if (useropt & TEST_STATUS) new style client capable of responding to a status request
- * return 1;
- */
-
- /* send_msg(ctlsockfd, MSG_LOGIN, buff, strlen(buff)); */
return useropt;
}

@@ -388,11 +367,12 @@
if ((midfd == -1) && (errno == EINTR))
continue;

- sprintf(tmpstr, "------- S2C connection setup returned because (%d)", errno);
+ sprintf(tmpstr, "------- middlebox connection setup returned because (%d)", errno);
if (get_debuglvl() > 1)
perror(tmpstr);
if (++j == 4)
- break;
+ /* break; */
+ return -2;
}
memcpy(&meta.c_addr, &cli_addr, clilen);
/* meta.c_addr = cli_addr; */
@@ -401,33 +381,18 @@
buff[0] = '\0';
if ((conn = web100_connection_from_socket(agent, midfd)) == NULL) {
log_println(0, "!!!!!!!!!!! test_mid() failed to get web100 connection data, rc=%d", errno);
- exit(-1);
+ /* exit(-1); */
+ return -3;
}
web100_middlebox(midfd, agent, conn, buff);
send_msg(ctlsockfd, TEST_MSG, buff, strlen(buff));
msgLen = sizeof(buff);
if (recv_msg(ctlsockfd, &msgType, buff, &msgLen)) {
-/* don't process these signals here, do it only after all tests end
- * RAC 1/19/10
- *
- if ((sig1 > 0) || (sig2 > 0))
- check_signal_flags();
- if (sig17 > 0)
- child_sig(0);
-*/
log_println(0, "Protocol error!");
sprintf(buff, "Server (Middlebox test): Invalid CWND limited throughput received");
send_msg(ctlsockfd, MSG_ERROR, buff, strlen(buff));
return 1;
}
-/* don't process these signals here, do it only after all tests end
- * RAC 1/19/10
- *
- if ((sig1 > 0) || (sig2 > 0))
- check_signal_flags();
- if (sig17 > 0)
- child_sig(0);
-*/
if (check_msg_type("Middlebox test", TEST_MSG, msgType, buff, msgLen)) {
sprintf(buff, "Server (Middlebox test): Invalid CWND limited throughput received");
send_msg(ctlsockfd, MSG_ERROR, buff, strlen(buff));
@@ -491,7 +456,6 @@
size_t nameBufLen = 255;
char isoTime[64];
DIR *dp;
- pid_t wpid;
FILE *fp;

web100_group* group;
@@ -580,7 +544,7 @@
if (get_debuglvl() > 1)
perror(tmpstr);
if (++j == 4)
- break;
+ return -2;
}
src_addr = I2AddrByLocalSockFD(get_errhandle(), recvsfd, 0);
conn = web100_connection_from_socket(agent, recvsfd);
@@ -826,23 +790,6 @@
close(mon_pipe1[0]);
close(mon_pipe1[1]);
}
- /* wait for the SIGCHLD signal here */
-/* Skip over this for now, and use the sigchld handler
- * to increment a counter. Do the wait after all tests
- * finish, instead of when each test ends
- * RAC 1/19/10
- *
- wait_sig = 1;
- do {
- wpid = waitpid(mon_pid1, &ret, 0);
- if (wpid == -1)
- return -1;
- if (WIFSIGNALED(ret)) {
- if (WTERMSIG(ret) == SIGALRM)
- continue;
- }
- } while (!WIFEXITED(ret));
-*/

log_println(1, " <------------------------->");
setCurrentTest(TEST_NONE);
@@ -895,7 +842,6 @@
char isoTime[64];
size_t nameBufLen = 255;
DIR *dp;
- pid_t wpid;
FILE *fp;

/* experimental code to capture and log multiple copies of the
@@ -1006,7 +952,7 @@
if (get_debuglvl() > 1)
perror(tmpstr);
if (++j == 4)
- break;
+ return -2;
}
src_addr = I2AddrByLocalSockFD(get_errhandle(), xmitsfd, 0);
conn = web100_connection_from_socket(agent, xmitsfd);
=======================================
--- /trunk/src/web100clt.c Tue Jul 14 07:29:39 2009
+++ /trunk/src/web100clt.c Sun Feb 28 11:29:32 2010
@@ -778,7 +778,7 @@
* tests in the queue.
*/
xwait = (xwait * 45);
- log_print(0, "Another client is currently being served, your test will ");
+ log_print(0, "Another client is currently begin served, your test will ");
log_println(0, "begin within %d seconds", xwait);
}

@@ -873,8 +873,11 @@
*/
for (;;) {
msgLen = sizeof(buff);
- if (recv_msg(ctlSocket, &msgType, buff, &msgLen)) {
- log_println(0, "Protocol error - expected results!");
+ if (ret = (recv_msg(ctlSocket, &msgType, buff, &msgLen))) {
+ if (errno == ECONNRESET)
+ log_println(0, "Connection closed by server, No test performed.");
+ else
+ log_println(0, "Protocol error - expected results! got '%s', msgtype=%d", buff, msgType);
exit(1);
}
if (msgType == MSG_LOGOUT) {
=======================================
--- /trunk/src/web100srv.c Thu Feb 11 08:31:38 2010
+++ /trunk/src/web100srv.c Sun Feb 28 11:29:32 2010
@@ -203,7 +203,7 @@
child_sig(pid_t chld_pid)
{
int pid, status, rc;
- int i=0, j=0;
+ /* int i=0, j=0; */
struct ndtchild *tmp1, *tmp2;

tmp1 = head_ptr;
@@ -1597,6 +1597,10 @@

/* Initialize Web100 structures */
count_vars = web100_init(VarFileName);
+ if (count_vars == -1) {
+ log_println(0, "No web100 variables file found, terminating program");
+ exit (-5);
+ }

/* The administrator view automatically generates a usage page for the
* NDT server. This page is then accessable to the general public.
@@ -1784,6 +1788,12 @@
waiting, head_ptr->pid, ctime(&tt)+4);
/* kill(tmp_ptr->pid, SIGTERM); */
/* kill(head_ptr->pid, SIGCHLD); */
+ /* clean up more and inform the client that the test is ending
+ * rac 2/27/10
+ */
+ send_msg(head_ptr->ctlsockfd, SRV_QUEUE, "9999", 4);
+ shutdown(head_ptr->ctlsockfd, SHUT_WR);
+ close(head_ptr->ctlsockfd);
tpid = head_ptr->pid;
child_sig(-1);
kill(tpid, SIGTERM);
@@ -1792,8 +1802,12 @@
if (((multiple == 0) && (waiting == 1)) ||
((multiple == 1) && (mclients == 0)))
testing = 0;
- if (waiting > 0)
- waiting--;
+ /* should not decrement waiting here, it was decrementd in the child_sig() routine
+ * RAC 2/27/09
+ */
+ /* if (waiting > 0)
+ * waiting--;
+ */
if (waiting == 0)
mclients = 0;
}
@@ -1832,23 +1846,28 @@
clilen = sizeof(cli_addr);
for (;;) {
ctlsockfd = accept(listenfd, (struct sockaddr *) &cli_addr, &clilen);
- size_t tmpstrlen = sizeof(tmpstr);
- I2Addr tmp_addr = I2AddrBySockFD(get_errhandle(), ctlsockfd, False);
- I2AddrNodeName(tmp_addr, tmpstr, &tmpstrlen);
- I2AddrFree(tmp_addr);
- log_println(4, "New connection received from 0x%x [%s] sockfd=%d.", tmp_addr, tmpstr, ctlsockfd);
if (ctlsockfd < 0) {
if (errno == EINTR)
continue; /*sig child */
perror("Web100srv server: accept error");
- break;;
- }
+ break;
+ }
+ size_t tmpstrlen = sizeof(tmpstr);
+ I2Addr tmp_addr = I2AddrBySockFD(get_errhandle(), ctlsockfd, False);
+ I2AddrNodeName(tmp_addr, tmpstr, &tmpstrlen);
+ I2AddrFree(tmp_addr);
+ log_println(4, "New connection received from 0x%x [%s] sockfd=%d.", tmp_addr, tmpstr, ctlsockfd);
break;
}
/* verify that accept really worked and don't process connections that hav
* failed
* RAC 2/11/10
*/
+ if (ctlsockfd <= 0) {
+ log_println(4, "New connection request failed sockfd=%d reason-%d.", ctlsockfd, errno);
+ continue;
+ }
+
/* the specially crafted data that kicks off the old clients */
write(ctlsockfd, "123456 654321", 13);
new_child = (struct ndtchild *) malloc(sizeof(struct ndtchild));
@@ -1887,16 +1906,17 @@
* If so, tell them to go away.
* changed for M-Lab deployment 1/28/09 RAC
*/
- if (((multiple == 0) && (waiting >= max_clients)) ||
- ((multiple == 1) && (waiting >= (4*max_clients)))) {
+ if (((multiple == 0) && (waiting >= (max_clients-1))) ||
+ ((multiple == 1) && (waiting >= ((4*max_clients)-1)))) {
log_println(0, "Too many clients/mclients (%d) waiting to be served, Please try again later.", chld_pid);
sprintf(tmpstr, "9988");
send_msg(ctlsockfd, SRV_QUEUE, tmpstr, strlen(tmpstr));
close(chld_pipe[1]);
+ shutdown(ctlsockfd, SHUT_WR);
close(ctlsockfd);
kill(chld_pid, SIGTERM);
if (new_child != NULL) {
- log_println(6, "Too may clients freeing child=0x%x",
new_child);
+ log_println(6, "Too many clients freeing child=0x%x",
new_child);
free(new_child);
}
continue;
@@ -1906,6 +1926,7 @@
if (t_opts < 1) {
log_println(3, "Invalid test suite string '%s' received, terminate child", test_suite);
close(chld_pipe[1]);
+ shutdown(ctlsockfd, SHUT_WR);
close(ctlsockfd);
kill(chld_pid, SIGTERM);
if (new_child != NULL) {
@@ -1950,6 +1971,7 @@
log_println(3, "queuing disabled and testing in progress, tell client no");
send_msg(ctlsockfd, SRV_QUEUE, "9999", 4);
close(chld_pipe[1]);
+ shutdown(ctlsockfd, SHUT_WR);
close(ctlsockfd);
log_println(6, "no queuing, free new_child=0x%x", new_child);
free(new_child);
@@ -2002,7 +2024,7 @@

if ((multiple == 1) && (waiting >= max_clients)) {
int xx = waiting/max_clients;
- log_println(3, "%d mclients waiting, tell client (%d) test will being within %d minutes",
+ log_println(3, "%d mclients waiting, tell client (%d) test will begin within %d minutes",
(waiting-max_clients), mchild->pid, xx);
sprintf(tmpstr, "%d", xx);
send_msg(mchild->ctlsockfd, SRV_QUEUE, tmpstr, strlen(tmpstr));
@@ -2213,7 +2235,10 @@
* reset alarm() before every test */
log_println(6, "setting master alarm() to 60 seconds, tests must start (complete?) before this timer expires");

- run_test(agent, ctlsockfd, &testopt, test_suite);
+ if (strncmp(test_suite, "Invalid", 7) != 0) {
+ log_println(3, "Valid test sequence requested, run test for client=%d", getpid());
+ run_test(agent, ctlsockfd, &testopt, test_suite);
+ }

log_println(3, "Successfully returned from run_test() routine");
close(ctlsockfd);
@@ -2235,8 +2260,10 @@
* each child in sequence
*/
log_println(6, "remove pkt-pair children c2s=%d, s2c=%d", testopt.child1, testopt.child2);
- child_sig(testopt.child1);
- child_sig(testopt.child2);
+ if (testopt.child1 != 0)
+ child_sig(testopt.child1);
+ if (testopt.child2 != 0)
+ child_sig(testopt.child2);
exit(0);
break;
}
=======================================
--- /trunk/src/web100srv.h Tue Feb 9 17:30:07 2010
+++ /trunk/src/web100srv.h Sun Feb 28 11:29:32 2010
@@ -194,6 +194,7 @@

/* web100-util */
#ifdef HAVE_LIBWEB100
+void get_iflist(void);
int web100_init(char *VarFileName);
int web100_autotune(int sock, web100_agent* agent, web100_connection* cn);
void web100_middlebox(int sock, web100_agent* agent, web100_connection* cn, char *results);


  • [ndt] r303 committed - More changes to resolve bugs in the mlab distro...., ndt, 02/28/2010

Archive powered by MHonArc 2.6.16.

Top of Page