[openib-general] [PATCH] uDAPL - include dapltest and dtest in build

Arlin Davis arlin.r.davis at intel.com
Fri Feb 23 15:06:09 PST 2007


This uDAPL patch adds both dapltest and dtest utilities, including manual pages, to the DAPL project
build. The dapltest required some modifications to build on x86_64.

James, please review.

Signed-off by: Arlin Davis ardavis at ichips.intel.com

diff --git a/Makefile.am b/Makefile.am
index 1190f20..e2bf4dc 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -179,7 +179,9 @@ libdatinclude_HEADERS = dat/include/dat/dat.h \
 			dat/include/dat/udat.h \
 			dat/include/dat/udat_redirection.h \
 			dat/include/dat/udat_vendor_specific.h 
-			
+		
+man_MANS = man/dtest.1 man/dapltest.1 
+    	
 EXTRA_DIST = dat/common/dat_dictionary.h \
 	     dat/common/dat_dr.h \
 	     dat/common/dat_init.h \
@@ -228,8 +230,10 @@ EXTRA_DIST = dat/common/dat_dictionary.h \
 	     dat/udat/libdat.map \
 	     doc/dat.conf \
 	     dapl/udapl/libdaplcma.map \
-	     dapl/udapl/libdaplscm.map \
-	     libdat.spec.in 
+	     libdat.spec.in \
+	     $(man_MANS)
 	     
 dist-hook: libdat.spec 
 	cp libdat.spec $(distdir)
+	
+SUBDIRS = . test/dtest test/dapltest
diff --git a/configure.in b/configure.in
index bf5ec09..324bfa1 100644
--- a/configure.in
+++ b/configure.in
@@ -1,11 +1,11 @@
 dnl Process this file with autoconf to produce a configure script.
 
 AC_PREREQ(2.57)
-AC_INIT(dapl, 1.2.0, dapl-devel at lists.sourceforge.net)
+AC_INIT(dapl, 1.2.1, openib-general at openib.org)
 AC_CONFIG_SRCDIR([dat/udat/udat.c])
 AC_CONFIG_AUX_DIR(config)
 AM_CONFIG_HEADER(config.h)
-AM_INIT_AUTOMAKE(dapl, 1.2.0)
+AM_INIT_AUTOMAKE(dapl, 1.2.1)
 
 AM_PROG_LIBTOOL
 
@@ -60,5 +60,6 @@ AC_CACHE_CHECK(whether this is an RHEL system, ac_cv_rhel,
     fi)
 AM_CONDITIONAL(OS_RHEL, test "$ac_cv_rhel" = "yes")
 
-AC_CONFIG_FILES([Makefile libdat.spec])
+AC_CONFIG_FILES([Makefile test/dtest/Makefile test/dapltest/Makefile libdat.spec])
+
 AC_OUTPUT
