selftest --help
-selftest [--srcdir=DIR] [--builddir=DIR] [--target=samba4|samba3|win|kvm] [--socket-wrapper] [--quick] [--exclude=FILE] [--include=FILE] [--one] [--prefix=prefix] [--immediate] [--testlist=FILE] [TESTS]
+selftest [--srcdir=DIR] [--builddir=DIR] [--exeext=EXT][--target=samba4|samba3|win|kvm] [--socket-wrapper] [--quick] [--exclude=FILE] [--include=FILE] [--one] [--prefix=prefix] [--immediate] [--testlist=FILE] [TESTS]
=head1 DESCRIPTION
Build directory.
+=item I<--exeext=EXT>
+
+Executable extention
+
=item I<--prefix=DIR>
Change directory to run tests in. Default is 'st'.
my $srcdir = ".";
my $builddir = ".";
+my $exeext = "";
my $prefix = "./st";
my @expected_failures = ();
--prefix=DIR prefix to run tests in [st]
--srcdir=DIR source directory [.]
--builddir=DIR output directory [.]
+ --exeext=EXT executable extention []
Target Specific:
--socket-wrapper-pcap save traffic to pcap directories
--socket-wrapper-keep-pcap keep all pcap files, not just those for tests that
failed
--socket-wrapper enable socket wrapper
+ --bindir=PATH path to target binaries
--expected-failures=FILE specify list of tests that is guaranteed to fail
Samba4 Specific:
--ldap=openldap|fedora-ds back samba onto specified ldap server
-Samba3 Specific:
- --bindir=PATH path to binaries
-
Kvm Specific:
--image=PATH path to KVM image
'include=s' => \@opt_include,
'srcdir=s' => \$srcdir,
'builddir=s' => \$builddir,
+ 'exeext=s' => \$exeext,
'verbose' => \$opt_verbose,
'testenv' => \$opt_testenv,
'ldap:s' => \$ldap,
$socket_wrapper_dir = SocketWrapper::setup_dir("$prefix/w", $opt_socket_wrapper_pcap);
print "SOCKET_WRAPPER_DIR=$socket_wrapper_dir\n";
} else {
- warn("Not using socket wrapper, but also not running as root. Will not be able to listen on proper ports") unless $< == 0;
+ unless ($< == 0) {
+ print "WARNING: Not using socket wrapper, but also not running as root. Will not be able to listen on proper ports\n";
+ }
}
my $target;
if ($opt_target eq "samba4") {
$testenv_default = "member";
require target::Samba4;
- $target = new Samba4($opt_bindir or "$srcdir/bin", $ldap, "$srcdir/setup");
+ $target = new Samba4($opt_bindir or "$builddir/bin",
+ $ldap, "$srcdir/setup", $exeext);
} elsif ($opt_target eq "samba3") {
- if ($opt_socket_wrapper and `$opt_bindir/smbd -b | grep SOCKET_WRAPPER` eq "") {
+ my $bindir = ($opt_bindir or "$builddir/bin");
+ if ($opt_socket_wrapper and `$bindir/smbd -b | grep SOCKET_WRAPPER` eq "") {
die("You must include --enable-socket-wrapper when compiling Samba in order to execute 'make test'. Exiting....");
}
- $testenv_default = "dc";
+ $testenv_default = "member";
require target::Samba3;
- $target = new Samba3($opt_bindir);
+ $target = new Samba3($bindir);
} elsif ($opt_target eq "win") {
die("Windows tests will not run with socket wrapper enabled.")
if ($opt_socket_wrapper);
push (@excludes, read_test_regexes($_));
}
-if ($opt_quick) {
- push (@includes, read_test_regexes("samba4-quick"));
-}
-
foreach (@opt_include) {
push (@includes, read_test_regexes($_));
}
"127.0.0.11/8"));
my $conffile = "$prefix_abs/client/client.conf";
+$ENV{SMB_CONF_PATH} = $conffile;
sub write_clientconf($$)
{
mkdir("$prefix/client/private", 0777);
}
+ if ( -d "$prefix/client/lock" ) {
+ unlink <$prefix/client/lockdir/*>;
+ } else {
+ mkdir("$prefix/client/lockdir", 0777);
+ }
+
open(CF, ">$conffile");
print CF "[global]\n";
if (defined($ENV{VALGRIND})) {
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";
- }
if ($opt_socket_wrapper) {
print CF "\tinterfaces = $interfaces\n";
}
print CF "
private dir = $prefix_abs/client/private
+ lock dir = $prefix_abs/client/lockdir
name resolve order = bcast
- panic action = $srcdir_abs/script/gdb_backtrace \%PID\% \%PROG\%
+ panic action = $RealBin/gdb_backtrace \%PID\% \%PROG\%
max xmit = 32K
notify:inotify = false
ldb:nosync = true
system:anonymous = true
+ client lanman auth = Yes
torture:basedir = $prefix_abs/client
#We don't want to pass our self-tests if the PAC code is wrong
gensec:require_pac = true
my %running_envs = ();
+sub get_running_env($)
+{
+ my ($name) = @_;
+
+ my $envname = $name;
+
+ $envname =~ s/:.*//;
+
+ return $running_envs{$envname};
+}
+
my @exported_envvars = (
# domain stuff
"DOMAIN",
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;
}
$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->{$_})) {
{
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};
}