- 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

- general config: adjust Apache/TestConfig.pm not to write irrelevant
  httpd.conf sections (e.g. <IfModule prefork.c> 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 <IfModule mpm_winnt.c>
  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:

  For now, 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 |

  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

- 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.