1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
- 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. <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:
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.
|