selftest: allow environment options
authorStefan Metzmacher <metze@samba.org>
Fri, 30 Jan 2009 07:25:27 +0000 (08:25 +0100)
committerStefan Metzmacher <metze@samba.org>
Fri, 30 Jan 2009 08:36:53 +0000 (09:36 +0100)
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

selftest/selftest.pl
selftest/target/Samba4.pm
source4/selftest/tests.sh

index 97cf6971790385dfc7b3967c2808f56cf0b16748..7d40db5371a729aa3dedbbc716c178cac54150f6 100755 (executable)
@@ -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};
 }
 
index 97f9878828cfb1050be07f4635c62befdfd1ff2a..208824d6b2ca4969e0b23fd027dd180cd0b9e248 100644 (file)
@@ -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;
 }
 
index 88b83631ba1985ef8f0c465c797e564699065499..5c2b0792eb431786a91aa06d394f6522eb10da04 100755 (executable)
@@ -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