[master] 61a5d17fb vtc: Make all relevant commands start varnishd

Dridi Boukelmoune dridi.boukelmoune at gmail.com
Wed Dec 2 10:43:10 UTC 2020


commit 61a5d17fbae296a80aab70a543a461311cf27849
Author: Dridi Boukelmoune <dridi.boukelmoune at gmail.com>
Date:   Mon Nov 30 16:20:41 2020 +0100

    vtc: Make all relevant commands start varnishd
    
    And wrap the logic in a macro to reduce duplication.

diff --git a/bin/varnishtest/vtc_varnish.c b/bin/varnishtest/vtc_varnish.c
index 0586737fa..1a4a3e88a 100644
--- a/bin/varnishtest/vtc_varnish.c
+++ b/bin/varnishtest/vtc_varnish.c
@@ -530,6 +530,15 @@ varnish_launch(struct varnish *v)
 	AZ(pthread_create(&v->tp_vsl, NULL, varnishlog_thread, v));
 }
 
+#define VARNISH_LAUNCH(v)				\
+	do {						\
+		CHECK_OBJ_NOTNULL(v, VARNISH_MAGIC);	\
+		if (v->cli_fd < 0)			\
+			varnish_launch(v);		\
+		if (vtc_error)				\
+			return;				\
+	} while (0)
+
 /**********************************************************************
  * Start a Varnish
  */
@@ -598,10 +607,7 @@ varnish_start(struct varnish *v)
 	enum VCLI_status_e u;
 	char *resp = NULL;
 
-	if (v->cli_fd < 0)
-		varnish_launch(v);
-	if (vtc_error)
-		return;
+	VARNISH_LAUNCH(v);
 	vtc_log(v->vl, 2, "Start");
 	u = varnish_ask_cli(v, "start", &resp);
 	if (vtc_error)
@@ -639,10 +645,8 @@ varnish_start(struct varnish *v)
 static void
 varnish_stop(struct varnish *v)
 {
-	if (v->cli_fd < 0)
-		varnish_launch(v);
-	if (vtc_error)
-		return;
+
+	VARNISH_LAUNCH(v);
 	vtc_log(v->vl, 2, "Stop");
 	(void)varnish_ask_cli(v, "stop", NULL);
 	wait_stopped(v);
@@ -713,10 +717,7 @@ varnish_cli_json(struct varnish *v, const char *cli)
 	const char *errptr;
 	struct vjsn *vj;
 
-	if (v->cli_fd < 0)
-		varnish_launch(v);
-	if (vtc_error)
-		return;
+	VARNISH_LAUNCH(v);
 	u = varnish_ask_cli(v, cli, &resp);
 	vtc_log(v->vl, 2, "CLI %03u <%s>", u, cli);
 	if (u != CLIS_OK)
@@ -742,18 +743,12 @@ varnish_cli(struct varnish *v, const char *cli, unsigned exp, const char *re)
 	const char *errptr;
 	int err;
 
+	VARNISH_LAUNCH(v);
 	if (re != NULL) {
 		vre = VRE_compile(re, 0, &errptr, &err);
 		if (vre == NULL)
 			vtc_fatal(v->vl, "Illegal regexp");
 	}
-	if (v->cli_fd < 0)
-		varnish_launch(v);
-	if (vtc_error) {
-		if (vre != NULL)
-			VRE_free(&vre);
-		return;
-	}
 	u = varnish_ask_cli(v, cli, &resp);
 	vtc_log(v->vl, 2, "CLI %03u <%s>", u, cli);
 	if (exp != 0 && exp != (unsigned)u)
@@ -777,10 +772,7 @@ varnish_vcl(struct varnish *v, const char *vcl, int fail, char **resp)
 	struct vsb *vsb;
 	enum VCLI_status_e u;
 
-	if (v->cli_fd < 0)
-		varnish_launch(v);
-	if (vtc_error)
-		return;
+	VARNISH_LAUNCH(v);
 	vsb = VSB_new_auto();
 	AN(vsb);
 
@@ -816,10 +808,7 @@ varnish_vclbackend(struct varnish *v, const char *vcl)
 	struct vsb *vsb, *vsb2;
 	enum VCLI_status_e u;
 
-	if (v->cli_fd < 0)
-		varnish_launch(v);
-	if (vtc_error)
-		return;
+	VARNISH_LAUNCH(v);
 	vsb = VSB_new_auto();
 	AN(vsb);
 
@@ -885,10 +874,11 @@ do_stat_dump_cb(void *priv, const struct VSC_point * const pt)
 }
 
 static void
-varnish_vsc(const struct varnish *v, const char *arg)
+varnish_vsc(struct varnish *v, const char *arg)
 {
 	struct dump_priv dp;
 
+	VARNISH_LAUNCH(v);
 	memset(&dp, 0, sizeof dp);
 	dp.v = v;
 	dp.arg = arg;
@@ -955,13 +945,14 @@ do_expect_cb(void *priv, const struct VSC_point * const pt)
  */
 
 static void
-varnish_expect(const struct varnish *v, char * const *av)
+varnish_expect(struct varnish *v, char * const *av)
 {
 	struct stat_priv sp;
 	int good, i, not;
 	uintmax_t u;
 	char *l, *p;
 
+	VARNISH_LAUNCH(v);
 	ZERO_OBJ(&sp, sizeof sp);
 	l = av[0];
 	not = (*l == '!');
@@ -1026,10 +1017,11 @@ varnish_expect(const struct varnish *v, char * const *av)
 }
 
 static void
-vsl_catchup(const struct varnish *v)
+vsl_catchup(struct varnish *v)
 {
 	int vsl_idle;
 
+	VARNISH_LAUNCH(v);
 	vsl_idle = v->vsl_idle;
 	while (!vtc_error && vsl_idle == v->vsl_idle)
 		VTIM_sleep(0.1);


More information about the varnish-commit mailing list