Rev 11822: Initial work on adding a 'member' environment. in file:///home/jelmer/bzr.samba/SAMBA_4_0/

Jelmer Vernooij jelmer at samba.org
Wed Apr 11 13:52:51 GMT 2007


At file:///home/jelmer/bzr.samba/SAMBA_4_0/

------------------------------------------------------------
revno: 11822
revision-id: jelmer at samba.org-20070411135222-4pfbqk17crp20v9c
parent: svn-v2:22170 at 0c0555d6-39d7-0310-84fc-f1cc0bd64818-branches%2fSAMBA_4_0
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: SAMBA_4_0
timestamp: Wed 2007-04-11 15:52:22 +0200
message:
  Initial work on adding a 'member' environment.
added:
  source/script/tests/mktestmember.sh mktestmember.sh-20070411003717-p8x9y5ayzsne0151-2
  source/script/tests/test_member.sh test_member.sh-20070411003717-p8x9y5ayzsne0151-1
modified:
  source/script/tests/README     svn-v2:2305 at 0c0555d6-39d7-0310-84fc-f1cc0bd64818-branches%2fSAMBA_4_0-source%2fscript%2ftests%2fREADME
  source/script/tests/Samba4.pm  svn-v2:21707 at 0c0555d6-39d7-0310-84fc-f1cc0bd64818-branches%2fSAMBA_4_0-source%2fscript%2ftests%2fSamba4.pm
  source/script/tests/TODO       svn-v2:21909 at 0c0555d6-39d7-0310-84fc-f1cc0bd64818-branches%2fSAMBA_4_0-source%2fscript%2ftests%2fTODO
=== added file 'source/script/tests/mktestmember.sh'
--- a/source/script/tests/mktestmember.sh	1970-01-01 00:00:00 +0000
+++ b/source/script/tests/mktestmember.sh	2007-04-11 13:52:22 +0000
@@ -0,0 +1,85 @@
+#!/bin/sh
+
+if [ $# -lt 4 ]
+then
+	echo "$0 PREFIX DOMAIN USERNAME PASSWORD"
+	exit 1
+fi
+
+PREFIX=$1
+DOMAIN=$2
+DC_USERNAME=$3
+DC_PASSWORD=$4
+shift 4
+USERNAME=administrator
+PASSWORD=humbolt
+
+SRCDIR=`pwd`
+oldpwd=`dirname $0`/../..
+mkdir -p $PREFIX 
+cd $PREFIX
+PREFIX_ABS=`pwd`
+ETCDIR=$PREFIX_ABS/etc
+NCALRPCDIR=$PREFIX_ABS/ncalrpc
+PIDDIR=$PREFIX_ABS/pid
+PRIVATEDIR=$PREFIX_ABS/private
+LOCKDIR=$PREFIX_ABS/lockdir
+WINBINDD_SOCKET_DIR=$PREFIX_ABS/winbind_socket
+CONFFILE=$ETCDIR/smb.conf
+TMPDIR=$PREFIX_ABS/tmp
+NETBIOSNAME=localmember
+SMBD_LOGLEVEL=1
+
+mkdir -p $PRIVATEDIR $ETCDIR $PIDDIR $NCALRPCDIR $LOCKDIR $TMPDIR
+
+cat >$CONFFILE<<EOF
+[global]
+	netbios name = $NETBIOSNAME
+	workgroup = $DOMAIN
+	private dir = $PRIVATEDIR
+	pid directory = $PIDDIR
+	ncalrpc dir = $NCALRPCDIR
+	lock dir = $LOCKDIR
+	setup directory = $SRCDIR/setup
+	js include = $SRCDIR/scripting/libjs
+	winbindd socket directory = $WINBINDD_SOCKET_DIR
+	name resolve order = bcast
+	interfaces = 127.0.0.5/8
+	panic action = $SRCDIR/script/gdb_backtrace %PID% %PROG%
+	wins support = yes
+	server role = domain member
+	max xmit = 32K
+	server max protocol = SMB2
+	notify:inotify = false
+	ldb:nosync = true
+	system:anonymous = true
+#We don't want to pass our self-tests if the PAC code is wrong
+	gensec:require_pac = true
+	log level = $SMBD_LOGLEVEL
+EOF
+
+PROVISION_OPTIONS="$CONFIGURATION --host-name=$NETBIOSNAME --host-ip=127.0.0.1"
+PROVISION_OPTIONS="$PROVISION_OPTIONS --quiet --domain $DOMAIN --realm $REALM"
+PROVISION_OPTIONS="$PROVISION_OPTIONS --adminpass $PASSWORD --root=$ROOT"
+PROVISION_OPTIONS="$PROVISION_OPTIONS --simple-bind-dn=cn=Manager,$BASEDN --password=$PASSWORD --root=$ROOT"
+$srcdir/bin/smbscript $srcdir/setup/provision $PROVISION_OPTIONS >&2
+
+$srcdir/bin/net join member $DOMAIN -U$DC_USERNAME%$DC_PASSWORD >&2 || {
+	echo "Join failed"
+	exit $?
+}
+
+echo "PREFIX_ABS=$PREFIX_ABS"
+echo "PIDDIR=$PIDDIR"
+echo "SERVER=$SERVER"
+echo "NETBIOSNAME=$NETBIOSNAME"
+echo "DOMAIN=$DOMAIN"
+echo "USERNAME=$USERNAME"
+echo "REALM=$REALM"
+echo "PASSWORD=$PASSWORD"
+echo "SRCDIR=$SRCDIR"
+echo "PREFIX=$PREFIX"
+echo "CONFFILE=$CONFFILE"
+echo "WINBINDD_SOCKET_DIR=$WINBINDD_SOCKET_DIR"
+echo "NCALRPCDIR=$NCALRPCDIR"
+echo "CONFIGURATION=$CONFIGURATION"

=== added file 'source/script/tests/test_member.sh'
--- a/source/script/tests/test_member.sh	1970-01-01 00:00:00 +0000
+++ b/source/script/tests/test_member.sh	2007-04-11 13:52:22 +0000
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+# add tests to this list as they start passing, so we test
+# that they stay passing
+ncacn_np_tests="RPC-ECHO"
+
+incdir=`dirname $0`
+. $incdir/test_functions.sh
+
+plantest "RPC-ECHO against member server" member $VALGRIND bin/smbtorture $TORTURE_OPTIONS ncacn_np:"\$SERVER" -U"\$USERNAME"%"\$PASSWORD" -W \$DOMAIN $t "$*"

=== modified file 'source/script/tests/README'
--- a/source/script/tests/README	2004-09-13 02:37:39 +0000
+++ b/source/script/tests/README	2007-04-11 13:52:22 +0000
@@ -1,4 +1,13 @@
 This directory contains test scripts that are useful for running a
-bunch of tests all at once. I expect it will eventually be hooked into
-a "make test" framework.
-
+bunch of tests all at once. 
+
+The following environments are currently available:
+
+ - none: No server set up
+ - dc: Domain controller set up. The following environment variables will 
+   be set:
+     * USERNAME
+	 * PASSWORD
+	 * DOMAIN
+	 * REALM
+	 * SERVER

=== modified file 'source/script/tests/Samba4.pm'
--- a/source/script/tests/Samba4.pm	2007-04-11 10:25:02 +0000
+++ b/source/script/tests/Samba4.pm	2007-04-11 13:52:22 +0000
@@ -11,7 +11,7 @@
 
 sub new($$$$) {
 	my ($classname, $bindir, $ldap, $setupdir) = @_;
-	my $self = { ldap => $ldap, bindir => $bindir, setupdir => $setupdir };
+	my $self = { vars => {}, ldap => $ldap, bindir => $bindir, setupdir => $setupdir };
 	bless $self;
 	return $self;
 }
@@ -135,7 +135,24 @@
 	system("bin/nmblookup $testenv_vars->{CONFIGURATION} -U $testenv_vars->{SERVER} $testenv_vars->{NETBIOSNAME}");
 }
 
