svn commit: samba r14624 - in branches/SAMBA_3_0/source: . script/tests

metze at samba.org metze at samba.org
Tue Mar 21 15:33:15 GMT 2006


Author: metze
Date: 2006-03-21 15:33:14 +0000 (Tue, 21 Mar 2006)
New Revision: 14624

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=14624

Log:
- add timelimit.c
- add configure tests --with-selftest-prefix=/tmp/samba-test
  this is needed because the path name of unix socket can only be 108 chars long
- add configure test --with-smbtorture4-path=/home/foo/prefix/samba4/bin/smbtorture
  this will be used to run samba4's smbtorture inside samba3's make test later

metze
Added:
   branches/SAMBA_3_0/source/script/tests/timelimit.c
Modified:
   branches/SAMBA_3_0/source/Makefile.in
   branches/SAMBA_3_0/source/configure.in


Changeset:
Modified: branches/SAMBA_3_0/source/Makefile.in
===================================================================
--- branches/SAMBA_3_0/source/Makefile.in	2006-03-21 14:58:23 UTC (rev 14623)
+++ branches/SAMBA_3_0/source/Makefile.in	2006-03-21 15:33:14 UTC (rev 14624)
@@ -11,6 +11,9 @@
 prefix=@prefix@
 exec_prefix=@exec_prefix@
 
+selftest_prefix=@selftest_prefix@
+smbtorture4_path=@smbtorture4_path@
+
 LIBS=@LIBS@
 CC=@CC@
 SHLD=@SHLD@
@@ -1405,6 +1408,10 @@
 
 bin/t_snprintf at EXEEXT@: lib/snprintf.c
 	$(CC) $(FLAGS) @PIE_LDFLAGS@ -o $@ $(DYNEXP) -DTEST_SNPRINTF lib/snprintf.c -lm
+
+bin/timelimit at EXEEXT@: script/tests/timelimit.c
+	$(CC) $(FLAGS) @PIE_LDFLAGS@ -o $@ $(DYNEXP) script/tests/timelimit.c
+
 install: installservers installbin @INSTALL_CIFSMOUNT@ installman installscripts installdat installswat installmodules @INSTALL_LIBSMBCLIENT@ @INSTALL_LIBMSRPC@
 
 install-everything: install installmodules

Modified: branches/SAMBA_3_0/source/configure.in
===================================================================
--- branches/SAMBA_3_0/source/configure.in	2006-03-21 14:58:23 UTC (rev 14623)
+++ branches/SAMBA_3_0/source/configure.in	2006-03-21 15:33:14 UTC (rev 14624)
@@ -308,6 +308,41 @@
 	SOCKWRAP="\$(SOCKET_WRAPPER_OBJ)"
     fi])
 
+#################################################
+# set prefix for 'make test'
+selftest_prefix="./"
+AC_SUBST(selftest_prefix)
+AC_ARG_WITH(selftest-prefix,
+[  --with-selftest-prefix=DIR    The prefix where make test will be runned ($selftest_prefix)],
+[ case "$withval" in
+  yes|no)
+    AC_MSG_WARN([--with-selftest-prefix called without argument - will use default])
+  ;;
+  * )
+    selftest_prefix="$withval"
+    ;;
+  esac
+])
+
+#################################################
+# set path of samba4's smbtorture
+smbtorture4_path=""
+AC_SUBST(smbtorture4_path)
+AC_ARG_WITH(smbtorture4_path,
+[  --with-smbtorture4-path=PATH    The path to a samba4 smbtorture for make test (none)],
+[ case "$withval" in
+  yes|no)
+    AC_MSG_ERROR([--with-smbtorture4-path should take a path])
+  ;;
+  * )
+    smbtorture4_path="$withval"
+    if test -z "$smbtorture4_path" -a ! -f $smbtorture4_path; then
+    	AC_MSG_ERROR(['$smbtorture_path' does not  exist!]) 
+    fi
+  ;;
+ esac
+])
+
 # compile with optimization and without debugging by default, but
 # allow people to set their own preference.
 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"

Added: branches/SAMBA_3_0/source/script/tests/timelimit.c
===================================================================
--- branches/SAMBA_3_0/source/script/tests/timelimit.c	2006-03-21 14:58:23 UTC (rev 14623)
+++ branches/SAMBA_3_0/source/script/tests/timelimit.c	2006-03-21 15:33:14 UTC (rev 14624)
@@ -0,0 +1,78 @@
+/* run a command with a limited timeout
+   tridge at samba.org, June 2005
+
+   attempt to be as portable as possible (fighting posix all the way)
+*/
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <signal.h>
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+
+static void usage(void)
+{
+	printf("usage: timelimit <time> <command>\n");
+}
+
+static void sig_alrm(int sig)
+{
+	kill(0, SIGKILL);
+	exit(1);
+}
+
+static void sig_term_kill(int sig)
+{
+	static int c = 0;
+
+	if (c > 2) {
+		kill(0, SIGKILL);
+		exit(0);
+	}
+
+	c++;
+}
+
+static void sig_term(int sig)
+{
+	kill(0, SIGTERM);
+	signal(SIGTERM, sig_term_kill);
+}
+
+int main(int argc, char *argv[])
+{
+	int maxtime, ret=1;
+
+	if (argc < 3) {
+		usage();
+		exit(1);
+	}
+
+	if (setpgrp() == -1) {
+		perror("setpgrp");
+		exit(1);
+	}
+
+	maxtime = atoi(argv[1]);
+	signal(SIGALRM, sig_alrm);
+	alarm(maxtime);
+	signal(SIGTERM, sig_term);
+
+	if (fork() == 0) {
+		execvp(argv[2], argv+2);
+	}
+
+	do {
+		int status;
+		pid_t pid = wait(&status);
+		if (pid != -1) {
+			ret = WEXITSTATUS(status);
+		} else if (errno == ECHILD) {
+			break;
+		}
+	} while (1);
+
+	exit(ret);
+}



More information about the samba-cvs mailing list