From: Stefan Metzmacher Date: Fri, 30 Jan 2009 07:25:27 +0000 (+0100) Subject: selftest: allow environment options X-Git-Url: http://git.samba.org/samba.git/?p=jra%2Fsamba%2F.git;a=commitdiff_plain;h=52a49b448e4a9ccd3044b47a9efaf15f30fbd032 selftest: allow environment options We support "local" and "client" (default) now. We can decide if we want to run a client against the server (with a special client.conf) or if we want to run tests localy on the server with the same config as the server. metze --- diff --git a/selftest/selftest.pl b/selftest/selftest.pl index 97cf6971790..7d40db5371a 100755 --- a/selftest/selftest.pl +++ b/selftest/selftest.pl @@ -572,16 +572,6 @@ sub write_clientconf($$) if (defined($vars->{REALM})) { print CF "\trealm = $vars->{REALM}\n"; } - if (defined($vars->{NCALRPCDIR})) { - print CF "\tncalrpc dir = $vars->{NCALRPCDIR}\n"; - } - if (defined($vars->{PIDDIR})) { - print CF "\tpid directory = $vars->{PIDDIR}\n"; - } - if (defined($vars->{WINBINDD_SOCKET_DIR})) { - print CF "\twinbindd socket directory = $vars->{WINBINDD_SOCKET_DIR}\n"; - print CF "\twinbindd:socket dir = $vars->{WINBINDD_SOCKET_DIR}\n"; - } if ($opt_socket_wrapper) { print CF "\tinterfaces = $interfaces\n"; } @@ -706,6 +696,17 @@ $| = 1; my %running_envs = (); +sub get_running_env($) +{ + my ($name) = @_; + + my $envname = $name; + + $envname =~ s/:.*//; + + return $running_envs{$envname}; +} + my @exported_envvars = ( # domain stuff "DOMAIN", @@ -743,13 +744,22 @@ $SIG{INT} = $SIG{QUIT} = $SIG{TERM} = sub { sub setup_env($) { - my ($envname) = @_; + my ($name) = @_; + + my $testenv_vars = undef; + + my $envname = $name; + my $option = $name; + + $envname =~ s/:.*//; + $option =~ s/^[^:]*://; + + $option = "client" if $option eq ""; - my $testenv_vars; if ($envname eq "none") { - $testenv_vars = {}; - } elsif (defined($running_envs{$envname})) { - $testenv_vars = $running_envs{$envname}; + $testenv_vars = \{}; + } elsif (defined(get_running_env($envname))) { + $testenv_vars = get_running_env($envname); if (not $target->check_env($testenv_vars)) { $testenv_vars = undef; } @@ -761,8 +771,16 @@ sub setup_env($) $running_envs{$envname} = $testenv_vars; - SocketWrapper::set_default_iface(6); - write_clientconf($conffile, $testenv_vars); + if ($option eq "local") { + SocketWrapper::set_default_iface($testenv_vars->{SOCKET_WRAPPER_DEFAULT_IFACE}); + $ENV{SMB_CONF_PATH} = $testenv_vars->{SERVERCONFFILE}; + } elsif ($option eq "client") { + SocketWrapper::set_default_iface(6); + write_clientconf($conffile, $testenv_vars); + $ENV{SMB_CONF_PATH} = $conffile; + } else { + die("Unknown option[$option] for envname[$envname]"); + } foreach (@exported_envvars) { if (defined($testenv_vars->{$_})) { @@ -792,21 +810,21 @@ sub getlog_env($) { my ($envname) = @_; return "" if ($envname eq "none"); - return $target->getlog_env($running_envs{$envname}); + return $target->getlog_env(get_running_env($envname)); } sub check_env($) { my ($envname) = @_; return 1 if ($envname eq "none"); - return $target->check_env($running_envs{$envname}); + return $target->check_env(get_running_env($envname)); } sub teardown_env($) { my ($envname) = @_; return if ($envname eq "none"); - $target->teardown_env($running_envs{$envname}); + $target->teardown_env(get_running_env($envname)); delete $running_envs{$envname}; } diff --git a/selftest/target/Samba4.pm b/selftest/target/Samba4.pm index 97f9878828c..208824d6b2c 100644 --- a/selftest/target/Samba4.pm +++ b/selftest/target/Samba4.pm @@ -751,10 +751,14 @@ nogroup:x:65534:nobody WINBINDD_SOCKET_DIR => $winbindd_socket_dir, NCALRPCDIR => $ncalrpcdir, LOCKDIR => $lockdir, + SERVERCONFFILE => $conffile, CONFIGURATION => $configuration, SOCKET_WRAPPER_DEFAULT_IFACE => $swiface, NSS_WRAPPER_PASSWD => $nsswrap_passwd, NSS_WRAPPER_GROUP => $nsswrap_group, + SMBD_TEST_FIFO => "$prefix/smbd_test.fifo", + SMBD_TEST_LOG => "$prefix/smbd_test.log", + SMBD_TEST_LOG_POS => 0, }; if (defined($self->{ldap})) { @@ -812,10 +816,6 @@ sub provision_member($$$) system($cmd) == 0 or die("Join failed\n$cmd"); - $ret->{SMBD_TEST_FIFO} = "$prefix/smbd_test.fifo"; - $ret->{SMBD_TEST_LOG} = "$prefix/smbd_test.log"; - $ret->{SMBD_TEST_LOG_POS} = 0; - $ret->{DC_SERVER} = $dcvars->{SERVER}; $ret->{DC_SERVER_IP} = $dcvars->{SERVER_IP}; $ret->{DC_NETBIOSNAME} = $dcvars->{NETBIOSNAME}; @@ -841,9 +841,6 @@ sub provision_dc($$) $self->add_wins_config("$prefix/private") or die("Unable to add wins configuration"); - $ret->{SMBD_TEST_FIFO} = "$prefix/server_test.fifo"; - $ret->{SMBD_TEST_LOG} = "$prefix/server_test.log"; - $ret->{SMBD_TEST_LOG_POS} = 0; return $ret; } diff --git a/source4/selftest/tests.sh b/source4/selftest/tests.sh index 88b83631ba1..5c2b0792eb4 100755 --- a/source4/selftest/tests.sh +++ b/source4/selftest/tests.sh @@ -298,8 +298,8 @@ plantest "blackbox.nmblookup" member $samba4srcdir/utils/tests/test_nmblookup.sh plantest "blackbox.locktest" dc $samba4srcdir/torture/tests/test_locktest.sh "\$SERVER" "\$USERNAME" "\$PASSWORD" "\$DOMAIN" "$PREFIX" plantest "blackbox.masktest" dc $samba4srcdir/torture/tests/test_masktest.sh "\$SERVER" "\$USERNAME" "\$PASSWORD" "\$DOMAIN" "$PREFIX" plantest "blackbox.gentest" dc $samba4srcdir/torture/tests/test_gentest.sh "\$SERVER" "\$USERNAME" "\$PASSWORD" "\$DOMAIN" "$PREFIX" -plantest "blackbox.wbinfo" dc $samba4srcdir/../nsswitch/tests/test_wbinfo.sh "\$DOMAIN" "\$USERNAME" "\$PASSWORD" "dc" -plantest "blackbox.wbinfo" member $samba4srcdir/../nsswitch/tests/test_wbinfo.sh "\$DOMAIN" "\$DC_USERNAME" "\$DC_PASSWORD" "member" +plantest "blackbox.wbinfo" dc:local $samba4srcdir/../nsswitch/tests/test_wbinfo.sh "\$DOMAIN" "\$USERNAME" "\$PASSWORD" "dc" +plantest "blackbox.wbinfo" member:local $samba4srcdir/../nsswitch/tests/test_wbinfo.sh "\$DOMAIN" "\$DC_USERNAME" "\$DC_PASSWORD" "member" # Tests using the "Simple" NTVFS backend