[nagiosplug] Add testcase for HTTP chunked encoding
Thomas Guyot-Sionnest
dermoth at users.sourceforge.net
Fri Sep 9 07:34:36 CEST 2011
Module: nagiosplug
Branch: pu_dermoth_http
Commit: 0845fb8c2c67accca544e19384ebde2b705e10b9
Author: Thomas Guyot-Sionnest <dermoth at aei.ca>
Date: Thu Sep 8 03:10:08 2011 -0400
URL: http://nagiosplug.git.sf.net/git/gitweb.cgi?p=nagiosplug/nagiosplug;a=commit;h=0845fb8
Add testcase for HTTP chunked encoding
Runs only if HTTP_CHUNKED (env) is set, fails obviously
---
plugins/tests/check_http.t | 24 +++++++++++++++++++++++-
1 files changed, 23 insertions(+), 1 deletions(-)
diff --git a/plugins/tests/check_http.t b/plugins/tests/check_http.t
index 03d42fd..5092218 100755
--- a/plugins/tests/check_http.t
+++ b/plugins/tests/check_http.t
@@ -18,7 +18,7 @@ use Test::More;
use NPTest;
use FindBin qw($Bin);
-my $common_tests = 66;
+my $common_tests = 68;
my $ssl_only_tests = 6;
# Check that all dependent modules are available
eval {
@@ -55,6 +55,18 @@ my $port_https_expired = $port_http + 2;
# This array keeps sockets around for implementing timeouts
my @persist;
+# Helper for returning chunked responses
+our $ckn = 0;
+sub chunked_resp {
+ $ckn++;
+ return "foo" if ($ckn < 2);
+ return "bar" if ($ckn < 3);
+ return "baz" if ($ckn < 4);
+ return "\n" if ($ckn < 5);
+ $ckn = 0 if ($ckn < 6);
+ return undef;
+}
+
# Start up all servers
my @pids;
my $pid = fork();
@@ -128,6 +140,8 @@ sub run_server {
$c->send_crlf;
sleep 1;
$c->send_response("slow");
+ } elsif ($r->method eq "GET" and $r->url->path eq "/chunked") {
+ $c->send_response(HTTP::Response->new(200, 'OK', undef, \&chunked_resp));
} elsif ($r->url->path eq "/method") {
if ($r->method eq "DELETE") {
$c->send_error(HTTP::Status->RC_METHOD_NOT_ALLOWED);
@@ -353,6 +367,14 @@ sub run_common_tests {
is( $result->return_code, 0, $cmd);
like( $result->output, '/^HTTP OK: HTTP/1.1 200 OK - \d+ bytes in [\d\.]+ second/', "Output correct: ".$result->output );
+ SKIP: {
+ skip "FIXME: Chunked-encoding isn't supported yet", 2 unless ($ENV{HTTP_CHUNKED});
+ $cmd = "$command -u /chunked -s foobarbaz";
+ $result = NPTest->testCmd( $cmd );
+ is( $result->return_code, 0, $cmd);
+ like( $result->output, '/^HTTP OK: HTTP/1.1 200 OK - \d+ bytes in [\d\.]+ second/', "Output correct: ".$result->output );
+ }
+
# These tests may block
print "ALRM\n";
More information about the Commits
mailing list