diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2007-04-10 20:19:31 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 14:49:55 -0500 |
commit | e338b4b47b6271ca46060a1fe8c61ab8afaecc8f (patch) | |
tree | 315e3b28abd60f04f5d5a7cc871e6d246ef931f2 /source4/script/tests/selftest.pl | |
parent | 4cc500433d07decf8fc2551b117e15537f6c8558 (diff) | |
download | samba-e338b4b47b6271ca46060a1fe8c61ab8afaecc8f.tar.gz samba-e338b4b47b6271ca46060a1fe8c61ab8afaecc8f.tar.bz2 samba-e338b4b47b6271ca46060a1fe8c61ab8afaecc8f.zip |
r22156: - Lazy evaluate variable names.
- Don't set up environments until necessary
- Add --resetup-environment option
- Add 'none' environment
(This used to be commit ed0410309bfdefb0d31cb247c26b947956fb1137)
Diffstat (limited to 'source4/script/tests/selftest.pl')
-rwxr-xr-x | source4/script/tests/selftest.pl | 111 |
1 files changed, 82 insertions, 29 deletions
diff --git a/source4/script/tests/selftest.pl b/source4/script/tests/selftest.pl index e056077b82..bb9510a00b 100755 --- a/source4/script/tests/selftest.pl +++ b/source4/script/tests/selftest.pl @@ -132,6 +132,7 @@ my $opt_verbose = 0; my $opt_testenv = 0; my $opt_ldap = undef; my $opt_analyse_cmd = undef; +my $opt_resetup_env = undef; my $srcdir = "."; my $builddir = "."; @@ -233,7 +234,7 @@ sub run_test_plain($$$$) my ($name, $cmd, $i, $totalsuites) = @_; my $err = ""; if ($#$suitesfailed+1 > 0) { $err = ", ".($#$suitesfailed+1)." errors"; } - printf "[$i/$totalsuites in " . (time() - $start)."s$err] $name\n"; + print "[$i/$totalsuites in " . (time() - $start)."s$err] $name\n"; open(RESULT, "$cmd 2>&1|"); my $expected_ret = 1; my $open_tests = {}; @@ -335,6 +336,7 @@ my $result = GetOptions ( 'testenv' => \$opt_testenv, 'ldap' => \$opt_ldap, 'analyse-cmd=s' => \$opt_analyse_cmd, + 'resetup-environment' => \$opt_resetup_env, ); exit(1) if (not $result); @@ -434,28 +436,44 @@ my $interfaces = join(',', ("127.0.0.6/8", "127.0.0.10/8", "127.0.0.11/8")); -my $testenv_vars = $target->setup_env("dc", "$prefix/dc", $socket_wrapper_dir); - my $conffile = "$prefix/client.conf"; -my $abs_srcdir = cwd(); -open(CF, ">$conffile"); -print CF "[global]\n"; -if (defined($ENV{VALGRIND})) { - print CF "\ticonv:native = true\n"; -} else { - print CF "\ticonv:native = false\n"; -} -print CF + +sub write_clientconf($$) +{ + my ($conffile, $vars) = @_; + + my $abs_srcdir = cwd(); + + open(CF, ">$conffile"); + print CF "[global]\n"; + if (defined($ENV{VALGRIND})) { + print CF "\ticonv:native = true\n"; + } else { + print CF "\ticonv:native = false\n"; + } + print CF " netbios name = localtest netbios aliases = localhost - workgroup = $testenv_vars->{DOMAIN} - realm = $testenv_vars->{REALM} - pid directory = $testenv_vars->{PIDDIR} - ncalrpc dir = $testenv_vars->{NCALRPCDIR} +"; + if (defined($vars->{DOMAIN})) { + print CF "\tworkgroup = $vars->{DOMAIN}\n"; + } + if (defined($vars->{REALM})) { + print CF "\trealm = $vars->{REALM}\n"; + } + if (defined($vars->{PIDDIR})) { + print CF "\tpid directory = $vars->{PIDDIR}\n"; + } + if (defined($vars->{NCALRPCDIR})) { + print CF "\tncalrpc dir = $vars->{NCALRPCDIR}\n"; + } + if (defined($vars->{WINBINDD_SOCKET_DIR})) { + print CF "\twinbindd socket directory = $vars->{WINBINDD_SOCKET_DIR}\n"; + } + print CF " js include = $abs_srcdir/scripting/libjs - winbindd socket directory = $testenv_vars->{WINBINDD_SOCKET_DIR} name resolve order = bcast - interfaces = 127.0.0.1/8 + interfaces = $interfaces panic action = $abs_srcdir/script/gdb_backtrace \%PID\% \%PROG\% max xmit = 32K notify:inotify = false @@ -465,10 +483,11 @@ print CF torture:basedir = ./st gensec:require_pac = true "; -close(CF); + close(CF); +} + my @torture_options = (); -push (@torture_options, "--option=interfaces=$interfaces"); push (@torture_options, "--configfile=$conffile"); # ensure any one smbtorture call doesn't run too long push (@torture_options, "--maximum-runtime=$torture_maxtime"); @@ -480,15 +499,12 @@ push (@torture_options, "--option=torture:quick=yes") if ($opt_quick); $ENV{TORTURE_OPTIONS} = join(' ', @torture_options); print "OPTIONS $ENV{TORTURE_OPTIONS}\n"; -foreach ("PASSWORD", "DOMAIN", "SERVER", "USERNAME", "NETBIOSNAME") { - $ENV{$_} = $testenv_vars->{$_}; -} - my @todo = (); my $testsdir = "$srcdir/script/tests"; $ENV{CONFIGURATION} = "--configfile=$conffile"; + if ($opt_quick) { open(IN, "$testsdir/tests_quick.sh|"); } else { @@ -514,14 +530,44 @@ my $suitestotal = $#todo + 1; my $i = 0; $| = 1; -# The Kerberos tests fail if this variable is set. -delete $ENV{DOMAIN}; +my %running_envs = (); -$ENV{KRB5_CONFIG} = $testenv_vars->{KRB5_CONFIG}; +sub setup_env($) +{ + my ($envname) = @_; + my $testenv_vars; + if (defined($running_envs{$envname})) { + $testenv_vars = $running_envs{$envname}; + } elsif ($envname eq "none") { + $testenv_vars = {}; + } else { + $testenv_vars = $target->setup_env($envname, $prefix, $socket_wrapper_dir); + } + write_clientconf($conffile, $testenv_vars); + foreach ("PASSWORD", "DOMAIN", "SERVER", "USERNAME", "NETBIOSNAME", + "KRB5_CONFIG") { + if (defined($testenv_vars->{$_})) { + $ENV{$_} = $testenv_vars->{$_}; + } else { + delete $ENV{$_}; + } + } + + $running_envs{$envname} = $testenv_vars; + return $testenv_vars; +} + +sub teardown_env($) +{ + my ($envname) = @_; + $target->teardown_env($running_envs{$envname}); + delete $running_envs{$envname}; +} SocketWrapper::set_default_iface(6); if ($opt_testenv) { + my $testenv_vars = setup_env("dc"); $ENV{PIDDIR} = $testenv_vars->{PIDDIR}; my $term = ($ENV{TERM} or "xterm"); system("$term -e 'echo -e \"Welcome to the Samba4 Test environment @@ -533,6 +579,7 @@ TORTURE_OPTIONS=\$TORTURE_OPTIONS CONFIGURATION=\$CONFIGURATION SERVER=\$SERVER NETBIOSNAME=\$NETBIOSNAME\" && bash'"); + teardown_env("dc"); } else { foreach (@todo) { $i++; @@ -547,7 +594,7 @@ NETBIOSNAME=\$NETBIOSNAME\" && bash'"); next; } - # $target->setup_env($envname, "$prefix/$envname", $socket_wrapper_dir); + setup_env($envname); if ($from_build_farm) { run_test_buildfarm($name, $cmd, $i, $suitestotal); @@ -558,12 +605,16 @@ NETBIOSNAME=\$NETBIOSNAME\" && bash'"); if (defined($opt_analyse_cmd)) { system("$opt_analyse_cmd \"$name\""); } + + teardown_env($envname) if ($opt_resetup_env); } } print "\n"; -my $failed = $target->stop(); +teardown_env($_) foreach (keys %running_envs); + +$target->stop(); my $end = time(); my $duration = ($end-$start); @@ -587,6 +638,8 @@ if ($numfailed == 0) { } print "DURATION: $duration seconds\n"; +my $failed = 0; + # if there were any valgrind failures, show them foreach (<$prefix/valgrind.log*>) { next unless (-s $_); |