[WIP][PATCH] selftest: add clusteredmember (1-node) env

Michael Adam obnox at samba.org
Tue Jul 12 14:55:16 UTC 2016


I forgot to mention how to test it:

1. configure samba including --with-cluster-support
   which will build ctdb and samba's ctdb adapter.

2. build samba (make -j)

3. run (e.g.) 'make test TESTS=clusteredmember'

Nowadays, thanks to the integrated ctdb,
it's as easy as that! o :-))

When I started working on this, it was more involved,
and I triggered it through autobuild.py.
This can still be done by running:

  'script/autobuild.py samba-ctdb'

The code also resides in my master-clusteredmember-1node-wip
branch:

https://git.samba.org/?p=obnox/samba/samba-obnox.git;a=shortlog;h=refs/heads/master-clusteredmember-1node-wip

FYI the 3-node work resides in this branch:

https://git.samba.org/?p=obnox/samba/samba-obnox.git;a=shortlog;h=refs/heads/master-clusteredmember-3node

but needs to reworked on top of this from 19 months ago. ;-)

Cheers - Michael




On 2016-07-12 at 16:41 +0200, Michael Adam wrote:
> Hi,
> 
> here is the current WIP state of my clusteredmember
> selftest environment. It is something I have been
> working on in the background since a couple of years
> now, whenever time permitted...
> 
> The patches add the env, let the current member tests
> run against this new env too, and call it in the
> 'samba-ctdb' autobuild target.
> 
> The environment currently implements a 1-node ctdb 'cluster'.
> So adding this would make sure that the software stack
> ctdb<->samba gets executed. Not testing for more complicated
> multi-node failover scenarios. But I have an extension of
> this env to a 3-node cluster in progress, but this needs a
> little more work.
> 
> This env had some problems recently, in that the started
> failing the ping-dc test or the smbclient -L test on the
> started member randomly. This started somewhere between
> sambaXP and now... Still trying to understand what goes wrong.
> 
> So I assume this is not for pushing yet.
> But I appreciate any comments / hints!
> 
> Cheers - Michael
> 
> PS: Note you need the previously sent patch to fix
> the lock-oder-violation g_lock vs xattr_tdb, in order
> to run this successfully (if it gets across the
> startup checks...)
> 

