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

📄 dbdadmin.t

📁 SinFP是一种新的识别对方计算机操作系统类型的工具
💻 T
字号:
#!/usr/local/bin/perl##   Test suite for the admin functions of DBD::mSQL and DBD::mysql.###   Make -w happy#$test_dsn = $test_user = $test_password = $verbose = '';$| = 1;##   Include lib.pl#$DBI::errstr = ''; # Make -w happyrequire DBI;$mdriver = "";foreach $file ("lib.pl", "t/lib.pl", "DBD-~DBD_DRIVER~/t/lib.pl") {    do $file; if ($@) { print STDERR "Error while executing lib.pl: $@\n";			   exit 10;		      }    if ($mdriver ne '') {	last;    }}sub ServerError() {    print STDERR ("Cannot connect: ", $DBI::errstr, "\n",	"\tEither your server is not up and running or you have no\n",	"\tpermissions for acessing the DSN $test_dsn.\n",	"\tThis test requires a running server and write permissions.\n",	"\tPlease make sure your server is running and you have\n",	"\tpermissions, then retry.\n");    exit 10;}sub InDsnList($@) {    my($dsn, @dsnList) = @_;    my($d);    foreach $d (@dsnList) {	if ($d =~ /^dbi:[^:]+:$dsn\b/i) {	    return 1;	}    }    0;}##   Main loop; leave this untouched, put tests after creating#   the new table.#while (Testing()) {    # Check if the server is awake.    $dbh = undef;    Test($state or ($dbh = DBI->connect($test_dsn, $test_user,					$test_password)))	or ServerError();    Test($state or (@dsn = DBI->data_sources($mdriver)) >= 0);    if (!$state  &&  $verbose) {	my $d;	print "List of $mdriver data sources:\n";	foreach $d (@dsn) {	    print "    $d\n";	}	print "List ends.\n";    }    my $drh;    Test($state or ($drh = DBI->install_driver($mdriver)))	or print STDERR ("Cannot obtain drh: " . $DBI::errstr);    #    #   Check the ping method.    #    Test($state or $dbh->ping())	or ErrMsgF("Ping failed: %s.\n", $dbh->errstr);    if ($mdriver eq 'mSQL'  or $mdriver eq 'mysql') {	my($testdsn) = "testaa";	my($testdsn1, $testdsn2);	my($accessDenied) = 0;	my($warning);	my($warningSub) = sub { $warning = shift };	if (!$state) {	    while (InDsnList($testdsn, @dsn)) {		++$testdsn;	    }	    $testdsn1 = $testdsn;	    ++$testdsn1;	    while (InDsnList($testdsn1, @dsn)) {		++$testdsn1;	    }	    $testdsn2 = $testdsn1;	    ++$testdsn2;	    while (InDsnList($testdsn2, @dsn)) {		++$testdsn2;	    }	    $SIG{__WARN__} = $warningSub;	    $warning = '';	    if (!($result = $drh->func($testdsn, '_CreateDB'))		and  ($drh->errstr =~ /(access|permission) denied/i)) {		$accessDenied = 1;		$result = 1;	    }	    $SIG{__WARN__} = 'DEFAULT';	}	Test($state or $result)	    or print STDERR ("Error while executing _CreateDB: "			     . $drh->errstr);	Test($state or ($warning =~ /deprecated/))	    or print STDERR ("Expected warning, got '$warning'.\n");	Test($state or $accessDenied	     or InDsnList($testdsn, DBI->data_sources($mdriver)))	    or print STDERR ("New DB not in DSN list\n");	$SIG{__WARN__} = $warningSub;	$warning = '';	Test($state or $accessDenied	     or $drh->func($testdsn, '_DropDB'))	    or print STDERR ("Error while executing _DropDB: "			     . $drh->errstr);	Test($state or $accessDenied or ($warning =~ /deprecated/))	    or print STDERR ("Expected warning, got '$warning'\n");	$SIG{__WARN__} = 'DEFAULT';	Test($state or $accessDenied	     or !InDsnList($testdsn, DBI->data_sources($mdriver)))	    or print STDERR ("New DB not removed from DSN list\n");	my($mayShutdown) = $ENV{'DB_SHUTDOWN_ALLOWED'};	Test($state or $accessDenied	     or $drh->func('createdb', $testdsn1, 'admin'))	    or printf STDERR ("\$drh->admin('createdb') failed: %s\n",			      $drh->errstr);	Test($state or $accessDenied	     or InDsnList($testdsn1, DBI->data_sources($mdriver)))	    or printf STDERR ("DSN $testdsn1 not in DSN list.\n");	Test($state or $accessDenied	     or $drh->func('dropdb', $testdsn1, 'admin'))	    or printf STDERR ("\$drh->admin('dropdb') failed: %s\n",			      $drh->errstr);	Test($state or $accessDenied	     or !InDsnList($testdsn1, DBI->data_sources($mdriver)))	    or printf STDERR ("DSN $testdsn1 not removed from DSN list.\n");	Test($state or $accessDenied	     or $drh->func('createdb', $testdsn2, 'admin'))	    or printf STDERR ("\$drh->admin('createdb') failed: %s\n",			      $drh->errstr);	Test($state or $accessDenied	     or InDsnList($testdsn2, DBI->data_sources($mdriver)))	    or printf STDERR ("DSN $testdsn2 not in DSN list.\n");	Test($state or $accessDenied	     or $drh->func('dropdb', $testdsn2, 'admin'))	    or printf STDERR ("\$drh->admin('dropdb') failed: %s\n",			      $drh->errstr);	Test($state or $accessDenied	     or !InDsnList($testdsn2, DBI->data_sources($mdriver)))	    or printf STDERR ("DSN $testdsn2 not removed from DSN list.\n");	if ($mdriver eq 'mysql') {	    #	    #   Try to do a shutdown.	    #	    Test($state  or  !$mayShutdown  or  $accessDenied		 or  $dbh->func("shutdown", "admin"))		or ErrMsgF("Cannot shutdown database: %s.\n", $dbh->errstr);	    if (!$state) {		sleep 10;	    }	    #	    #   Pinging should fail now.	    #	    Test($state or !$mayShutdown or $accessDenied or !$dbh->ping())		or print STDERR ("Shutdown failed (ping succeeded)");	    #	    #   Restart the database	    #	    if (!$state  &&  $mayShutdown  &&  !$accessDenied) {		if (fork() == 0) {		    close STDIN;		    close STDOUT;		    close STDERR;		    exec "safe_mysqld &";		}	    }	    sleep 5;	    #	    #   Try DBD::mysql's automatic reconnect	    #	    Test($state or $dbh->ping())		or ErrMsgF("Reconnect failed: %s.\n", $dbh->errstr);	}	Test($state or $dbh->disconnect);    }}

⌨️ 快捷键说明

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