- on linux most symbols are resolved on demand, but this is not the case with certain other platforms. so testing on linux may not detect some problems, exposed on other platforms. env var PERL_DL_NONLAZY=1 tries to resolve all symbols at load time. we could always enforce that with this patch: --- Apache-Test/lib/Apache/TestRun.pm 16 Apr 2004 20:29:23 -0000 1.166 +++ Apache-Test/lib/Apache/TestRun.pm 6 May 2004 04:43:01 -0000 @@ -643,7 +643,7 @@ } close $sh; - $original_command = "ulimit -c unlimited; $original_command"; + $original_command = "ulimit -c unlimited; PERL_DL_NONLAZY=1 $original_comma nd"; - general config: adjust Apache/TestConfig.pm not to write irrelevant httpd.conf sections (e.g. for win32, and vice versa, A-T knows exactly what mpm it needs to write the config for). Thus reducing the clutter. - winnt case: Apache/TestConfig.pm config for before Apache-2.0.50 ThreadsPerChild had to be at least as big as the number of Vhosts. This was fixed in 2.0.50. Since A-T knows the httpd version, it shouldn't start so many threads for httpd >= 2.0.50, but @MinClients@. Also add BACK_COMPAT_MARKER in the logic so when no longer support httpd < 2.0.50, this logic could be removed. - sometimes the server aborts completely after the test suite has run some of the tests (e.g. win32's server has crashed and no replacement is available), but the client part continues to run tests unaware of that problem. what would be nice to be able to detect that the server is gone and somehow abort the test suite - Custom sticky config: invalidate invalid bits of the saved config, e.g. if apxs is saved but can't be found on the filesystem. So if someone installs Apache in one location, runs A-T which saves that location, and then nukes Apache and reinstalls it into a different location we should drop the previously saved config since the path to apxs and/or httpd is now invalid. - Apache-Test doesn't run on IPv6 systems, need to change the autogeneration of httpd.conf to support IPv6. It requires a replacement of 'Listen 80' with 'Listen servername:80' Philippe posted patch here: http://marc.theaimsgroup.com/?l=apache-modperl-dev&m=105514290024419&w=2 For now, 127.0.0.1 will be hardcoded in the Listen directive, but a better method would use this table: Apache \ OS | IPV4 | IPV6 -------------------------------------------- --enable-v4-mapped | 80 | 80 --disable-v4-mapped | can't happen | 127.0.0.1:80 To more correctly pick the right Listen flavor. - Apache-Test assumes that any core file found under t/ was generated by httpd, (and suggests the gdb invoking command) which is incorrect in some cases. For example t/TEST -config, which is run by bin/perl, may dump core as well. - consider not using the __DIE__ sighandler, but instead wrap the potentially failing code in the eval trap blocks. - print STDERR is buffered in test handlers, whereas warn() works normally. select() helps, but STDERR should be unbuffered in first place. - If something goes wrong during the ./t/TEST's phase when all the configuration files httpd.conf, etc. are generated, t/conf/apache_test_config.pm now gets written, so t/TEST -clean can work However if the problem happens during 'make test' for some reason Makefile doesn't abort on exit from test_clean target, no matter if I put exit -1, 0 or 1, and proceeds with run_tests target. probably, since __DIE__ will stop the server. to reproduce the problem during configure() apply this patch: Index: Apache-Test/lib/Apache/TestConfigPerl.pm =================================================================== RCS file: /home/cvs/httpd-test/perl-framework/Apache-Test/lib/Apache/TestConfigPerl.pm,v retrieving revision 1.38 diff -u -r1.38 TestConfigPerl.pm --- Apache-Test/lib/Apache/TestConfigPerl.pm 2001/10/18 04:18:16 1.38 +++ Apache-Test/lib/Apache/TestConfigPerl.pm 2001/10/19 02:14:56 @@ -347,6 +347,7 @@ if (open $fh, $file) { my $content = <$fh>; close $fh; + require $file; if ($content =~ /APACHE_TEST_CONFIGURE/m) { eval { require $file }; warn $@ if $@; - segfaults should be trapped and: * the test routine should be aborted, since it's possible that some other test will segfault too and overwrite the core file * it'd be cool to automatically generate the backtrace with help of Devel::CoreStack and save it in the file * once we add the backtrace feature, we don't have to abort the rest of the tests, but to save each bt as "backtrace.$test_path". => this should be very useful in smoke testing * later, it'd be nice to integrate this with build/bugreport.pl, so the bug report with the backtrace and everything we want to know from user's machine, including their /etc/shadow (:-) will be automatically posted to the list.