[master] 91280b2 Add a "wait-running" primitive to varnish instances, so we can avoid fixed sleeps waiting for the child process to start.
Poul-Henning Kamp
phk at varnish-cache.org
Thu Oct 6 11:02:51 CEST 2011
commit 91280b2a21406f7553d4d26fdae23ab9e61c1da4
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Thu Oct 6 09:02:18 2011 +0000
Add a "wait-running" primitive to varnish instances, so we can
avoid fixed sleeps waiting for the child process to start.
diff --git a/bin/varnishtest/tests/v00010.vtc b/bin/varnishtest/tests/v00010.vtc
index ec7b947..0421956 100644
--- a/bin/varnishtest/tests/v00010.vtc
+++ b/bin/varnishtest/tests/v00010.vtc
@@ -5,6 +5,8 @@ server s1 {
txresp -hdr "Foo: bar" -body "abcdef\n"
rxreq
txresp -hdr "Panic: please" -body "012345\n"
+ close
+
sema r1 sync 2
accept
rxreq
@@ -33,10 +35,10 @@ client c1 {
rxresp
txreq -url "/foo"
# Don't expect answer, the server crashed.
- sema r1 sync 2
} -run
-delay 2.5
+varnish v1 -wait-running
+sema r1 sync 2
client c1 {
txreq -url "/"
diff --git a/bin/varnishtest/vtc_varnish.c b/bin/varnishtest/vtc_varnish.c
index 5ef4beb..9ba34a7 100644
--- a/bin/varnishtest/vtc_varnish.c
+++ b/bin/varnishtest/vtc_varnish.c
@@ -120,6 +120,30 @@ varnish_ask_cli(const struct varnish *v, const char *cmd, char **repl)
}
/**********************************************************************
+ *
+ */
+
+static void
+wait_running(const struct varnish *v)
+{
+ char *r;
+ enum VCLI_status_e st;
+
+ while (1) {
+ st = varnish_ask_cli(v, "status", &r);
+ if (st != CLIS_OK)
+ vtc_log(v->vl, 0,
+ "CLI status command failed: %u %s", st, r);
+ if (!strcmp(r, "Child in state running")) {
+ free(r);
+ break;
+ }
+ free(r);
+ (void)usleep(200000);
+ }
+}
+
+/**********************************************************************
* Varnishlog gatherer + thread
*/
@@ -439,6 +463,7 @@ varnish_start(struct varnish *v)
return;
if (u != CLIS_OK)
vtc_log(v->vl, 0, "CLI start command failed: %u %s", u, resp);
+ wait_running(v);
free(resp);
u = varnish_ask_cli(v, "debug.xid 1000", &resp);
if (vtc_error)
@@ -823,6 +848,10 @@ cmd_varnish(CMD_ARGS)
varnish_stop(v);
continue;
}
+ if (!strcmp(*av, "-wait-running")) {
+ wait_running(v);
+ continue;
+ }
if (!strcmp(*av, "-wait")) {
varnish_wait(v);
continue;
More information about the varnish-commit
mailing list