> From 1b1c1c352f2fe5d4f831cabed609b5ad7e655220 Mon Sep 17 00:00:00 2001
> From: Michael Adam <obnox at samba.org>
> Date: Tue, 12 Jul 2016 13:12:24 +0200
> Subject: [PATCH 1/3] selftest:Samba3: add a clusteredmember environment
> 
> This will allow running tests against a ctdb setup,
> thereby covering the dbrwap_ctdb->ctdb stack in real
> SMB tests.  For a start, just add a 1-node "cluster",
> just to excercise the code.
> 
> Signed-off-by: Michael Adam <obnox at samba.org>
> ---
>  selftest/target/Samba.pm  |   1 +
>  selftest/target/Samba3.pm | 444 ++++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 445 insertions(+)
> 
> diff --git a/selftest/target/Samba.pm b/selftest/target/Samba.pm
> index bb33fb7..fcf2be3 100644
> --- a/selftest/target/Samba.pm
> +++ b/selftest/target/Samba.pm
> @@ -298,6 +298,7 @@ sub get_interface($)
>      $interfaces{"fileserver"} = 35;
>      $interfaces{"fakednsforwarder1"} = 36;
>      $interfaces{"fakednsforwarder2"} = 37;
> +    $interfaces{"clusteredmember"} = 38;
>  
>      # update lib/socket_wrapper/socket_wrapper.c
>      #  #define MAX_WRAPPED_INTERFACES 40
> diff --git a/selftest/target/Samba3.pm b/selftest/target/Samba3.pm
> index 4e3169d..2cb3e6e 100755
> --- a/selftest/target/Samba3.pm
> +++ b/selftest/target/Samba3.pm
> @@ -62,6 +62,19 @@ sub new($$) {
>  sub teardown_env($$)
>  {
>  	my ($self, $envvars) = @_;
> +
> +	$self->teardown_env_samba($envvars);
> +
> +	if (defined($envvars->{ctdb_vars})) {
> +		$self->teardown_env_ctdb($envvars->{ctdb_vars});
> +	}
> +
> +	return;
> +}
> +
> +sub teardown_env_samba($$)
> +{
> +	my ($self, $envvars) = @_;
>  	my $count = 0;
>  
>  	# This should cause smbd to terminate gracefully
> @@ -119,6 +132,79 @@ sub teardown_env($$)
>  	return 0;
>  }
>  
> +sub teardown_env_ctdb($$)
> +{
> +	my ($self, $envvars) = @_;
> +
> +	my $ctdbd_pid = $envvars->{CTDBD_TL_PID};
> +	#my $ctdbdpid = read_pid($envvars, "ctdbd");
> +
> +	$self->teardown_env_one_pid($ctdbd_pid, $envvars->{STDIN_PIPE}, "ctdbd");
> +
> +	# teardown via pipe does not work properly for ctdbd. why?
> +	# getting the pid of the real ctdbd and tearing it down...
> +
> +	open(PID, "<$envvars->{CTDBD_PIDFILE}");
> +	my $ctdbd_real_pid = <PID>;
> +	close(PID);
> +	chomp($ctdbd_real_pid);
> +
> +	$self->teardown_env_one_pid($ctdbd_real_pid, undef, "ctdbd_real");
> +
> +	return 0;
> +}
> +
> +sub teardown_env_one_pid($$$)
> +{
> +	my ($self, $pid, $pipe, $name) = @_;
> +	my $count = 0;
> +
> +	# This should cause the child to terminate gracefully
> +	if (defined($pipe)) {
> +		close($pipe);
> +	}
> +
> +	until ($count > 20) {
> +		my $child = Samba::cleanup_child($pid, $name);
> +		print STDERR "$name child: '$child'\n";
> +		if ($child == -1) {
> +			last;
> +		}
> +		sleep(1);
> +		$count++;
> +	}
> +
> +	if ($count <= 20 && kill(0, $pid) == 0) {
> +		print STDERR "kill $pid gave 0\n";
> +		return;
> +	}
> +
> +	printf STDERR "sig-term to $pid\n";
> +	$self->stop_sig_term($pid);
> +
> +	$count = 0;
> +	until ($count > 10) {
> +		my $child = Samba::cleanup_child($pid, $name);
> +		print STDERR "$name child: $child\n";
> +		if ($child == -1) {
> +			last;
> +		}
> +		sleep(1);
> +		$count++;
> +	}
> +
> +	if ($count <= 10 && kill(0, $pid) == 0) {
> +		print STDERR "kill $pid gave 0\n";
> +		return;
> +	}
> +
> +	warn("timelimit process did not quit on SIGTERM, sending SIGKILL");
> +	$self->stop_sig_kill($pid);
> +
> +	return 0;
> +}
> +
> +
>  sub getlog_env_app($$$)
>  {
>  	my ($self, $envvars, $name) = @_;
> @@ -152,6 +238,14 @@ sub getlog_env($$)
>  	return $ret;
>  }
>  
> +sub getlog_env_ctdb($$)
> +{
> +	my ($self, $envvars) = @_;
> +	my $ret = "";
> +
> +	$ret .= $self->getlog_env_app($envvars, "CTDBD");
> +}
> +
>  sub check_env($$)
>  {
>  	my ($self, $envvars) = @_;
> @@ -198,6 +292,13 @@ sub setup_env($$$)
>  			}
>  		}
>  		return $self->setup_nt4_member("$path/nt4_member", $self->{vars}->{nt4_dc});
> +	} elsif ($envname eq "clusteredmember") {
> +		if (not defined($self->{vars}->{nt4_dc})) {
> +			if (not defined($self->setup_nt4_dc("$path/nt4_dc"))) {
> +			        return undef;
> +			}
> +		}
> +		return $self->setup_clusteredmember("$path/clusteredmember", $self->{vars}->{nt4_dc});
>  	} else {
>  		return "UNKNOWN";
>  	}
> @@ -365,6 +466,93 @@ sub setup_nt4_member($$$)
>  	return $ret;
>  }
>  
> +sub setup_clusteredmember($$$$)
> +{
> +	my ($self, $prefix, $nt4_dc_vars) = @_;
> +	my $count = 0;
> +	my $rc;
> +
> +	print "PROVISIONING CLUSTEREDMEMBER...";
> +
> +	my $prefix_abs = abs_path($prefix);
> +	mkdir($prefix_abs, 0777);
> +
> +	my $ctdbprefix = "$prefix/ctdb";
> +	my $sambaprefix = "$prefix/samba";
> +	my $server_name = "CLUSTEREDMEMBER";
> +
> +	my $ctdb_vars = $self->setup_ctdb($ctdbprefix, $server_name);
> +
> +	$ctdb_vars or return undef;
> +
> +	print "PROVISIONING CLUSTERED SAMBA...";
> +
> +	my $require_mutexes = "dbwrap_tdb_require_mutexes:* = yes";
> +	$require_mutexes = "" if ($ENV{SELFTEST_DONT_REQUIRE_TDB_MUTEX_SUPPORT} eq "1");
> +
> +	my $member_options = "
> +	security = domain
> +	server signing = on
> +	clustering = yes
> +	ctdbd socket = $ctdb_vars->{SOCKET_FILE}
> +	dbwrap_tdb_mutexes:* = yes
> +	${require_mutexes}
> +";
> +
> +	my $ret = $self->provision($sambaprefix,
> +				   $server_name,
> +				   "clustermember8pass",
> +				   $member_options);
> +
> +	$ret or return undef;
> +
> +	$ret->{ctdb_vars} = $ctdb_vars;
> +
> +	my $nmblookup = Samba::bindir_path($self, "nmblookup");
> +	do {
> +		print "Waiting for the LOGON SERVER registration ...\n";
> +		$rc = system("$nmblookup $ret->{CONFIGURATION} $ret->{DOMAIN}\#1c");
> +		if ($rc != 0) {
> +			sleep(1);
> +		}
> +		$count++;
> +	} while ($rc != 0 && $count < 10);
> +	if ($count == 10) {
> +		print "NMBD not reachable after 10 retries\n";
> +		teardown_env($self, $ret);
> +		return 0;
> +	}
> +
> +	my $net = Samba::bindir_path($self, "net");
> +	my $cmd = "";
> +	$cmd .= "SOCKET_WRAPPER_DEFAULT_IFACE=\"$ret->{SOCKET_WRAPPER_DEFAULT_IFACE}\" ";
> +	$cmd .= "SELFTEST_WINBINDD_SOCKET_DIR=\"$ret->{SELFTEST_WINBINDD_SOCKET_DIR}\" ";
> +	$cmd .= "$net join $ret->{CONFIGURATION} $nt4_dc_vars->{DOMAIN} member";
> +	$cmd .= " -U$nt4_dc_vars->{USERNAME}\%$nt4_dc_vars->{PASSWORD}";
> +
> +	if (system($cmd) != 0) {
> +		warn("Join failed\n$cmd");
> +		return undef;
> +	}
> +
> +	if (not $self->check_or_start($ret, "yes", "yes", "yes")) {
> +		return undef;
> +	}
> +
> +	$ret->{DC_SERVER} = $nt4_dc_vars->{SERVER};
> +	$ret->{DC_SERVER_IP} = $nt4_dc_vars->{SERVER_IP};
> +	$ret->{DC_SERVER_IPV6} = $nt4_dc_vars->{SERVER_IPV6};
> +	$ret->{DC_NETBIOSNAME} = $nt4_dc_vars->{NETBIOSNAME};
> +	$ret->{DC_USERNAME} = $nt4_dc_vars->{USERNAME};
> +	$ret->{DC_PASSWORD} = $nt4_dc_vars->{PASSWORD};
> +
> +	$ret->{SOCKET_FILE} = $ctdb_vars->{SOCKET_FILE};
> +
> +	$self->{vars}->{clusteredmember} = $ret;
> +
> +	return $ret;
> +}
> +
>  sub setup_admember($$$$)
>  {
>  	my ($self, $prefix, $dcvars) = @_;
> @@ -1961,4 +2149,260 @@ sub wait_for_start($$$$$)
>  	return 1;
>  }
>  
> +##
> +## provision and start of ctdb
> +##
> +
> +sub setup_ctdb($$$)
> +{
> +	my ($self, $prefix, $server_name) = @_;
> +
> +	print "PROVISIONING CTDB...";
> +
> +	my $vars = $self->provision_ctdb($prefix, $server_name);
> +
> +	$vars or return undef;
> +
> +	$self->check_or_start_ctdb($vars);
> +
> +	if (not $self->wait_for_start_ctdb($vars)) {
> +		return undef;
> +	}
> +
> +	return $vars;
> +}
> +
> +sub check_or_start_ctdb($$) {
> +	my ($self, $env_vars) = @_;
> +
> +	# use a pipe for stdin in the child processes. This allows
> +	# those processes to monitor the pipe for EOF to ensure they
> +	# exit when the test script exits
> +	pipe(STDIN_READER, $env_vars->{STDIN_PIPE});
> +
> +	unlink($env_vars->{CTDBD_TEST_LOG});
> +	print "STARTING CTDBD...";
> +
> +	my $ctdbd_cmd = "$env_vars->{BINDIR}/ctdbd";
> +
> +	return undef unless (-e "$ctdbd_cmd");
> +
> +	die("'$env_vars->{BINDIR}/ctdbd' is not executable!")
> +		unless (-x "$ctdbd_cmd");
> +
> +	my $pid = fork();
> +
> +	if ($pid == 0) {
> +		open STDOUT, ">$env_vars->{CTDBD_TEST_LOG}";
> +		open STDERR, '>&STDOUT';
> +
> +		SocketWrapper::set_default_iface($env_vars->{SOCKET_WRAPPER_DEFAULT_IFACE});
> +
> +		my @preargs = ();
> +
> +		push @preargs, "CTDB_EVENT_HELPER=$env_vars->{BINDIR}/ctdb_event_helper";
> +		push @preargs, "CTDB_LOCK_HELPER=$env_vars->{BINDIR}/ctdb_lock_helper";
> +		push @preargs, "CTDB_CLUSTER_MUTEX_HELPER=$env_vars->{BINDIR}/ctdb_mutex_fcntl_helper";
> +		push @preargs, "CTDB_RECOVERY_HELPER=$env_vars->{BINDIR}/ctdb_recovery_helper";
> +
> +		push @preargs, (Samba::bindir_path($self, "timelimit"), $self->{server_maxtime});
> +
> +		if(defined($ENV{CTDBD_VALGRIND})) {
> +			push @preargs, split(/ /, $ENV{CTDBD_VALGRIND});
> +		}
> +
> +		my @args = (
> +			"--socket=$env_vars->{SOCKET_FILE}",
> +			"--reclock=$env_vars->{RECLOCK_FILE}",
> +			"--nlist=$env_vars->{NODES_FILE}",
> +			"--nopublicipcheck",
> +			"--nosetsched",
> +			"--event-script-dir=$env_vars->{EVENT_SCRIPT_DIR}",
> +			"--logging=file:$env_vars->{LOG_FILE}",
> +			"-d $env_vars->{DEBUG_LEVEL}",
> +			"--dbdir=$env_vars->{DB_DIR}",
> +			"--dbdir-persistent=$env_vars->{DB_DIR_PERSISTENT}",
> +			"--dbdir-state=$env_vars->{DB_DIR_STATE}",
> +			"--listen=$env_vars->{CTDB_NODE_ADDRESS}",
> +			"--pidfile=$env_vars->{CTDBD_PIDFILE}",
> +		);
> +
> +		my $cmd = join(' ', @preargs, $ctdbd_cmd, @args);
> +
> +		close($env_vars->{STDIN_PIPE});
> +		open STDIN, ">&", \*STDIN_READER or die "can't dup STDIN_READER to STDIN: $!";
> +
> +		exec($cmd) or die("Unable to start ctdbd: $!");
> +	}
> +
> +	$env_vars->{CTDBD_TL_PID} = $pid;
> +	write_pid($env_vars, "ctdbd", $pid);
> +	print "DONE\n";
> +
> +	close(STDIN_READER);
> +
> +	return $self->wait_for_start_ctdb($env_vars);
> +}
> +
> +sub provision_ctdb($$$$)
> +{
> +	my ($self, $prefix, $server_name, $no_delete_prefix) = @_;
> +
> +	my $pub_iface = Samba::get_interface($server_name);
> +	my %ret = ();
> +
> +	# use the same address for internal and public:
> +	my $internal_ip = "127.0.0.$pub_iface";
> +	my $public_ip = "127.0.0.$pub_iface";
> +
> +	my @dirs = ();
> +
> +	my $prefix_abs = abs_path($prefix);
> +
> +	my $var_dir = "$prefix_abs/var";
> +	push @dirs, $var_dir;
> +
> +	my $piddir="$prefix_abs/pid";
> +	push @dirs, $piddir;
> +
> +	#my $run_dir = "$prefix_abs/run";
> +	#push @dirs, $run_dir;
> +
> +	my $reclock_file = "$var_dir/rec.lock";
> +	my $socket_file = "$var_dir/ctdb.socket";
> +	my $log_file = "$var_dir/log.ctdb";
> +	my $pid_file = "$var_dir/ctdbd.pid";
> +
> +	my $db_dir = "$var_dir/ctdb";
> +	push @dirs, $db_dir;
> +
> +	my $db_dir_persistent = "$db_dir/persistent";
> +	push @dirs, $db_dir_persistent;
> +
> +	my $db_dir_state = "$db_dir/state";
> +	push @dirs, $db_dir_state;
> +
> +	my $etc_dir = "$prefix_abs/etc";
> +	push @dirs, $etc_dir;
> +
> +	my $ctdb_dir = "$etc_dir/ctdb";
> +	push @dirs, $ctdb_dir;
> +
> +	my $nodes_file = "$ctdb_dir/nodes";
> +	my $public_addresses_file = "$ctdb_dir/public_addresses";
> +
> +	my $event_script_dir = "$ctdb_dir/events.d";
> +	push @dirs, $event_script_dir;
> +
> +	#
> +	# check / create directories:
> +	#
> +	die ("prefix_abs = ''") if $prefix_abs eq "";
> +	die ("prefix_abs = '/'") if $prefix_abs eq "/";
> +
> +	mkdir ($prefix_abs, 0777);
> +
> +	print "CREATE CTDB TEST ENVIRONMENT in '$prefix_abs'...";
> +
> +	if (not defined($no_delete_prefix) or not $no_delete_prefix) {
> +		system("rm -rf $prefix_abs/*");
> +	}
> +
> +	mkdir($_, 0777) foreach(@dirs);
> +
> +	# - setup nodes
> +	unless (open(NODES, ">$nodes_file")) {
> +		warn("Unable to open nodesfile '$nodes_file'");
> +		return undef;
> +	}
> +	print NODES "$internal_ip\n";
> +	close(NODES);
> +
> +	# - setup public-addresses
> +	unless(open(PUBLIC_ADDR, ">$public_addresses_file")) {
> +		warn("Unable to open public addresses file '$public_addresses_file'");
> +		return undef;
> +	}
> +	print PUBLIC_ADDR "$public_ip/32 swrap$pub_iface\n";
> +	close(PUBLIC_ADDR);
> +
> +	my $event_script = "$event_script_dir/00.test";
> +	unless(open(EVENTSCRIPT, ">$event_script")) {
> +		warn("Unable to open event script '$event_script'");
> +		return undef;
> +	}
> +	print EVENTSCRIPT "#!/bin/sh
> +# event script for clustered samba selftest
> +
> +echo \"event script called: '\$0 \$\@'\"
> +
> +exit 0
> +";
> +	close(EVENTSCRIPT);
> +	chmod 0777, "$event_script_dir/00.test";
> +
> +
> +	$ret{CTDBD_TEST_LOG} = "$prefix/ctdbd_test.log";
> +	$ret{CTDBD_TEST_LOG_POS} = 0;
> +
> +	$ret{CTDB_NODE_ADDRESS} = "$internal_ip";
> +	$ret{NODES_FILE} = $nodes_file;
> +	$ret{PUBLIC_ADDRESSES_FILE} = $public_addresses_file;
> +	$ret{RECLOCK_FILE} = $reclock_file;
> +	$ret{SOCKET_FILE} = $socket_file;
> +	$ret{DB_DIR} = $db_dir;
> +	$ret{DB_DIR_PERSISTENT} = $db_dir_persistent;
> +	$ret{DB_DIR_STATE} = $db_dir_state;
> +	$ret{LOG_FILE} = $log_file;
> +	$ret{EVENT_SCRIPT_DIR} = $event_script_dir;
> +	$ret{PUBLIC_INTERFACE} = "swrap$pub_iface";
> +	$ret{DEBUG_LEVEL} = 4;
> +	$ret{PIDDIR} = $piddir;
> +	$ret{CTDBD_PIDFILE} = $pid_file;
> +
> +	$ret{NETBIOSNAME} = $server_name;
> +
> +	$ret{SOCKET_WRAPPER_DEFAULT_IFACE} = $pub_iface;
> +
> +	$ret{BINDIR} = "$self->{srcdir}/bin";
> +
> +	return \%ret;
> +}
> +
> +sub wait_for_start_ctdb($$)
> +{
> +	my ($self, $envvars) = @_;
> +	print "wait for ctdbd\n";
> +
> +	my $cmd = "";
> +	$cmd .= "SOCKET_WRAPPER_DEFAULT_IFACE=\"$envvars->{SOCKET_WRAPPER_DEFAULT_IFACE}\" ";
> +	$cmd .= "CTDB_NODES=\"$envvars->{NODES_FILE}\" ";
> +	$cmd .= "$envvars->{BINDIR}/ctdb --socket=$envvars->{SOCKET_FILE} nodestatus all";
> +
> +	my $count = 0;
> +	my $wait_seconds = 60;
> +
> +	until ($count > $wait_seconds) {
> +		my $ret = system("$cmd");
> +		if ($ret == 0) {
> +			print STDERR "cluster became healthy\n";
> +			last;
> +		}
> +		sleep(1);
> +		$count++;
> +	}
> +
> +	if ($count > $wait_seconds) {
> +		print "giving up to wait for CTDB...\n";
> +		teardown_env_ctdb($self, $envvars);
> +		return 0;
> +	}
> +
> +	print "CTDB initialized\n";
> +
> +	print $self->getlog_env_ctdb($envvars);
> +
> +	return 1;
> +}
> +
>  1;
> -- 
> 2.5.5
> 
> 
> From 82cb23f5c4437ec84e8700b5b44327e03b95df77 Mon Sep 17 00:00:00 2001
> From: Michael Adam <obnox at samba.org>
> Date: Thu, 22 May 2014 08:53:03 +0200
> Subject: [PATCH 2/3] selftest: run the usual samba3 member tests also in the
>  clustermember env
> 
> Signed-off-by: Michael Adam <obnox at samba.org>
> ---
>  source3/selftest/tests.py | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/source3/selftest/tests.py b/source3/selftest/tests.py
> index e4b185b..cb3243e 100755
> --- a/source3/selftest/tests.py
> +++ b/source3/selftest/tests.py
> @@ -129,18 +129,18 @@ for options in ["--option=clientusespnego=no", " --option=clientntlmv2auth=no --
>      env = "nt4_dc"
>      plantestsuite("samba3.blackbox.smbclient_auth.plain (%s) %s" % (env, options), env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME', '$DC_PASSWORD', smbclient3, configuration, options])
>  
> -for env in ["nt4_dc", "nt4_member", "ad_member", "ad_dc", "ad_dc_ntvfs", "s4member", "fl2000dc"]:
> +for env in ["nt4_dc", "nt4_member", "ad_member", "ad_dc", "ad_dc_ntvfs", "s4member", "fl2000dc", "clusteredmember"]:
>      plantestsuite("samba3.blackbox.smbclient_machine_auth.plain (%s:local)" % env, "%s:local" % env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_machine_auth.sh"), '$SERVER', smbclient3, configuration])
>      plantestsuite("samba3.blackbox.smbclient_ntlm.plain (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_ntlm.sh"), '$SERVER', '$DC_USERNAME', '$DC_PASSWORD', "never", smbclient3, configuration])
>  
> -for env in ["nt4_dc", "nt4_member", "ad_member"]:
> +for env in ["nt4_dc", "nt4_member", "ad_member", "clusteredmember"]:
>      plantestsuite("samba3.blackbox.smbclient_auth.plain (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME', '$DC_PASSWORD', smbclient3, configuration])
>      plantestsuite("samba3.blackbox.smbclient_auth.plain (%s) member creds" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$SERVER/$USERNAME', '$PASSWORD', smbclient3, configuration])
>  
>  env="nt4_dc"
>  plantestsuite("samba3.blackbox.smbclient_auth.plain (%s) ipv6" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IPV6', '$SERVER/$USERNAME', '$PASSWORD', smbclient3, configuration])
>  
> -for env in ["nt4_member", "ad_member"]:
> +for env in ["nt4_member", "ad_member", "clusteredmember"]:
>      plantestsuite("samba3.blackbox.net_cred_change.(%s:local)" % env, "%s:local" % env, [os.path.join(samba3srcdir, "script/tests/test_net_cred_change.sh"), configuration])
>  
>  env = "ad_member"
> @@ -166,13 +166,13 @@ plantestsuite("samba3.blackbox.smbclient_ntlm.plain (%s)" % env, env, [os.path.j
>  for env in ["nt4_dc"]:
>      plantestsuite("samba3.blackbox.smbclient_s3.plain (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$DC_USERNAME', '$DC_PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, wbinfo, net, configuration])
>  
> -for env in ["nt4_member", "ad_member"]:
> +for env in ["nt4_member", "ad_member", "clusteredmember"]:
>      plantestsuite("samba3.blackbox.smbclient_s3.plain (%s) member creds" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$SERVER', '$SERVER/$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, wbinfo, net, configuration])
>  
>  for env in ["nt4_dc"]:
>      plantestsuite("samba3.blackbox.smbclient_s3.sign (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$DC_USERNAME', '$DC_PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, wbinfo, net, configuration, "--signing=required"])
>  
> -for env in ["nt4_member", "ad_member"]:
> +for env in ["nt4_member", "ad_member", "clusteredmember"]:
>      plantestsuite("samba3.blackbox.smbclient_s3.sign (%s) member creds" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$SERVER', '$SERVER/$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, wbinfo, net, configuration, "--signing=required"])
>  
>  for env in ["nt4_dc"]:
> @@ -331,7 +331,7 @@ for t in tests:
>      elif t == "unix.whoami":
>          plansmbtorture4testsuite(t, "nt4_member:local", '//$SERVER/tmp --machine-pass', description="machine account")
>          plansmbtorture4testsuite(t, "ad_member:local", '//$SERVER/tmp --machine-pass --option=torture:addc=$DC_SERVER', description="machine account")
> -        for env in ["nt4_dc", "nt4_member"]:
> +        for env in ["nt4_dc", "nt4_member", "clusteredmember"]:
>              plansmbtorture4testsuite(t, env, '//$SERVER/tmp -U$DC_USERNAME%$DC_PASSWORD')
>              plansmbtorture4testsuite(t, env, '//$SERVER/tmpguest -U%', description='anonymous connection')
>          for env in ["ad_dc", "ad_member"]:
> -- 
> 2.5.5
> 
> 
> From cb07f0420ec271799681de8b7f3799a395807f9a Mon Sep 17 00:00:00 2001
> From: Michael Adam <obnox at samba.org>
> Date: Fri, 16 May 2014 14:44:25 +0200
> Subject: [PATCH 3/3] autobuild: run clusteredmember tests in samba-ctdb target
> 
> Signed-off-by: Michael Adam <obnox at samba.org>
> ---
>  script/autobuild.py | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/script/autobuild.py b/script/autobuild.py
> index 0af8166..14eb0b3 100755
> --- a/script/autobuild.py
> +++ b/script/autobuild.py
> @@ -100,6 +100,7 @@ tasks = {
>                       # build samba with cluster support (also building ctdb):
>                       ("samba-configure", "PYTHONPATH=${PYTHON_PREFIX}/site-packages:$PYTHONPATH PKG_CONFIG_PATH=${PREFIX_DIR}/lib/pkgconfig:${PKG_CONFIG_PATH} ./configure.developer --picky-developer ${PREFIX} --with-selftest-prefix=./bin/ab --with-cluster-support --bundled-libraries=!tdb", "text/plain"),
>                       ("samba-make", "make", "text/plain"),
> +                     ("samba-test", "make test TESTS=\"samba3.\*clusteredmember\" FAIL_IMMEDIATELY=1", "text/plain"),
>                       ("samba-check", "./bin/smbd -b | grep CLUSTER_SUPPORT", "text/plain"),
>                       ("samba-install", "make install", "text/plain"),
>                       ("ctdb-check", "test -e ${PREFIX_DIR}/sbin/ctdbd", "text/plain"),
> -- 
> 2.5.5
> 



-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://lists.samba.org/pipermail/samba-technical/attachments/20160712/02f29a82/signature.sig>


More information about the samba-technical mailing list