-sub provision($$)
+sub provision_member($$$)
+{
+	my ($self, $prefix, $dcvars) = @_;
+	my %ret = ();
+	print "PROVISIONING...";
+	open(IN, "$RealBin/mktestmember.sh $prefix $dcvars->{DOMAIN} $dcvars->{USERNAME} $dcvars->{PASSWORD}|") or die("Unable to setup");
+	while (<IN>) {
+		die ("Error parsing `$_'") unless (/^([A-Z0-9a-z_]+)=(.*)$/);
+		$ret{$1} = $2;
+	}
+	close(IN);
+
+	$ret{SMBD_TEST_FIFO} = "$prefix/smbd_test.fifo";
+	$ret{SMBD_TEST_LOG} = "$prefix/smbd_test.log";
+	return \%ret;
+}
+
+sub provision_dc($$)
 {
 	my ($self, $prefix) = @_;
 	my %ret = ();
@@ -186,22 +203,42 @@
 	
 	if ($envname eq "dc") {
 		return $self->setup_dc("$path/dc");
+	} elsif ($envname eq "member") {
+		if (not defined($self->{vars}->{dc})) {
+			$self->setup_dc("$path/dc");
+		}
+		return $self->setup_member("$path/member", $self->{vars}->{dc});
 	} else {
-		die("Samba4 can't provide environment $envname");
+		die("Samba4 can't provide environment '$envname'");
 	}
 }
 
+sub setup_member($$$$)
+{
+	my ($self, $path, $dc_vars) = @_;
+
+	my $env = $self->provision_member($path, $dc_vars);
+
+	$self->check_or_start($env, ($ENV{SMBD_MAX_TIME} or 5400));
+
+	$self->wait_for_start($env);
+
+	return $env;
+}
+
 sub setup_dc($$)
 {
 	my ($self, $path) = @_;
 
-	my $env = $self->provision($path);
+	my $env = $self->provision_dc($path);
 
 	$self->check_or_start($env, 
 		($ENV{SMBD_MAX_TIME} or 5400));
 
 	$self->wait_for_start($env);
 
+	$self->{vars}->{dc} = $env;
+
 	return $env;
 }
 

=== modified file 'source/script/tests/TODO'
--- a/source/script/tests/TODO	2007-03-21 15:57:07 +0000
+++ b/source/script/tests/TODO	2007-04-11 13:52:22 +0000
@@ -1,5 +1,3 @@
 - warn about unexpected successes
-- support for environments
 - better way to detect that smbd has finished initialization
-- allow tests to specify what parameters they need
- - UNC / DCERPC binding strings
+- move ldap-specific code into mktestdc.sh



More information about the samba-cvs mailing list