r2681 - trunk/varnish-cache/bin/varnishtest

phk at projects.linpro.no phk at projects.linpro.no
Sun Jun 15 15:16:18 CEST 2008


Author: phk
Date: 2008-06-15 15:16:18 +0200 (Sun, 15 Jun 2008)
New Revision: 2681

Modified:
   trunk/varnish-cache/bin/varnishtest/t000.vtc
   trunk/varnish-cache/bin/varnishtest/vtc_http.c
Log:
Add http txresponse 



Modified: trunk/varnish-cache/bin/varnishtest/t000.vtc
===================================================================
--- trunk/varnish-cache/bin/varnishtest/t000.vtc	2008-06-15 13:09:21 UTC (rev 2680)
+++ trunk/varnish-cache/bin/varnishtest/t000.vtc	2008-06-15 13:16:18 UTC (rev 2681)
@@ -5,14 +5,14 @@
 server s1 -listen :9080 -repeat 2 {
 	rxreq
 	expect req.url == "/"
-	txresponse -body "0123456789"
+	txresp -body "0123456789"
 }
 
 server s1 -start 
 
 client c1 -connect localhost:9080 {
 	txreq 
-	rxresponse
+	rxresp
 	expect resp.status == 200
 	expect resp.length == 10
 }

Modified: trunk/varnish-cache/bin/varnishtest/vtc_http.c
===================================================================
--- trunk/varnish-cache/bin/varnishtest/vtc_http.c	2008-06-15 13:09:21 UTC (rev 2680)
+++ trunk/varnish-cache/bin/varnishtest/vtc_http.c	2008-06-15 13:16:18 UTC (rev 2681)
@@ -109,7 +109,7 @@
 
 	CAST_OBJ_NOTNULL(hp, priv, HTTP_MAGIC);
 	AN(hp->client);
-	assert(!strcmp(av[0], "rxresponse"));
+	assert(!strcmp(av[0], "rxresp"));
 	av++;
 
 	for(; *av != NULL; av++) {
@@ -121,6 +121,84 @@
 }
 
 /**********************************************************************
+ * Transmit a response
+ */
+
+static void
+cmd_http_txresp(char **av, void *priv)
+{
+	struct http *hp;
+	struct vsb *vsb;
+	const char *proto = "HTTP/1.1";
+	const char *status = "200";
+	const char *msg = "Ok";
+	const char *body = NULL;
+	int dohdr = 0;
+	const char *nl = "\r\n";
+	int l;
+
+	CAST_OBJ_NOTNULL(hp, priv, HTTP_MAGIC);
+	AZ(hp->client);
+	assert(!strcmp(av[0], "txresp"));
+	av++;
+
+	vsb = vsb_new(NULL, NULL, 0, VSB_AUTOEXTEND);
+
+	for(; *av != NULL; av++) {
+		if (!strcmp(*av, "-proto")) {
+			AZ(dohdr);
+			proto = av[1];
+			av++;
+			continue;
+		}
+		if (!strcmp(*av, "-status")) {
+			AZ(dohdr);
+			status = av[1];
+			av++;
+			continue;
+		}
+		if (!strcmp(*av, "-msg")) {
+			AZ(dohdr);
+			msg = av[1];
+			av++;
+			continue;
+		}
+		if (!strcmp(*av, "-body")) {
+			body = av[1];
+			av++;
+			continue;
+		}
+		if (!strcmp(*av, "-hdr")) {
+			if (dohdr == 0) {
+				vsb_printf(vsb, "%s %s %s%s", 
+				    proto, status, msg, nl);
+				dohdr = 1;
+			}
+			vsb_printf(vsb, "%s%s", av[1], nl);
+			av++;
+			continue;
+		}
+		fprintf(stderr, "Unknown http txreq spec: %s\n", *av);
+		exit (1);
+	}
+	if (dohdr == 0) {
+		vsb_printf(vsb, "%s %s %s%s", 
+		    proto, status, msg, nl);
+		dohdr = 1;
+	}
+	vsb_cat(vsb, nl);
+	if (body != NULL) {
+		vsb_cat(vsb, body);
+		vsb_cat(vsb, nl);
+	}
+	vsb_finish(vsb);
+	AZ(vsb_overflowed(vsb));
+	l = write(hp->fd, vsb_data(vsb), vsb_len(vsb));
+	assert(l == vsb_len(vsb));
+	vsb_delete(vsb);
+}
+
+/**********************************************************************
  * Receive a request
  */
 
@@ -217,8 +295,8 @@
 static struct cmds http_cmds[] = {
 	{ "txreq",	cmd_http_txreq },
 	{ "rxreq",	cmd_http_rxreq },
-	{ "txresponse",	cmd_dump },
-	{ "rxresponse",	cmd_http_rxresp },
+	{ "txresp",	cmd_http_txresp },
+	{ "rxresp",	cmd_http_rxresp },
 	{ "expect",	cmd_dump },
 	{ NULL,		NULL }
 };




More information about the varnish-commit mailing list