diff --git a/man/dapltest.1 b/man/dapltest.1
new file mode 100644
index 0000000..8ff4493
--- /dev/null
+++ b/man/dapltest.1
@@ -0,0 +1,390 @@
+." Text automatically generated by txt2man
+.TH dapltest 1 "February 23, 2007" "uDAPL 1.2" "USER COMMANDS"
+
+.SH NAME
+\fB
+\fBdapltest \fP- test for the Direct Access Programming Library (DAPL)
+\fB
+.SH DESCRIPTION
+
+Dapltest is a set of tests developed to exercise, characterize,
+and verify the DAPL interfaces during development and porting.
+At least two instantiations of the test must be run. One acts
+as the server, fielding requests and spawning server-side test
+threads as needed. Other client invocations connect to the server
+and issue test requests. The server side of the test, once invoked,
+listens continuously for client connection requests, until quit or 
+killed. Upon receipt of a connection request, the connection is 
+established, the server and client sides swap version numbers to 
+verify that they are able to communicate, and the client sends 
+the test request to the server. If the version numbers match, 
+and the test request is well-formed, the server spawns the threads
+needed to run the test before awaiting further connections.
+.SH USAGE
+
+dapltest [ -f script_file_name ]
+[ -T S|Q|T|P|L ] [ -D device_name ] [ -d ] [ -R HT|LL|EC|PM|BE ]
+.PP
+With no arguments, dapltest runs as a server using default values,
+and loops accepting requests from clients.
+
+The -f option allows all arguments to be placed in a file, to ease
+test automation.
+
+The following arguments are common to all tests:
+.TP
+.B
+[ -T S|Q|T|P|L ]
+Test function to be performed:
+.RS
+.TP
+.B
+S
+- server loop
+.TP
+.B
+Q
+- quit, client requests that server
+wait for any outstanding tests to
+complete, then clean up and exit
+.TP
+.B
+T
+- transaction test, transfers data between 
+client and server
+.TP
+.B
+P
+- performance test, times DTO operations
+.TP
+.B
+L
+- limit test, exhausts various resources,
+runs in client w/o server interaction
+Default: S
+.RE
+.TP
+.B
+[ -D device_name ]
+Specifies the interface adapter name as documented in 
+the /etc/dat.conf static configuration file. This name 
+corresponds to the provider library to open. 
+Default: none
+.TP
+.B
+[ -d ]
+Enables extra debug verbosity, primarily tracing
+of the various DAPL operations as they progress.
+Repeating this parameter increases debug spew.
+Errors encountered result in the test spewing some
+explanatory text and stopping; this flag provides
+more detail about what lead up to the error.
+Default: zero
+.TP
+.B
+[ -R BE ]
+Indicate the quality of service (QoS) desired.
+Choices are:
+.RS
+.TP
+.B
+HT
+- high throughput
+.TP
+.B
+LL
+- low latency
+.TP
+.B
+EC
+- economy (neither HT nor LL)
+.TP
+.B
+PM
+- premium
+.TP
+.B
+BE
+- best effort
+Default: BE
+.RE
+.RE
+.PP
+.B
+Usage - Quit test client
+.PP
+.nf
+.fam C
+    dapltest [Common_Args] [ -s server_name ]
+
+    Quit testing (-T Q) connects to the server to ask it to clean up and
+    exit (after it waits for any outstanding test runs to complete).
+    In addition to being more polite than simply killing the server,
+    this test exercises the DAPL object teardown code paths.
+    There is only one argument other than those supported by all tests:
+
+    -s server_name      Specifies the name of the server interface.
+                        No default.
+
+
+.fam T
+.fi
+.B
+Usage - Transaction test client
+.PP
+.nf
+.fam C
+    dapltest [Common_Args] [ -s server_name ]
+             [ -t threads ] [ -w endpoints ] [ -i iterations ] [ -Q ] 
+             [ -V ] [ -P ] OPclient OPserver [ op3, 
+
+    Transaction testing (-T T) transfers a variable amount of data between 
+    client and server.  The data transfer can be described as a sequence of 
+    individual operations; that entire sequence is transferred 'iterations' 
+    times by each thread over all of its endpoint(s).
+
+    The following parameters determine the behavior of the transaction test:
+
+    -s server_name      Specifies the name or IP address of the server interface.
+                        No default.
+
+    [ -t threads ]      Specify the number of threads to be used.
+                        Default: 1
+
+    [ -w endpoints ]    Specify the number of connected endpoints per thread.
+                        Default: 1
+
+    [ -i iterations ]   Specify the number of times the entire sequence
+                        of data transfers will be made over each endpoint.
+                        Default: 1000
+
+    [ -Q ]              Funnel completion events into a CNO.
+                        Default: use EVDs
+
+    [ -V ]              Validate the data being transferred.
+                        Default: ignore the data
+
+    [ -P ]              Turn on DTO completion polling
+                        Default: off
+
+    OP1 OP2 [ OP3, \.\.\. ]
+                        A single transaction (OPx) consists of:
+
+                        server|client   Indicates who initiates the
+                                        data transfer.
+
+                        SR|RR|RW        Indicates the type of transfer:
+                                        SR  send/recv
+                                        RR  RDMA read
+                                        RW  RDMA write
+                        Defaults: none
+
+                        [ seg_size [ num_segs ] ]
+                                        Indicates the amount and format
+                                        of the data to be transferred.
+                                        Default:  4096  1
+                                                  (i.e., 1 4KB buffer)
+
+                        [ -f ]          For SR transfers only, indicates
+                                        that a client's send transfer
+                                        completion should be reaped when
+                                        the next recv completion is reaped.
+                                        Sends and receives must be paired
+                                        (one client, one server, and in that
+                                        order) for this option to be used.
+
+    Restrictions:  
+
+    Due to the flow control algorithm used by the transaction test, there 
+    must be at least one SR OP for both the client and the server.  
+
+    Requesting data validation (-V) causes the test to automatically append 
+    three OPs to those specified. These additional operations provide 
+    synchronization points during each iteration, at which all user-specified 
+    transaction buffers are checked. These three appended operations satisfy 
+    the "one SR in each direction" requirement.
+
+    The transaction OP list is printed out if -d is supplied.
+
+.fam T
+.fi
+.B
+Usage - Performance test client
+.PP
+.nf
+.fam C
+    dapltest [Common_Args] -s server_name [ -m p|b ]
+             [ -i iterations ] [ -p pipeline ] OP
+
+    Performance testing (-T P) times the transfer of an operation.
+    The operation is posted 'iterations' times.
+
+    The following parameters determine the behavior of the transaction test:
+
+    -s server_name      Specifies the name or IP address of the server interface.
+                        No default.
+
+    -m b|p              Used to choose either blocking (b) or polling (p)
+                        Default: blocking (b)
+
+    [ -i iterations ]   Specify the number of times the entire sequence
+                        of data transfers will be made over each endpoint.
+                        Default: 1000
+
+    [ -p pipeline ]     Specify the pipline length, valid arguments are in 
+                        the range [0,MAX_SEND_DTOS]. If a value greater than 
+                        MAX_SEND_DTOS is requested the value will be
+                        adjusted down to MAX_SEND_DTOS.
+                        Default: MAX_SEND_DTOS
+                        
+    OP                  Specifies the operation as follow:                 
+
+                        RR|RW           Indicates the type of transfer:
+                                        RR  RDMA read
+                                        RW  RDMA write
+                                        Defaults: none
+
+                        [ seg_size [ num_segs ] ]
+                                        Indicates the amount and format
+                                        of the data to be transferred.
+                                        Default:  4096  1
+                                                  (i.e., 1 4KB buffer)
+.fam T
+.RE
+.RE
+.PP
+.B
+Usage - Limit test client
+.PP
+.nf
+.fam C
+    Limit testing (-T L) neither requires nor connects to any server
+    instance.  The client runs one or more tests which attempt to
+    exhaust various resources to determine DAPL limits and exercise
+    DAPL error paths.  If no arguments are given, all tests are run.
+
+    Limit testing creates the sequence of DAT objects needed to
+    move data back and forth, attempting to find the limits supported
+    for the DAPL object requested.  For example, if the LMR creation
+    limit is being examined, the test will create a set of
+    {IA, PZ, CNO, EVD, EP} before trying to run dat_lmr_create() to
+    failure using that set of DAPL objects.  The 'width' parameter
+    can be used to control how many of these parallel DAPL object
+    sets are created before beating upon the requested constructor.
+    Use of -m limits the number of dat_*_create() calls that will
+    be attempted, which can be helpful if the DAPL in use supports
+    essentailly unlimited numbers of some objects.
+
+    The limit test arguments are:
+
+    [ -m maximum ]      Specify the maximum number of dapl_*_create()
+                        attempts.
+                        Default: run to object creation failure
+
+    [ -w width ]        Specify the number of DAPL object sets to
+                        create while initializing.
+                        Default: 1
+
+    [ limit_ia ]        Attempt to exhaust dat_ia_open()
+
+    [ limit_pz ]        Attempt to exhaust dat_pz_create()
+
+    [ limit_cno ]       Attempt to exhaust dat_cno_create()
+
+    [ limit_evd ]       Attempt to exhaust dat_evd_create()
+
+    [ limit_ep ]        Attempt to exhaust dat_ep_create()
+
+    [ limit_rsp ]       Attempt to exhaust dat_rsp_create()
+
+    [ limit_psp ]       Attempt to exhaust dat_psp_create()
+
+    [ limit_lmr ]       Attempt to exhaust dat_lmr_create(4KB)
+
+    [ limit_rpost ]     Attempt to exhaust dat_ep_post_recv(4KB)
+
+    [ limit_size_lmr ]  Probe maximum size dat_lmr_create()
+
+.nf
+.fam C
+                        Default: run all tests
+
+
+.fam T
+.fi
+.SH EXAMPLES
+
+dapltest -T S -d -D OpenIB-cma
+.PP
+.nf
+.fam C
+                        Starts a server process with debug verbosity.
+
+.fam T
+.fi
+dapltest -T T -d -s host1-ib0 -D OpenIB-cma -i 100 client SR 4096 2 server SR 4096 2
+.PP
+.nf
+.fam C
+                        Runs a transaction test, with both sides
+                        sending one buffer with two 4KB segments,
+                        one hundred times.
+
+.fam T
+.fi
+dapltest -T P -d -s host1-ib0 -D OpenIB-cma -i 100 SR 4096 2
+.PP
+.nf
+.fam C
+                        Runs a performance test, with the client 
+                        sending one buffer with two 4KB segments,
+                        one hundred times.
+
+.fam T
+.fi
+dapltest -T Q -s host1-ib0 -D OpenIB-cma
+.PP
+.nf
+.fam C
+                        Asks the server to clean up and exit.
+
+.fam T
+.fi
+dapltest -T L -D OpenIB-cma -d -w 16 -m 1000
+.PP
+.nf
+.fam C
+                        Runs all of the limit tests, setting up
+                        16 complete sets of DAPL objects, and
+                        creating at most a thousand instances
+                        when trying to exhaust resources.
+
+.fam T
+.fi
+dapltest -T T -V -d -t 2 -w 4 -i 55555 -s linux3 -D OpenIB-cma  
+client RW 4096 1 server RW 2048 4 
+client SR 1024 4 server SR 4096 2 
+client SR 1024 3 -f server SR 2048 1 -f
+.PP
+.nf
+.fam C
+                        Runs a more complicated transaction test,
+                        with two thread using four EPs each,
+                        sending a more complicated buffer pattern
+                        for a larger number of iterations,
+                        validating the data received.
+
+
+.fam T
+.fi
+.RE
+.TP
+.B
+BUGS
+(and  To Do List)
+.PP
+.nf
+.fam C
+    Use of CNOs (-Q) is not yet supported.
+
+    Further limit tests could be added.
diff --git a/man/dtest.1 b/man/dtest.1
new file mode 100755
index 0000000..1e227e5
--- /dev/null
+++ b/man/dtest.1
@@ -0,0 +1,78 @@
+.TH dtest 1 "February 23, 2007" "uDAPL 1.2" "USER COMMANDS"
+
+.SH NAME
+dtest \- simple uDAPL send/receive and RDMA test
+
+.SH SYNOPSIS
+.B dtest
+[\-P provider] [\-b buf size] [\-B burst count][\-v] [\-c] [\-p] [\-d]\fB [-s]\fR
+
+.B dtest
+[\-P provider] [\-b buf size] [\-B burst count][\-v] [\-c] [\-p] [\-d]\fB [-h HOSTNAME]\fR
+
+.SH DESCRIPTION
+.PP
+dtest is a simple test used to exercise and verify the uDAPL interfaces. 
+At least two instantiations of the test must be run. One acts as the server 
+and the other the client. The server side of the test, once invoked listens 
+for connection requests, until timing out or killed. Upon receipt of a cd 
+connection request, the connection is established, the server and client 
+sides exchange information necessary to perform RDMA writes and reads.
+
+.SH OPTIONS
+
+.PP
+.TP
+\fB\-P\fR=\fIPROVIDER\fR
+use \fIPROVIDER\fR to specify uDAPL interface using /etc/dat.conf (default OpenIB-cma)
+.TP
+\fB\-b\fR=\fIBUFFER_SIZE\fR
+use buffer size \fIBUFFER_SIZE\fR for RDMA(default 64)
+.TP
+\fB\-B\fR=\fIBURST_COUNT\fR
+use busrt count \fIBURST_COUNT\fR for interations (default 10)
+.TP
+\fB\-v\fR, verbose output(default off)
+.TP
+\fB\-c\fR, use consumer notification events (default off)
+.TP
+\fB\-p\fR, use polling (default wait for event)
+.TP
+\fB\-d\fR, delay in seconds before close (default off)
+.TP
+\fB\-s\fR, run as server (default - run as server)
+.TP
+\fB\-h\fR=\fIHOSTNAME\fR
+use \fIHOSTNAME\fR to specify server hostname or IP address (default - none)
+
+.SH EXAMPLES
+
+dtest -P OpenIB-cma -v -s
+.PP
+.nf
+.fam C
+     Starts a server process with debug verbosity using provider OpenIB-cma.
+
+.fam T
+.fi
+dtest -P OpenIB-cma -h server1-ib0 
+.PP
+.nf
+.fam C
+     Starts a client process, using OpenIB-cma provider to connect to hostname server1-ib0.
+
+.fam T
+
+.SH SEE ALSO
+.BR dapltest(1)
+
+.SH AUTHORS
+.TP
+Arlin Davis
+.RI < ardavis at ichips.intel.com >
+
+.SH BUGS 
+
+
+
+
diff --git a/test/dapltest/Makefile.am b/test/dapltest/Makefile.am
new file mode 100755
index 0000000..0c83924
--- /dev/null
+++ b/test/dapltest/Makefile.am
@@ -0,0 +1,56 @@
+INCLUDES =  -I include \
+	    -I mdep/linux
+         
+bin_PROGRAMS = dapltest
+
+dapltest_SOURCES =				\
+	cmd/dapl_main.c				\
+	cmd/dapl_params.c			\
+	cmd/dapl_fft_cmd.c			\
+	cmd/dapl_getopt.c			\
+	cmd/dapl_limit_cmd.c			\
+	cmd/dapl_netaddr.c			\
+	cmd/dapl_performance_cmd.c		\
+	cmd/dapl_qos_util.c			\
+	cmd/dapl_quit_cmd.c			\
+	cmd/dapl_server_cmd.c			\
+	cmd/dapl_transaction_cmd.c		\
+	test/dapl_bpool.c			\
+	test/dapl_client.c			\
+	test/dapl_client_info.c			\
+	test/dapl_cnxn.c			\
+	test/dapl_execute.c			\
+	test/dapl_fft_connmgt.c			\
+	test/dapl_fft_endpoint.c		\
+	test/dapl_fft_hwconn.c			\
+	test/dapl_fft_mem.c			\
+	test/dapl_fft_pz.c			\
+	test/dapl_fft_queryinfo.c		\
+	test/dapl_fft_test.c			\
+	test/dapl_fft_util.c			\
+	test/dapl_limit.c			\
+	test/dapl_memlist.c			\
+	test/dapl_performance_client.c		\
+	test/dapl_performance_server.c		\
+	test/dapl_performance_stats.c		\
+	test/dapl_performance_util.c		\
+	test/dapl_quit_util.c			\
+	test/dapl_server.c			\
+	test/dapl_server_info.c			\
+	test/dapl_test_data.c			\
+	test/dapl_test_util.c			\
+	test/dapl_thread.c			\
+	test/dapl_transaction_stats.c		\
+	test/dapl_transaction_test.c		\
+	test/dapl_transaction_util.c		\
+	test/dapl_util.c			\
+	common/dapl_endian.c			\
+	common/dapl_global.c			\
+	common/dapl_performance_cmd_util.c	\
+	common/dapl_quit_cmd_util.c		\
+	common/dapl_transaction_cmd_util.c	\
+	udapl/udapl_tdep.c			\
+	mdep/linux/dapl_mdep_user.c
+	
+dapltest_LDADD = $(srcdir)/../../dat/udat/libdat.la
+dapltest_LDFLAGS = -lpthread  
diff --git a/test/dapltest/configure.in b/test/dapltest/configure.in
new file mode 100755
index 0000000..ebdd59d
--- /dev/null
+++ b/test/dapltest/configure.in
@@ -0,0 +1,26 @@
+dnl Process this file with autoconf to produce a configure script.
+
+AC_PREREQ(2.57)
+AC_INIT(dapltest, 1.2.1, dapl-devel at lists.sourceforge.net)
+AC_CONFIG_SRCDIR([$top_srcdir/dapl/test/dapltest/cmd/dapl_main.c])
+AC_CONFIG_AUX_DIR(config)
+AM_CONFIG_HEADER(config.h)
+AM_INIT_AUTOMAKE(dapltest, 1.2.1)
+
+AM_PROG_LIBTOOL
+
+dnl Checks for programs
+AC_PROG_CC
+
+dnl Checks for libraries
+if test "$disable_libcheck" != "yes"
+then
+AC_CHECK_LIB(pthread, pthread_attr_init, [],
+    AC_MSG_ERROR([pthread_attr_init() not found,  dapltset requires pthreads]))
+fi
+
+dnl Checks for header files.
+
+AC_CONFIG_FILES([Makefile])
+
+AC_OUTPUT
diff --git a/test/dapltest/mdep/linux/dapl_mdep_user.h b/test/dapltest/mdep/linux/dapl_mdep_user.h
index 981783d..c05dd30 100644
--- a/test/dapltest/mdep/linux/dapl_mdep_user.h
+++ b/test/dapltest/mdep/linux/dapl_mdep_user.h
@@ -138,10 +138,16 @@ DT_Mdep_GetTimeStamp ( void )
     } while (tbu0 != tbu1);
     return (((unsigned long long)tbu0) << 32) | tbl;
 #else
