my $opt_socket_wrapper = 0;
my $opt_socket_wrapper_pcap = undef;
my $opt_socket_wrapper_keep_pcap = undef;
+my $opt_random_order = 0;
my $opt_one = 0;
my @opt_exclude = ();
my @opt_include = ();
-my $opt_verbose = 0;
my $opt_testenv = 0;
my $opt_list = 0;
my $ldap = undef;
Behaviour:
--quick run quick overall test
--one abort when the first test fails
- --verbose be verbose
--testenv run a shell in the requested test environment
--list list available tests
";
'include=s' => \@opt_include,
'srcdir=s' => \$srcdir,
'bindir=s' => \$bindir,
- 'verbose' => \$opt_verbose,
'testenv' => \$opt_testenv,
'list' => \$opt_list,
'ldap:s' => \$ldap,
'resetup-environment' => \$opt_resetup_env,
'testlist=s' => \@testlists,
+ 'random-order' => \$opt_random_order,
'load-list=s' => \$opt_load_list,
- 'binary-mapping=s' => \$opt_binary_mapping
+ 'binary-mapping=s' => \$opt_binary_mapping
);
exit(1) if (not $result);
$testenv_default = "member";
require target::Samba3;
$target = new Samba3($bindir, \%binary_mapping, $srcdir_abs, $server_maxtime);
- } elsif ($opt_target eq "win") {
- die("Windows tests will not run with socket wrapper enabled.")
- if ($opt_socket_wrapper);
- $testenv_default = "dc";
- require target::Windows;
- $target = new Windows();
}
}
-#
-# Start a Virtual Distributed Ethernet Switch
-# Returns the pid of the switch.
-#
-sub start_vde_switch($)
-{
- my ($path) = @_;
-
- system("vde_switch --pidfile $path/vde.pid --sock $path/vde.sock --daemon");
-
- open(PID, "$path/vde.pid");
- <PID> =~ /([0-9]+)/;
- my $pid = $1;
- close(PID);
-
- return $pid;
-}
-
-# Stop a Virtual Distributed Ethernet Switch
-sub stop_vde_switch($)
-{
- my ($pid) = @_;
- kill 9, $pid;
-}
-
sub read_test_regexes($)
{
my ($name) = @_;
} else {
$ENV{SELFTEST_INTERFACES} = "";
}
-if ($opt_verbose) {
- $ENV{SELFTEST_VERBOSE} = "1";
-} else {
- $ENV{SELFTEST_VERBOSE} = "";
-}
if ($opt_quick) {
$ENV{SELFTEST_QUICK} = "1";
} else {
"VAMPIRE_DC_NETBIOSNAME",
"VAMPIRE_DC_NETBIOSALIAS",
+ "PROMOTED_DC_SERVER",
+ "PROMOTED_DC_SERVER_IP",
+ "PROMOTED_DC_NETBIOSNAME",
+ "PROMOTED_DC_NETBIOSALIAS",
+
# server stuff
"SERVER",
"SERVER_IP",
"WINBINDD_SOCKET_DIR",
"WINBINDD_PRIV_PIPE_DIR",
"NMBD_SOCKET_DIR",
- "LOCAL_PATH"
+ "LOCAL_PATH",
+
+ # nss_wrapper
+ "NSS_WRAPPER_PASSWD",
+ "NSS_WRAPPER_GROUP",
+
+ # UID/GID for rfc2307 mapping tests
+ "UID_RFC2307TEST",
+ "GID_RFC2307TEST"
);
$SIG{INT} = $SIG{QUIT} = $SIG{TERM} = sub {
# This 'global' file needs to be empty when we start
unlink("$prefix_abs/dns_host_file");
+if ($opt_random_order) {
+ require List::Util;
+ my @newtodo = List::Util::shuffle(@todo);
+ @todo = @newtodo;
+}
+
if ($opt_testenv) {
my $testenv_name = $ENV{SELFTEST_TESTENV};
$testenv_name = $testenv_default unless defined($testenv_name);
my $testenv_vars = setup_env($testenv_name, $prefix);
- die("Unable to setup environment $testenv_name") unless ($testenv_vars);
+ if (not $testenv_vars or $testenv_vars eq "UNKNOWN") {
+ die("Unable to setup environment $testenv_name");
+ }
$ENV{PIDDIR} = $testenv_vars->{PIDDIR};
$ENV{ENVNAME} = $testenv_name;
my $envvarstr = exported_envvars_str($testenv_vars);
- my $term = ($ENV{TERMINAL} or "xterm -e");
- system("$term 'echo -e \"
+ my @term_args = ("echo -e \"
Welcome to the Samba4 Test environment '$testenv_name'
This matches the client environment used in make test
SMB_CONF_PATH=\$SMB_CONF_PATH
$envvarstr
-\" && LD_LIBRARY_PATH=$ENV{LD_LIBRARY_PATH} bash'");
+\" && LD_LIBRARY_PATH=$ENV{LD_LIBRARY_PATH} bash");
+ my @term = ();
+ if ($ENV{TERMINAL}) {
+ @term = ($ENV{TERMINAL});
+ } else {
+ @term = ("xterm", "-e");
+ unshift(@term_args, ("bash", "-c"));
+ }
+
+ system(@term, @term_args);
+
teardown_env($testenv_name);
} elsif ($opt_list) {
foreach (@todo) {
if ($? == -1) {
die("Unable to run $cmd: $!");
} elsif ($? & 127) {
- die(snprintf("%s died with signal %d, %s coredump\n", $cmd, ($? & 127), ($? & 128) ? 'with' : 'without'));
+ die(sprintf("%s died with signal %d, %s coredump\n", $cmd, ($? & 127), ($? & 128) ? 'with' : 'without'));
}
my $exitcode = $? >> 8;