mirror of
https://github.com/DBD-SQLite/DBD-SQLite
synced 2025-06-07 14:19:10 -04:00
DBD-SQLite: removed a dbdadmin test; this is not a test for SQLite but for mysql
This commit is contained in:
parent
52090271f0
commit
e1a9d91e5c
1 changed files with 0 additions and 211 deletions
211
t/dbdadmin.t
211
t/dbdadmin.t
|
@ -1,211 +0,0 @@
|
|||
#!/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 happy
|
||||
require 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);
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue