--- loncom/interface/lontest.pm 2001/01/06 17:15:22 1.2 +++ loncom/interface/lontest.pm 2008/11/14 21:26:54 1.20 @@ -1,38 +1,193 @@ - +# The LearningOnline Network with CAPA +# A debugging harness. +# +# $Id: lontest.pm,v 1.20 2008/11/14 21:26:54 jms 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/ +# # -# Just Junk Just Junk Just Junk -# -package Apache::lontest; +=head1 NAME -use strict; -use Apache::Constants qw(:common :http); +Apache::lontest; - sub handler { - my $r = shift; - $r->content_type('text/html'); - $r->send_http_header; - return OK if $r->header_only; - +=head1 SYNOPSIS - $r->print(''); +Used for debugging and testing the LONCAPA +system. - my $envkey; - - $->print("

Debugging


\n"); - - my $i=0; - foreach $envkey (sort keys %ENV) { - $r->print("$envkey ---- $ENV{$envkey}
"); - $i++; - } +This is part of the LearningOnline Network with CAPA project +described at http://www.lon-capa.org. + +=head1 HANDLER SUBROUTINE + +handler() + +=head1 OTHER SUBROUTINES - $r->print('

Total Number of Elements: '.$i.'

'); +=over + +=item * + +section() : + +section takes one env var name as input, and returns +what section the given env var is in, which is the part +of the env var before the first period. +Returns the section, or blank string for 'no section', +which is normal for the standard env vars like REQUEST_URI. + +=item * + +print_hash() + +=item * + + + + +=back + +=cut + +package Apache::lontest; + +use strict; +use Apache::Constants qw(:common :http); +use GDBM_File; +use Apache::loncommon; +use Apache::lonnet; + +sub section +{ + my ($name) = @_; + return $1 if $name =~ m/\A([^.]*)\./; + return ''; +} + +sub print_hash { + my ($r,$hash)=@_; + my $i=0; + my $interval = 20; # change this to change how many keys/table + my $prevSection = ''; # keeps track of the section we're in. + + foreach my $envkey (sort(keys(%{$hash}))) { + if (not ($i % $interval)) { + $r->print('') unless $i eq 0; + $r->print(''); + } + my $sec = section($envkey); + + if ($prevSection ne $sec) { # new section, print header + $r->print(''); + $prevSection = $sec; + } + + my $envVal = $hash->{$envkey}; + $envVal =~ s/(.{50})/$1\/g; + $envkey =~ s/(.{30})/$1\/g; + + $r->print(""); + $r->print("\n"); + $i++; + } + + $r->print('
'); + $r->print("

$sec

"); + $r->print('
$envkey$envVal

Total Number of Elements: '.$i.'

'); +} +sub handler { + my $r = shift; + &Apache::loncommon::content_type($r,'text/html'); + $r->send_http_header; + return OK if $r->header_only; + + $r->print(&Apache::loncommon::start_page("List Environment",undef, + {'function' => 'admin'})); + + $r->print("

Debugging


\n"); + $r->print(""); + $r->print("

ENV


\n"); + &print_hash($r,\%ENV); + $r->print("

env


\n"); + &print_hash($r,\%env); +# ------------------------------------------------ If in a course, print hashes + if ($env{'request.course.id'}) { + + my %parmhash; + my %symbhash; + my %hash; + + my $fn=$env{'request.course.fn'}; + + if (tie(%hash,'GDBM_File',"$fn.db",&GDBM_READER(),0640)) { + $r->print('

Big Hash

'); + foreach (sort keys %hash) { + $r->print("\n
".$_.': '.$hash{$_}); + } + untie %hash; + } else { + $r->print('

Count not tie big hash

'); + } + if (tie(%parmhash,'GDBM_File', + $env{'request.course.fn'}.'_parms.db', + &GDBM_READER(),0640)) { + $r->print('

Parm Hash

'); + foreach (sort keys %parmhash) { + $r->print("\n
".$_.': '.$parmhash{$_}); + } + untie %parmhash; + } else { + $r->print('

Could not tie parmhash

'); + } + if (tie(%symbhash,'GDBM_File',"$fn\_symb.db",&GDBM_READER(),0640)) { + $r->print('

Symb Hash

'); + foreach (sort keys %symbhash) { + $r->print("\n
".$_.': '.$symbhash{$_}); + } + untie %symbhash; + } else { + $r->print('

Could not tie symbhash

'); + } + if (-e $fn.'.state') { + $r->print('

State

'); + my @conditions=(); + { + my $fh=Apache::File->new($fn.'.state'); + @conditions=<$fh>; + } + foreach (@conditions) { + $r->print(''.$_.'
'); + } + } + } # ------------------------------------------------------------------- End Debug - $r->print(''); + $r->print(&Apache::loncommon::end_page()); + return OK; } + 1; __END__