Mailing List Archive

r2681 - trunk/varnish-cache/bin/varnishtest
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 }
};