Annotation of loncom/interface/test/lonmysqltest.pl, revision 1.1

1.1     ! matthew     1: #!/usr/bin/perl -w
        !             2: # The LearningOnline Network with CAPA
        !             3: #
        !             4: # $Id$
        !             5: #
        !             6: # Copyright Michigan State University Board of Trustees
        !             7: #
        !             8: # This file is part of the LearningOnline Network with CAPA (LON-CAPA).
        !             9: #
        !            10: # LON-CAPA is free software; you can redistribute it and/or modify
        !            11: # it under the terms of the GNU General Public License as published by
        !            12: # the Free Software Foundation; either version 2 of the License, or
        !            13: # (at your option) any later version.
        !            14: #
        !            15: # LON-CAPA is distributed in the hope that it will be useful,
        !            16: # but WITHOUT ANY WARRANTY; without even the implied warranty of
        !            17: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        !            18: # GNU General Public License for more details.
        !            19: #
        !            20: # You should have received a copy of the GNU General Public License
        !            21: # along with LON-CAPA; if not, write to the Free Software
        !            22: # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
        !            23: #
        !            24: # /home/httpd/html/adm/gpl.txt
        !            25: #
        !            26: # http://www.lon-capa.org/
        !            27: #
        !            28: ######################################################################
        !            29: use strict;
        !            30: use lib '/home/httpd/lib/perl/';
        !            31: use Apache::lonmysql();
        !            32: use DBI;
        !            33: use Test::Simple tests => 57;
        !            34: 
        !            35: ##
        !            36: ##  Note: The root password to my MySQL server is shown below.
        !            37: ##  Access is only allowed from localhost so it should be okay.
        !            38: ##
        !            39: my $supersecretpassword = '';  # shhhh
        !            40: ok(&create_test_db(),'database creation');
        !            41: 
        !            42: &Apache::lonmysql::disconnect_from_db();
        !            43: &Apache::lonmysql::set_mysql_user_and_password('root',
        !            44:                                                $supersecretpassword,
        !            45:                                                'lonmysqltest');
        !            46: &Apache::lonmysql::connect_to_db();
        !            47: my @letters = qw/a b c d e f g h i j k l m n o p q r s t u v w x y z/;
        !            48: foreach my $letter (@letters) {
        !            49:     my $tablename = '1234'.$letter.'5678';
        !            50:     ok(&test_table_name_creation($tablename),'creating '.$tablename);
        !            51:     $tablename = '1234'.uc($letter).'5678';
        !            52:     ok(&test_table_name_creation($tablename),'creating '.$tablename);
        !            53: }
        !            54: foreach my $tablename (qw/1430288fd2941admsul1 
        !            55:                           2521505c20a41b8msul1 
        !            56:                           74261c618e441e8msul1/) {
        !            57:     ok(&test_table_name_creation($tablename),'creating '.$tablename);
        !            58: }
        !            59: 
        !            60: ok(&test_database_drop(),'database destruction');
        !            61: 
        !            62: exit;
        !            63: 
        !            64: #####################################################################
        !            65: #####################################################################
        !            66: ##
        !            67: ##                     Tests live below
        !            68: ##
        !            69: #####################################################################
        !            70: #####################################################################
        !            71: sub create_test_db {
        !            72:     &Apache::lonmysql::set_mysql_user_and_password('root',
        !            73:                                                    $supersecretpassword,
        !            74:                                                    'mysql');
        !            75:     my $dbh = &Apache::lonmysql::get_dbh();
        !            76:     if (! defined($dbh)) { return 0; }
        !            77:     my $request = 'DROP DATABASE IF EXISTS lonmysqltest';
        !            78:     $dbh->do($request);
        !            79:     $request = 'CREATE DATABASE lonmysqltest';
        !            80:     $dbh->do($request);
        !            81:     if ($dbh->err) {
        !            82:        return 0;
        !            83:     } else {
        !            84:         return 1;
        !            85:     }
        !            86:     &Apache::lonmysql::disconnect_from_db();
        !            87: }
        !            88: 
        !            89: sub test_database_drop {
        !            90:     &Apache::lonmysql::disconnect_from_db();
        !            91:     &Apache::lonmysql::set_mysql_user_and_password('root',
        !            92:                                                    $supersecretpassword,
        !            93:                                                    'mysql');
        !            94:     my $dbh = &Apache::lonmysql::get_dbh();
        !            95:     if (! defined($dbh)) { return 0; }
        !            96:     my $request = 'DROP DATABASE IF EXISTS lonmysqltest';
        !            97:     $dbh->do($request);
        !            98:     if ($dbh->err) {
        !            99:         return 0;
        !           100:     } else {
        !           101:         return 1;
        !           102:     }
        !           103:     &Apache::lonmyql::disconnect_from_db();
        !           104: }
        !           105: 
        !           106: sub test_table_name_creation {
        !           107:     my ($tablename) = @_;
        !           108:     my $dbh = &Apache::lonmysql::get_dbh();
        !           109:     if (! defined($dbh)) { return 0; }
        !           110:     ##
        !           111:     ## Silly table creation test
        !           112:     my $fixed_table_name = &Apache::lonmysql::fix_table_name($tablename);
        !           113:     my $table_def = {
        !           114:         id => $fixed_table_name,
        !           115:         permanent => 'no',
        !           116:         columns => [{ name => 'student_id',
        !           117:                       type => 'MEDIUMINT UNSIGNED',
        !           118:                       restrictions => 'NOT NULL',
        !           119:                       auto_inc     => 'yes', },
        !           120:                     { name => 'student',
        !           121:                       type => 'VARCHAR(100) BINARY',
        !           122:                       restrictions => 'NOT NULL UNIQUE'},
        !           123:                     { name => 'section',
        !           124:                       type => 'VARCHAR(100) BINARY',
        !           125:                       restrictions => 'NOT NULL'},
        !           126:                     { name => 'status',
        !           127:                       type => 'VARCHAR(15) BINARY',
        !           128:                       restrictions => 'NOT NULL'},
        !           129:                     { name => 'classification',
        !           130:                       type => 'VARCHAR(100) BINARY', },
        !           131:                     { name => 'updatetime',
        !           132:                       type => 'INT UNSIGNED'},
        !           133:                     { name => 'fullupdatetime',
        !           134:                       type => 'INT UNSIGNED'},
        !           135:                     ],
        !           136:         'PRIMARY KEY' => ['student_id'],
        !           137:         'KEY' => [{ columns => ['student (100)',
        !           138:                                 'section (100)',
        !           139:                                 'status (15)',]},],
        !           140:     };
        !           141:     my $tableid = &Apache::lonmysql::create_table($table_def);
        !           142:     if (! defined($tableid)) {
        !           143: #        warn 
        !           144: #            "Unable to create table '$tablename'->'$fixed_table_name'".$/.
        !           145: #            &Apache::lonmysql::get_error().$/;
        !           146:         return 0;
        !           147:     }
        !           148:     if ($dbh->err) {
        !           149: #        warn "Unspecified error on '$tablename'->'$fixed_table_name'";
        !           150:         return 0;
        !           151:     } else {
        !           152:         return 1;
        !           153:     }
        !           154: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>