--- loncom/build/system_dependencies/sqltest.pl 2002/08/06 23:18:25 1.6 +++ loncom/build/system_dependencies/sqltest.pl 2002/09/12 22:47:28 1.9 @@ -2,7 +2,7 @@ # sqltest.pl - script to test MySQL database connectivity for LON-CAPA # -# $Id: sqltest.pl,v 1.6 2002/08/06 23:18:25 harris41 Exp $ +# $Id: sqltest.pl,v 1.9 2002/09/12 22:47:28 harris41 Exp $ # ### @@ -41,45 +41,49 @@ avoid indirectly testing software depend =head2 ORGANIZATION OF THIS PERL SCRIPT -The script is organized into the following sections +The script is organized into the following sections. =over 4 =item 1. -Modules used by this script, +Process version information of this file. =item 2. -Initializations. +Modules used by this script, =item 3. -Read in current configuration. +Initializations. =item 4. +Read in current configuration. + +=item 5. + Is this a library or access server? This step in the script is both a sanity check and also allows for other future LON-CAPA server types (e.g. "admin", "backup", "firewall") to not be required to have MySQL. -=item 5. +=item 6. Make sure that the database can be accessed. If not, a variety of possible problems should be tested for, and a status report should be issued to standard output. -=item 6. +=item 7. Close database connection. This part of the script is only reached if the database was successfully connected to. -=item 7. +=item 8. Subroutines. @@ -130,6 +134,12 @@ Foundation, Inc., 59 Temple Place, Suite =cut +# =================================== Process version information of this file. +my $VERSION = sprintf("%d.%02d", q$Revision: 1.9 $ =~ /(\d+)\.(\d+)/); + +print('Running sqltest.pl, version '.$VERSION.'.'."\n"); +print('(Test interoperability of the MySQL server for use by LON-CAPA.)'."\n"); + # ================================================ Modules used by this script. use strict; use DBI; # Needed to interface with the database. @@ -143,9 +153,6 @@ my %perlvar; my $webconfdir='/etc/httpd/conf/'; -# NOTE: DEPRECATED scanning of access.conf -&configuration_scan(\%perlvar,$webconfdir.'access.conf'); - # Scanning the standard loncapa configuration files. &configuration_scan(\%perlvar,$webconfdir.'loncapa.conf'); &configuration_scan(\%perlvar,$webconfdir.'loncapa_apache.conf'); @@ -186,6 +193,7 @@ my $dbh; my $checkDBImodule=`perl pmvers DBI 2>/dev/null`; my $checkMYSQLmodule=`perl pmvers Mysql 2>/dev/null`; my $checkprocess=`/etc/rc.d/init.d/mysqld status`; + my $process_ecode=system('/etc/rc.d/init.d/mysqld status'); # ---------------------------------------------- Issue a status report. if (!$checkDBImodule) { @@ -239,6 +247,19 @@ shutdown the mysqld processes. END $problem_flag=1; } + if ($process_ecode) { # The exit code for mysqld status was abnormal. + print('**** ERROR **** MYSQLD IS NOT AVAILABLE'."\n"); + print(<disconnect(); # --------- configuration_scan: look for PerlSetVar and store in hash variable. sub configuration_scan { my ($storagehashref,$filename)=@_; - open(CONFIG,$filename) || - (print "Can't read $filename\n" && exit); + open(CONFIG,$filename) or + (print("Can't read $filename\n") && exit(1)); while (my $configline=) { if ($configline =~ /^[^\#]*PerlSetVar/) { my ($dummy,$varname,$varvalue)=split(/\s+/,$configline);