summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--selftest/target/Samba3.pm48
1 files changed, 36 insertions, 12 deletions
diff --git a/selftest/target/Samba3.pm b/selftest/target/Samba3.pm
index 9a3be7d72f..d2082f5b91 100644
--- a/selftest/target/Samba3.pm
+++ b/selftest/target/Samba3.pm
@@ -106,12 +106,16 @@ sub setup_env($$$)
return $self->setup_ktest("$path/ktest");
} elsif ($envname eq "secserver") {
if (not defined($self->{vars}->{dc})) {
- $self->setup_dc("$path/dc");
+ if (not defined($self->setup_dc("$path/dc"))) {
+ return undef;
+ }
}
return $self->setup_secserver("$path/secserver", $self->{vars}->{dc});
} elsif ($envname eq "member") {
if (not defined($self->{vars}->{dc})) {
- $self->setup_dc("$path/dc");
+ if (not defined($self->setup_dc("$path/dc"))) {
+ return undef;
+ }
}
return $self->setup_member("$path/member", $self->{vars}->{dc});
} else {
@@ -137,11 +141,15 @@ sub setup_dc($$)
"localdc2pass",
$dc_options);
+ $vars or return undef;
+
$self->check_or_start($vars,
($ENV{SMBD_MAXTIME} or 2700),
"yes", "yes", "yes");
- $self->wait_for_start($vars);
+ if (not $self->wait_for_start($vars)) {
+ return undef;
+ }
$vars->{DC_SERVER} = $vars->{SERVER};
$vars->{DC_SERVER_IP} = $vars->{SERVER_IP};
@@ -170,7 +178,7 @@ sub setup_member($$$)
"localmember3pass",
$member_options);
- $ret or die("Unable to provision");
+ $ret or return undef;
my $net = $self->binpath("net");
my $cmd = "";
@@ -184,7 +192,9 @@ sub setup_member($$$)
($ENV{SMBD_MAXTIME} or 2700),
"yes", "yes", "yes");
- $self->wait_for_start($ret);
+ if (not $self->wait_for_start($ret)) {
+ return undef;
+ }
$ret->{DC_SERVER} = $dcvars->{SERVER};
$ret->{DC_SERVER_IP} = $dcvars->{SERVER_IP};
@@ -212,11 +222,15 @@ sub setup_secshare($$)
"local4pass",
$secshare_options);
+ $vars or return undef;
+
$self->check_or_start($vars,
($ENV{SMBD_MAXTIME} or 2700),
"yes", "no", "yes");
- $self->wait_for_start($vars);
+ if (not $self->wait_for_start($vars)) {
+ return undef;
+ }
$self->{vars}->{secshare} = $vars;
@@ -240,13 +254,15 @@ sub setup_secserver($$$)
"localserver5pass",
$secserver_options);
- $ret or die("Unable to provision");
+ $ret or return undef;
$self->check_or_start($ret,
($ENV{SMBD_MAXTIME} or 2700),
"yes", "no", "yes");
- $self->wait_for_start($ret);
+ if (not $self->wait_for_start($ret)) {
+ return undef;
+ }
$ret->{DC_SERVER} = $dcvars->{SERVER};
$ret->{DC_SERVER_IP} = $dcvars->{SERVER_IP};
@@ -276,7 +292,7 @@ sub setup_ktest($$$)
"localktest6pass",
$ktest_options);
- $ret or die("Unable to provision");
+ $ret or return undef;
open(USERMAP, ">$prefix/lib/username.map") or die("Unable to open $prefix/lib/username.map");
print USERMAP "
@@ -326,7 +342,9 @@ $ret->{USERNAME} = KTEST\\Administrator
($ENV{SMBD_MAXTIME} or 2700),
"yes", "no", "yes");
- $self->wait_for_start($ret);
+ if (not $self->wait_for_start($ret)) {
+ return undef;
+ }
return $ret;
}
@@ -873,12 +891,18 @@ sub wait_for_start($$)
} while ($ret != 0 && $count < 10);
if ($count == 10) {
print "SMBD failed to start up in a reasonable time (20sec)\n";
- exit 1;
+ teardown_env($self, $envvars);
+ return 0;
}
# Ensure we have domain users mapped.
- system($self->binpath("net") ." $envvars->{CONFIGURATION} groupmap add rid=513 unixgroup=domusers type=domain");
+ $ret = system($self->binpath("net") ." $envvars->{CONFIGURATION} groupmap add rid=513 unixgroup=domusers type=domain");
+ if ($ret != 0) {
+ return 1;
+ }
print $self->getlog_env($envvars);
+
+ return 1;
}
1;