selftest: allow environment options
[metze/samba/wip.git] / selftest / target / Samba4.pm
index 5cc34c76fd5948924c11fd3a40298ee7e0a5346b..208824d6b2ca4969e0b23fd027dd180cd0b9e248 100644 (file)
@@ -10,18 +10,26 @@ use Cwd qw(abs_path);
 use FindBin qw($RealBin);
 use POSIX;
 
-sub new($$$$) {
-       my ($classname, $bindir, $ldap, $setupdir) = @_;
+sub new($$$$$) {
+       my ($classname, $bindir, $ldap, $setupdir, $exeext) = @_;
+       $exeext = "" unless defined($exeext);
        my $self = { 
                vars => {}, 
                ldap => $ldap, 
                bindir => $bindir, 
-               setupdir => $setupdir 
+               setupdir => $setupdir,
+               exeext => $exeext
        };
        bless $self;
        return $self;
 }
 
+sub bindir_path($$) {
+       my ($self, $path) = @_;
+
+       return "$self->{bindir}/$path$self->{exeext}";
+}
+
 sub openldap_start($$$) {
         my ($slapd_conf, $uri, $logs) = @_;
        my $oldpath = $ENV{PATH};
@@ -32,7 +40,7 @@ sub openldap_start($$$) {
            $olpath = "$olroot/libexec:$olroot/sbin:";
        }
        $ENV{PATH} = "$olpath/usr/local/sbin:/usr/sbin:/sbin:$ENV{PATH}";
-        system("slapd -d63 -f $slapd_conf -h $uri > $logs 2>&1 &");
+        system("slapd -d0 -f $slapd_conf -h $uri > $logs 2>&1 &");
         $ENV{PATH} = $oldpath;
 }
 
@@ -50,7 +58,8 @@ sub slapd_start($$)
        } elsif ($self->{ldap} eq "openldap") {
                openldap_start($env_vars->{SLAPD_CONF}, $uri, "$env_vars->{LDAPDIR}/logs");
        }
-       while (system("$self->{bindir}/ldbsearch -H $uri -s base -b \"\" supportedLDAPVersion > /dev/null") != 0) {
+       my $ldbsearch = $self->bindir_path("ldbsearch");
+       while (system("$ldbsearch -H $uri -s base -b \"\" supportedLDAPVersion > /dev/null") != 0) {
                $count++;
                if ($count > 40) {
                    $self->slapd_stop($env_vars);
@@ -116,20 +125,21 @@ sub check_or_start($$$)
                if (defined($ENV{SMBD_OPTIONS})) {
                        $optarg.= " $ENV{SMBD_OPTIONS}";
                }
-               my $ret = system("$valgrind $self->{bindir}/samba $optarg $env_vars->{CONFIGURATION} -M single -i --leak-report-full");
+               my $samba = $self->bindir_path("samba");
+               my $ret = system("$valgrind $samba $optarg $env_vars->{CONFIGURATION} -M single -i --leak-report-full");
                if ($? == -1) {
-                       print "Unable to start samba: $ret: $!\n";
+                       print "Unable to start $samba: $ret: $!\n";
                        exit 1;
                }
                unlink($env_vars->{SMBD_TEST_FIFO});
                my $exit = $? >> 8;
                if ( $ret == 0 ) {
-                       print "samba exits with status $exit\n";
+                       print "$samba exits with status $exit\n";
                } elsif ( $ret & 127 ) {
-                       print "samba got signal ".($ret & 127)." and exits with $exit!\n";
+                       print "$samba got signal ".($ret & 127)." and exits with $exit!\n";
                } else {
                        $ret = $? >> 8;
-                       print "samba failed with status $exit!\n";
+                       print "$samba failed with status $exit!\n";
                }
                exit $exit;
        }
@@ -169,7 +179,8 @@ sub write_ldb_file($$$)
 {
        my ($self, $file, $ldif) = @_;
 
-       open(LDIF, "|$self->{bindir}/ldbadd -H $file >/dev/null");
+       my $ldbadd = $self->bindir_path("ldbadd");
+       open(LDIF, "|$ldbadd -H $file >/dev/null");
        print LDIF $ldif;
        return close(LDIF);
 }
@@ -509,7 +520,6 @@ sub provision($$$$$$)
        my $unix_uid = $>;
        my $unix_gids_str = $);
        my @unix_gids = split(" ", $unix_gids_str);
-       my $srcdir="$RealBin/..";
        -d $prefix or mkdir($prefix, 0777) or die("Unable to create $prefix");
        my $prefix_abs = abs_path($prefix);
        my $tmpdir = "$prefix_abs/tmp";
@@ -690,12 +700,13 @@ nogroup:x:65534:nobody
        close(GRP);
 
 #Ensure the config file is valid before we start
-       if (system("$self->{bindir}/testparm $configuration -v --suppress-prompt >/dev/null 2>&1") != 0) {
-               system("$self->{bindir}/testparm -v --suppress-prompt $configuration >&2");
-               die("Failed to create a valid smb.conf configuration!");
+       my $testparm = $self->bindir_path("testparm");
+       if (system("$testparm $configuration -v --suppress-prompt >/dev/null 2>&1") != 0) {
+               system("$testparm -v --suppress-prompt $configuration >&2");
+               die("Failed to create a valid smb.conf configuration $testparm!");
        }
 
-       (system("($self->{bindir}/testparm $configuration -v --suppress-prompt --parameter-name=\"netbios name\" --section-name=global 2> /dev/null | grep -i \"^$netbiosname\" ) >/dev/null 2>&1") == 0) or die("Failed to create a valid smb.conf configuration! $self->{bindir}/testparm $configuration -v --suppress-prompt --parameter-name=\"netbios name\" --section-name=global");
+       (system("($testparm $configuration -v --suppress-prompt --parameter-name=\"netbios name\" --section-name=global 2> /dev/null | grep -i \"^$netbiosname\" ) >/dev/null 2>&1") == 0) or die("Failed to create a valid smb.conf configuration! $self->{bindir}/testparm $configuration -v --suppress-prompt --parameter-name=\"netbios name\" --section-name=global");
 
        my @provision_options = ();
        push (@provision_options, "NSS_WRAPPER_PASSWD=\"$nsswrap_passwd\"");
@@ -740,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})) {
@@ -792,18 +807,15 @@ sub provision_member($$$)
 
        $ret or die("Unable to provision");
 
+       my $net = $self->bindir_path("net");
        my $cmd = "";
        $cmd .= "SOCKET_WRAPPER_DEFAULT_IFACE=\"$ret->{SOCKET_WRAPPER_DEFAULT_IFACE}\" ";
        $cmd .= "KRB5_CONFIG=\"$ret->{KRB5_CONFIG}\" ";
-       $cmd .= "$self->{bindir}/net join $ret->{CONFIGURATION} $dcvars->{DOMAIN} member";
+       $cmd .= "$net join $ret->{CONFIGURATION} $dcvars->{DOMAIN} member";
        $cmd .= " -U$dcvars->{USERNAME}\%$dcvars->{PASSWORD}";
 
        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};
@@ -829,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;
 }