⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 selftest.pl

📁 samba最新软件
💻 PL
📖 第 1 页 / 共 2 页
字号:
	warn("Not using socket wrapper, but also not running as root. Will not be able to listen on proper ports") unless $< == 0;}my $target;my $testenv_default = "none";if ($opt_target eq "samba4") {	$testenv_default = "member";	require target::Samba4;	$target = new Samba4($opt_bindir or "$srcdir/bin", $ldap, "$srcdir/setup");} elsif ($opt_target eq "samba3") {	if ($opt_socket_wrapper and `$opt_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";	require target::Samba3;	$target = new Samba3($opt_bindir);} 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();} elsif ($opt_target eq "kvm") {	die("Kvm tests will not run with socket wrapper enabled.") 		if ($opt_socket_wrapper);	require target::Kvm;	die("No image specified") unless ($opt_image);	$target = new Kvm($opt_image, undef);}## 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 Switchsub stop_vde_switch($){	my ($pid) = @_;	kill 9, $pid;}sub read_test_regexes($){	my ($name) = @_;	my @ret = ();	open(LF, "<$name") or die("unable to read $name: $!");	while (<LF>) { 		chomp; 		next if (/^#/);		if (/^(.*?)([ \t]+)\#([\t ]*)(.*?)$/) {			push (@ret, [$1, $4]);		} else {			s/^(.*?)([ \t]+)\#([\t ]*)(.*?)$//;			push (@ret, [$_, undef]); 		}	}	close(LF);	return @ret;}if (defined($opt_expected_failures)) {	@expected_failures = read_test_regexes($opt_expected_failures);}foreach (@opt_exclude) {	push (@excludes, read_test_regexes($_));}if ($opt_quick) {	push (@includes, read_test_regexes("samba4-quick"));}foreach (@opt_include) {	push (@includes, read_test_regexes($_));}my $interfaces = join(',', ("127.0.0.6/8", 			    "127.0.0.7/8",			    "127.0.0.8/8",			    "127.0.0.9/8",			    "127.0.0.10/8",			    "127.0.0.11/8"));my $conffile = "$prefix_abs/client/client.conf";sub write_clientconf($$){	my ($conffile, $vars) = @_;	mkdir("$prefix/client", 0777) unless -d "$prefix/client";		if ( -d "$prefix/client/private" ) {	        unlink <$prefix/client/private/*>;	} else {	        mkdir("$prefix/client/private", 0777);	}	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 "\tnetbios name = client\n";	if (defined($vars->{DOMAIN})) {		print CF "\tworkgroup = $vars->{DOMAIN}\n";	}	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	js include = $srcdir_abs/scripting/libjs	name resolve order = bcast	panic action = $srcdir_abs/script/gdb_backtrace \%PID\% \%PROG\%	max xmit = 32K	notify:inotify = false	ldb:nosync = true	system:anonymous = true	torture:basedir = $prefix_abs/client#We don't want to pass our self-tests if the PAC code is wrong	gensec:require_pac = true	modules dir = $ENV{LD_SAMBA_MODULE_PATH}";	close(CF);}my @torture_options = ();push (@torture_options, "--configfile=$conffile");# ensure any one smbtorture call doesn't run too longpush (@torture_options, "--maximum-runtime=$torture_maxtime");push (@torture_options, "--target=$opt_target");push (@torture_options, "--basedir=$prefix_abs");push (@torture_options, "--option=torture:progress=no") unless ($opt_verbose);push (@torture_options, "--format=subunit");push (@torture_options, "--option=torture:quick=yes") if ($opt_quick);$ENV{TORTURE_OPTIONS} = join(' ', @torture_options);print "OPTIONS $ENV{TORTURE_OPTIONS}\n";my @todo = ();my $testsdir = "$srcdir/selftest";$ENV{SMB_CONF_PATH} = "$conffile";$ENV{CONFIGURATION} = "--configfile=$conffile";my %required_envs = ();sub read_testlist($){	my ($filename) = @_;	my @ret = ();	open(IN, $filename) or die("Unable to open $filename: $!");	while (<IN>) {		if ($_ eq "-- TEST --\n") {			my $name = <IN>;			$name =~ s/\n//g;			my $env = <IN>;			$env =~ s/\n//g;			my $cmdline = <IN>;			$cmdline =~ s/\n//g;			if (not defined($tests) or $name =~ /$tests/) {				$required_envs{$env} = 1;				push (@ret, [$name, $env, $cmdline]);			}		} else {			print;		}	}	close(IN) or die("Error creating recipe");	return @ret;}if ($#testlists == -1) {	die("No testlists specified");}my @available = ();foreach my $fn (@testlists) {	foreach (read_testlist($fn)) {		my $name = $$_[0];		next if (@includes and not find_in_list(\@includes, $name));		push (@available, $_);	}}my $msg_ops;if ($opt_format eq "buildfarm") {	require output::buildfarm;	$msg_ops = new output::buildfarm($statistics);} elsif ($opt_format eq "plain") {	require output::plain;	$msg_ops = new output::plain("$prefix/summary", $opt_verbose, $opt_immediate, $statistics, $#available+1);} elsif ($opt_format eq "html") {	require output::html;	mkdir("test-results", 0777);	$msg_ops = new output::html("test-results", $statistics);} else {	die("Invalid output format '$opt_format'");}foreach (@available) {	my $name = $$_[0];	my $skipreason = skip($name);	if ($skipreason) {		$msg_ops->skip_testsuite($name, $skipreason);	} else {		push(@todo, $_); 	}}if ($#todo == -1) {	print STDERR "No tests to run\n";	exit(1);	}my $suitestotal = $#todo + 1;my $i = 0;$| = 1;my %running_envs = ();my @exported_envvars = (	# domain stuff	"DOMAIN",	"REALM",	# domain controller stuff	"DC_SERVER",	"DC_SERVER_IP",	"DC_NETBIOSNAME",	"DC_NETBIOSALIAS",	# server stuff	"SERVER",	"SERVER_IP",	"NETBIOSNAME",	"NETBIOSALIAS",	# user stuff	"USERNAME",	"PASSWORD",	"DC_USERNAME",	"DC_PASSWORD",	# misc stuff	"KRB5_CONFIG",	"WINBINDD_SOCKET_DIR",	"WINBINDD_PRIV_PIPE_DIR");$SIG{INT} = $SIG{QUIT} = $SIG{TERM} = sub { 	my $signame = shift;	teardown_env($_) foreach(keys %running_envs);	die("Received signal $signame");};sub setup_env($){	my ($envname) = @_;	my $testenv_vars;	if ($envname eq "none") {		$testenv_vars = {};	} elsif (defined($running_envs{$envname})) {		$testenv_vars = $running_envs{$envname};		if (not $target->check_env($testenv_vars)) {			$testenv_vars = undef;		}	} else {		$testenv_vars = $target->setup_env($envname, $prefix);	}	return undef unless defined($testenv_vars);	$running_envs{$envname} = $testenv_vars;	SocketWrapper::set_default_iface(6);	write_clientconf($conffile, $testenv_vars);	foreach (@exported_envvars) {		if (defined($testenv_vars->{$_})) {			$ENV{$_} = $testenv_vars->{$_};		} else {			delete $ENV{$_};		}	}	return $testenv_vars;}sub exported_envvars_str($){	my ($testenv_vars) = @_;	my $out = "";	foreach (@exported_envvars) {		next unless defined($testenv_vars->{$_});		$out .= $_."=".$testenv_vars->{$_}."\n";	}	return $out;}sub getlog_env($){	my ($envname) = @_;	return "" if ($envname eq "none");	return $target->getlog_env($running_envs{$envname});}sub check_env($){	my ($envname) = @_;	return 1 if ($envname eq "none");	return $target->check_env($running_envs{$envname});}sub teardown_env($){	my ($envname) = @_;	return if ($envname eq "none");	$target->teardown_env($running_envs{$envname});	delete $running_envs{$envname};}if ($opt_no_lazy_setup) {	setup_env($_) foreach (keys %required_envs);}if ($opt_testenv) {	my $testenv_name = $ENV{SELFTEST_TESTENV};	$testenv_name = $testenv_default unless defined($testenv_name);	my $testenv_vars = setup_env($testenv_name);	$ENV{PIDDIR} = $testenv_vars->{PIDDIR};	my $envvarstr = exported_envvars_str($testenv_vars);	my $term = ($ENV{TERM} or "xterm");	system("$term -e 'echo -e \"Welcome to the Samba4 Test environment '$testenv_name'This matches the client environment used in make testsmbd is pid `cat \$PIDDIR/smbd.pid`Some useful environment variables:TORTURE_OPTIONS=\$TORTURE_OPTIONSCONFIGURATION=\$CONFIGURATION$envvarstr\" && LD_LIBRARY_PATH=$ENV{LD_LIBRARY_PATH} bash'");	teardown_env($testenv_name);} else {	foreach (@todo) {		$i++;		my $cmd = $$_[2];		$cmd =~ s/([\(\)])/\\$1/g;		my $name = $$_[0];		my $envname = $$_[1];				my $envvars = setup_env($envname);		if (not defined($envvars)) {			$msg_ops->skip_testsuite($name, "unable to set up environment $envname");			next;		}		run_testsuite($envname, $name, $cmd, $i, $suitestotal, 		              $msg_ops);		if (defined($opt_analyse_cmd)) {			system("$opt_analyse_cmd \"$name\"");		}		teardown_env($envname) if ($opt_resetup_env);	}}print "\n";teardown_env($_) foreach (keys %running_envs);$target->stop();$msg_ops->summary();my $failed = 0;# if there were any valgrind failures, show themforeach (<$prefix/valgrind.log*>) {	next unless (-s $_);	system("grep DWARF2.CFI.reader $_ > /dev/null");	if ($? >> 8 == 0) {	    print "VALGRIND FAILURE\n";	    $failed++;	    system("cat $_");	}}if ($opt_format eq "buildfarm") {	print "TEST STATUS: $statistics->{SUITES_FAIL}\n";}exit $statistics->{SUITES_FAIL};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -