summaryrefslogtreecommitdiff
path: root/t/proxyconfig.t
diff options
context:
space:
mode:
Diffstat (limited to 't/proxyconfig.t')
-rw-r--r--t/proxyconfig.t38
1 files changed, 37 insertions, 1 deletions
diff --git a/t/proxyconfig.t b/t/proxyconfig.t
index 2380997..9561415 100644
--- a/t/proxyconfig.t
+++ b/t/proxyconfig.t
@@ -119,7 +119,7 @@ is(<$watcher>, "OK\r\n", "watcher enabled");
# Try sending something.
my $cmd = "mg foo v\r\n";
print $ps $cmd;
- my @readable = $s->can_read(1);
+ my @readable = $s->can_read(0.25);
is(scalar @readable, 1, "only one backend became readable");
my $be = shift @readable;
is(scalar <$be>, $cmd, "metaget passthrough");
@@ -127,6 +127,42 @@ is(<$watcher>, "OK\r\n", "watcher enabled");
is(scalar <$ps>, "EN\r\n", "miss received");
}
+# Test backend table arguments and per-backend time overrides
+{
+ # This should create three new backend sockets
+ write_modefile('return "betable"');
+ $p_srv->reload();
+ wait_reload($watcher);
+
+ # sleep a short time; b1 should have a very short timeout and the
+ # others are long.
+ select(undef, undef, undef, 0.5);
+
+ my $s = IO::Select->new();
+ for my $msrv (@mocksrvs) {
+ $s->add($msrv);
+ }
+ my @readable = $s->can_read(0.25);
+ # All three backends should have changed despite having the same label,
+ # host, and port arguments.
+ is(scalar @readable, 3, "all listeners became readable");
+
+ like(<$watcher>, qr/ts=(\S+) gid=\d+ type=proxy_backend error=timeout name=\S+ port=11511/, "one backend timed out connecting");
+
+ for my $msrv (@readable) {
+ my $be = $msrv->accept();
+ ok(defined $be, "mock backend accepted");
+ like(<$be>, qr/version/, "received version command");
+ print $be "VERSION 1.0.0-mock\r\n";
+ }
+
+ # reload again and ensure only the bad socket became available.
+ $p_srv->reload();
+ wait_reload($watcher);
+ @readable = $s->can_read(0.5);
+ is(scalar @readable, 1, "only one listener became readable");
+}
+
# TODO:
# remove backends
# do dead sockets close?