+#if defined(__x86_64__)
+      unsigned int __a,__d; 
+      asm volatile("rdtsc" : "=a" (__a), "=d" (__d)); 
+      return ((unsigned long)__a) | (((unsigned long)__d)<<32);
+#else
 #error "Non-Pentium and Non-PPC Linux - unimplemented"
 #endif
 #endif
 #endif
+#endif
 }
 
 /*
diff --git a/test/dtest/Makefile.am b/test/dtest/Makefile.am
new file mode 100755
index 0000000..ac9837b
--- /dev/null
+++ b/test/dtest/Makefile.am
@@ -0,0 +1,4 @@
+bin_PROGRAMS = dtest
+dtest_SOURCES = dtest.c
+dtest_LDADD = $(srcdir)/../../dat/udat/libdat.la
+
diff --git a/test/dtest/configure.in b/test/dtest/configure.in
new file mode 100755
index 0000000..822df5e
--- /dev/null
+++ b/test/dtest/configure.in
@@ -0,0 +1,21 @@
+dnl Process this file with autoconf to produce a configure script.
+
+AC_PREREQ(2.57)
+AC_INIT(dtest, 1.2.1, dapl-devel at lists.sourceforge.net)
+AC_CONFIG_SRCDIR([$top_srcdir/dapl/test/dtest/dtest.c])
+AC_CONFIG_AUX_DIR(config)
+AM_CONFIG_HEADER(config.h)
+AM_INIT_AUTOMAKE(dtest, 1.2.1)
+
+AM_PROG_LIBTOOL
+
+dnl Checks for programs
+AC_PROG_CC
+
+dnl Checks for libraries
+
+dnl Checks for header files.
+
+AC_CONFIG_FILES([Makefile])
+
+AC_OUTPUT
diff --git a/test/dtest/makefile b/test/dtest/makefile
deleted file mode 100644
index 858d77f..0000000
--- a/test/dtest/makefile
+++ /dev/null
@@ -1,16 +0,0 @@
-CC         = gcc
-CFLAGS     = -O2 -g
-
-DAT_INC = ../../dat/include
-DAT_LIB = /usr/local/lib
-
-all: dtest 
-
-clean:
-	rm -f *.o;touch *.c;rm -f dtest
-
-dtest: ./dtest.c
-	$(CC) $(CFLAGS) ./dtest.c -o dtest \
-	-DDAPL_PROVIDER='"OpenIB-cma"' \
-	-I $(DAT_INC) -L $(DAT_LIB) -ldat
-







More information about the general mailing list