stas 01/12/26 23:04:35 Modified: src/docs/2.0/devel/writing_tests writing_tests.pod Log: - port README to extensively document Request Generation and Response Options, + runtime confguration options Revision Changes Path 1.28 +213 -14 modperl-docs/src/docs/2.0/devel/writing_tests/writing_tests.pod Index: writing_tests.pod =================================================================== RCS file: /home/cvs/modperl-docs/src/docs/2.0/devel/writing_tests/writing_tests.pod,v retrieving revision 1.27 retrieving revision 1.28 diff -u -r1.27 -r1.28 --- writing_tests.pod 2001/12/27 05:08:42 1.27 +++ writing_tests.pod 2001/12/27 07:04:35 1.28 @@ -57,8 +57,8 @@ it. It's important to know that there is a special verbose mode, enabled -with the I<-v> option, in which everything printed by the test goes to -C<STDOUT>. So for example if your test does this: +with the I<-verbose> option, in which everything printed by the test +goes to C<STDOUT>. So for example if your test does this: print "# testing : feature foo\n"; print "# expected: $expected\n"; @@ -66,7 +66,7 @@ ok $expected eq $received; in the normal mode, you won't see any of these prints. But if you run -the test with I<t/TEST -v>, you will see something like this: +the test with I<t/TEST -verbose>, you will see something like this: # testing : feature foo # expected: 2 @@ -133,11 +133,11 @@ In case something goes wrong you should run the tests in the verbose mode: - % t/TEST -v + % t/TEST -verbose In this case the test may print useful information, like what values it expects and what values it receives, given that the test is written -to report these. In the silent mode (without C<-v>) these printouts +to report these. In the silent mode (without C<-verbose>) these printouts are suppressed by the test suite. When debugging problems it helps to keep the I<error_log> file open in @@ -196,10 +196,10 @@ When you run specific tests you may want to run them in the verbose mode, and depending on how the test was written, you may get more -debug information under this mode. This mode is turned on with I<-v> +debug information under this mode. This mode is turned on with I<-verbose> option: - % t/TEST -run -v protocol/echo + % t/TEST -run -verbose protocol/echo You can run all the tests in a single directory by just passing this directory as an argument. You can pass more than one test or directory @@ -465,10 +465,185 @@ Finally, any other options passed will be forwarded to C<t/TEST> as is. -=head2 Advanced Testing +=head2 RunTime Configuration Overriding +After the server is configured during C<make test> or with C<t/TEST +-config>, it's possible to explicitly override certain configuration +parameters. The override-able parameters are listed when executing: + % t/TEST -help +Probably the most useful parameters are: + +=over + +=item * -preamble + +configuration directives to add at the beginning of I<httpd.conf>. +For example to turn the tracing on: + + % t/TEST -preamble "PerlTrace all" + +=item * -postamble + +configuration directives to add at the end of I<httpd.conf>. For +example to load a certain Perl module: + + % t/TEST -postamble "PerlModule MyDebugMode" + +=item * -user + +run as user I<nobody>: + + % t/TEST -user nobody + +=item * -port + +run on a different port: + + % t/TEST -port 8799 + +=item * -servername + +run on a different server: + + % t/TEST -servername test.example.com + +=item * -httpd + +configure an httpd other than the default (that apxs figures out): + + % t/TEST -httpd ~/httpd-2.0/httpd + +=item * -apxs + +switch to another apxs: + + % t/TEST -apxs ~/httpd-2.0-prefork/bin/apxs + +=back + +For a complete list of override-able configuration parameters see the +output of C<t/TEST -help>. + +=head2 Request Generation and Response Options + +We have mentioned already the most useful run-time options. Here are +some other options that you may find useful during testing. + +=over + +=item * -ping + +Ping the server to see whether it runs + + % t/TEST -ping + +Ping the server and wait until the server starts, report waiting time. + + % t/TEST -ping=block + +This can be useful in conjunction with I<-run> option during debugging: + + % t/TEST -ping=block -run + +normally, I<-run> will immediately quit if it detects that the server +is not running, but with I<-ping=block> in effect, it'll wait +indefinitely for the server to start up. + +=item * -head + +Issue a C<HEAD> request. For example to request I</server-info>: + + % t/TEST -head /server-info + +=item * -get + +Request the body of a certain URL via C<GET>. + + % t/TEST -get /server-info + +If no URL is specified C</> is used. + +ALso you can issue a C<GET> request but to get only headers as a +response (e.g. useful to just check C<Content-length>) + + % t/TEST -head -get /server-info + +C<GET> URL with authentication credentials: + + % t/TEST -get /server-info -username dougm -password domination + +(please keep the password secret!) + +=item * -post + +Generate a C<POST> request. + +Read content to C<POST> from string: + + % t/TEST -post /TestApache::post -content 'name=dougm&company=covalent' + +Read content to C<POST> from C<STDIN>: + + % t/TEST -post /TestApache::post -content - < foo.txt + +Generate a content body of 1024 bytes in length: + + % t/TEST -post /TestApache::post -content x1024 + +The same but print only the response headers, e.g. useful to just +check C<Content-length>: + + % t/TEST -post -head /TestApache::post -content x1024 + +=item * -header + +Add headers to (-get|-post|-head) request: + + % t/TEST -get -header X-Test=10 -header X-Host=example.com /server-info + +=item * -ssl + +Run all tests through mod_ssl: + + % t/TEST -ssl + +=item * -http11 + +Run all tests with HTTP/1.1 (C<KeepAlive>) requests: + + % t/TEST -http11 + +=item * -proxy + +Run all tests through mod_proxy: + + % t/TEST -proxy + +=item * + +=back + +The debugging options I<-debug> and I<-breakpoint> are covered in the +L<Debugging> section. + +For a complete list of available switches see the output of C<t/TEST +-help>. + +=head2 Batch Mode + +When running in the batch mode and redirecting C<STDOUT>, this state +is automagically detected and the I<no color> mode is turned on, under +which the program generates a minimal output to make the log files +useful. If this doesn't work and you still get all the mess printed +during the interactive run, set the C<APACHE_TEST_NO_COLOR=1> +environment variable. + + + + + META: a lot more stuff to go here from the pods/modperl_dev.pod and Apache-Test/README @@ -1514,7 +1689,7 @@ now we run the test: - % ./t/TEST -run -v skip_subtest_1 + % ./t/TEST -run -verbose skip_subtest_1 skip_subtest_1....1..4 ok 1 # skip foo is missing ok 2 # skip foo is missing @@ -1558,7 +1733,7 @@ and then ask to run only sub-tests 1 and 3 and to skip the rest. - % ./t/TEST -v skip_subtest_2 1 3 + % ./t/TEST -verbose skip_subtest_2 1 3 skip_subtest_2....1..4 ok 1 ok 2 # skip skipping this subtest @@ -1572,7 +1747,7 @@ A range of sub-tests to run can be given using the Perl's range operand: - % ./t/TEST -v skip_subtest_2 2..4 + % ./t/TEST -verbose skip_subtest_2 2..4 skip_subtest_2....1..4 ok 1 # skip askipping this subtest not ok 2 @@ -1643,9 +1818,9 @@ No debug help here, since in a non-verbose mode the debug comments aren't printed. If we run the same test using the verbose mode, -enabled with C<-v>: +enabled with C<-verbose>: - % t/TEST -v debug_comments + % t/TEST -verbose debug_comments debug_comments....1..1 # testing feature foo # expected: a good value @@ -1986,6 +2161,30 @@ Perl and C debuggers, and this knowledge will save you a lot of time and grief in a long run. +=head2 Tracing + +Start the server under strace(1): + + % t/TEST -debug strace + +The output goes to I<t/logs/strace.log>. + +META: complete + +run .t test under the perl debugger +% t/TEST -d perl t/modules/access.t + +run .t test under the perl debugger (nonstop mode, output to t/logs/perldb.out) +% t/TEST -d perl=nostop t/modules/access.t + +turn on -v and LWP trace (1 is the default) mode in Apache::TestRequest +% t/TEST -d lwp t/modules/access.t + +turn on -v and LWP trace mode (level 2) in Apache::TestRequest +% t/TEST -d lwp=2 t/modules/access.t + + + =head2 Under C debugger META: to be written @@ -1995,7 +2194,7 @@ When the Perl code misbehaves it's the best to run it under the Perl debugger. Normally started as: - % perl -d program.pl + % perl -debug program.pl the flow control gets passed to the Perl debugger, which allows you to run the program in single steps and examine its states and variables
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]