File:
[LON-CAPA] /
loncom /
interface /
test /
lonmysqltest.pl
Revision
1.2:
download - view:
text,
annotated -
select for diffs
Mon Feb 21 18:07:30 2005 UTC (19 years, 10 months ago) by
matthew
Branches:
MAIN
CVS tags:
version_2_9_X,
version_2_9_99_0,
version_2_9_1,
version_2_9_0,
version_2_8_X,
version_2_8_99_1,
version_2_8_99_0,
version_2_8_2,
version_2_8_1,
version_2_8_0,
version_2_7_X,
version_2_7_99_1,
version_2_7_99_0,
version_2_7_1,
version_2_7_0,
version_2_6_X,
version_2_6_99_1,
version_2_6_99_0,
version_2_6_3,
version_2_6_2,
version_2_6_1,
version_2_6_0,
version_2_5_X,
version_2_5_99_1,
version_2_5_99_0,
version_2_5_2,
version_2_5_1,
version_2_5_0,
version_2_4_X,
version_2_4_99_0,
version_2_4_2,
version_2_4_1,
version_2_4_0,
version_2_3_X,
version_2_3_99_0,
version_2_3_2,
version_2_3_1,
version_2_3_0,
version_2_2_X,
version_2_2_99_1,
version_2_2_99_0,
version_2_2_2,
version_2_2_1,
version_2_2_0,
version_2_1_X,
version_2_1_99_3,
version_2_1_99_2,
version_2_1_99_1,
version_2_1_99_0,
version_2_1_3,
version_2_1_2,
version_2_1_1,
version_2_1_0,
version_2_12_X,
version_2_11_X,
version_2_11_5_msu,
version_2_11_5,
version_2_11_4_uiuc,
version_2_11_4_msu,
version_2_11_4,
version_2_11_3_uiuc,
version_2_11_3_msu,
version_2_11_3,
version_2_11_2_uiuc,
version_2_11_2_msu,
version_2_11_2_educog,
version_2_11_2,
version_2_11_1,
version_2_11_0_RC3,
version_2_11_0_RC2,
version_2_11_0_RC1,
version_2_11_0,
version_2_10_X,
version_2_10_1,
version_2_10_0_RC2,
version_2_10_0_RC1,
version_2_10_0,
version_2_0_X,
version_2_0_99_1,
version_2_0_2,
version_2_0_1,
version_2_0_0,
version_1_99_3,
version_1_99_2,
version_1_99_1_tmcc,
version_1_99_1,
version_1_99_0_tmcc,
version_1_99_0,
loncapaMITrelate_1,
language_hyphenation_merge,
language_hyphenation,
bz6209-base,
bz6209,
bz5969,
bz2851,
PRINT_INCOMPLETE_base,
PRINT_INCOMPLETE,
HEAD,
GCI_3,
GCI_2,
GCI_1,
BZ5971-printing-apage,
BZ5434-fox,
BZ4492-merge,
BZ4492-feature_horizontal_radioresponse
Use 'a'..'z' instead of qw/a b c .../.
#!/usr/bin/perl -w
# The LearningOnline Network with CAPA
#
# $Id: lonmysqltest.pl,v 1.2 2005/02/21 18:07:30 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
# This file is part of the LearningOnline Network with CAPA (LON-CAPA).
#
# LON-CAPA is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# LON-CAPA is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with LON-CAPA; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# /home/httpd/html/adm/gpl.txt
#
# http://www.lon-capa.org/
#
######################################################################
use strict;
use lib '/home/httpd/lib/perl/';
use Apache::lonmysql();
use DBI;
use Test::Simple tests => 57;
##
## Note: The root password to my MySQL server is shown below.
## Access is only allowed from localhost so it should be okay.
##
my $supersecretpassword = ''; # shhhh
ok(&create_test_db(),'database creation');
&Apache::lonmysql::disconnect_from_db();
&Apache::lonmysql::set_mysql_user_and_password('root',
$supersecretpassword,
'lonmysqltest');
&Apache::lonmysql::connect_to_db();
my @letters = ('a'..'z');
foreach my $letter (@letters) {
my $tablename = '1234'.$letter.'5678';
ok(&test_table_name_creation($tablename),'creating '.$tablename);
$tablename = '1234'.uc($letter).'5678';
ok(&test_table_name_creation($tablename),'creating '.$tablename);
}
foreach my $tablename (qw/1430288fd2941admsul1
2521505c20a41b8msul1
74261c618e441e8msul1/) {
ok(&test_table_name_creation($tablename),'creating '.$tablename);
}
ok(&test_database_drop(),'database destruction');
exit;
#####################################################################
#####################################################################
##
## Tests live below
##
#####################################################################
#####################################################################
sub create_test_db {
&Apache::lonmysql::set_mysql_user_and_password('root',
$supersecretpassword,
'mysql');
my $dbh = &Apache::lonmysql::get_dbh();
if (! defined($dbh)) { return 0; }
my $request = 'DROP DATABASE IF EXISTS lonmysqltest';
$dbh->do($request);
$request = 'CREATE DATABASE lonmysqltest';
$dbh->do($request);
if ($dbh->err) {
return 0;
} else {
return 1;
}
&Apache::lonmysql::disconnect_from_db();
}
sub test_database_drop {
&Apache::lonmysql::disconnect_from_db();
&Apache::lonmysql::set_mysql_user_and_password('root',
$supersecretpassword,
'mysql');
my $dbh = &Apache::lonmysql::get_dbh();
if (! defined($dbh)) { return 0; }
my $request = 'DROP DATABASE IF EXISTS lonmysqltest';
$dbh->do($request);
if ($dbh->err) {
return 0;
} else {
return 1;
}
&Apache::lonmyql::disconnect_from_db();
}
sub test_table_name_creation {
my ($tablename) = @_;
my $dbh = &Apache::lonmysql::get_dbh();
if (! defined($dbh)) { return 0; }
##
## Silly table creation test
my $fixed_table_name = &Apache::lonmysql::fix_table_name($tablename);
my $table_def = {
id => $fixed_table_name,
permanent => 'no',
columns => [{ name => 'student_id',
type => 'MEDIUMINT UNSIGNED',
restrictions => 'NOT NULL',
auto_inc => 'yes', },
{ name => 'student',
type => 'VARCHAR(100) BINARY',
restrictions => 'NOT NULL UNIQUE'},
{ name => 'section',
type => 'VARCHAR(100) BINARY',
restrictions => 'NOT NULL'},
{ name => 'status',
type => 'VARCHAR(15) BINARY',
restrictions => 'NOT NULL'},
{ name => 'classification',
type => 'VARCHAR(100) BINARY', },
{ name => 'updatetime',
type => 'INT UNSIGNED'},
{ name => 'fullupdatetime',
type => 'INT UNSIGNED'},
],
'PRIMARY KEY' => ['student_id'],
'KEY' => [{ columns => ['student (100)',
'section (100)',
'status (15)',]},],
};
my $tableid = &Apache::lonmysql::create_table($table_def);
if (! defined($tableid)) {
# warn
# "Unable to create table '$tablename'->'$fixed_table_name'".$/.
# &Apache::lonmysql::get_error().$/;
return 0;
}
if ($dbh->err) {
# warn "Unspecified error on '$tablename'->'$fixed_table_name'";
return 0;
} else {
return 1;
}
}
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>