]> err.no Git - varnish/commitdiff
Add a Reset pass after each testfile
authorphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Sun, 15 Jun 2008 21:11:19 +0000 (21:11 +0000)
committerphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Sun, 15 Jun 2008 21:11:19 +0000 (21:11 +0000)
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@2698 d4fa192b-c00b-0410-8231-f00ffab90ce4

varnish-cache/bin/varnishtest/vtc.c
varnish-cache/bin/varnishtest/vtc_client.c
varnish-cache/bin/varnishtest/vtc_server.c

index aeb93234750c910cd070ce14e8341b7ad835d541..aa96b610c9f84cab40a6456a05d5af420ce1be7d 100644 (file)
@@ -217,6 +217,18 @@ parse_string(char *buf, const struct cmds *cmd, void *priv)
        }
 }
 
+/**********************************************************************
+ * Reset commands (between tests)
+ */
+
+static void
+reset_cmds(const struct cmds *cmd)
+{
+
+       for (; cmd->name != NULL; cmd++)
+               cmd->cmd(NULL, NULL);
+}
+
 /**********************************************************************
  * Output test description
  */
@@ -224,7 +236,11 @@ parse_string(char *buf, const struct cmds *cmd, void *priv)
 static void
 cmd_test(char **av, void *priv)
 {
+
        (void)priv;
+
+       if (av == NULL)
+               return;
        assert(!strcmp(av[0], "test"));
 
        printf("#    TEST %s\n", av[1]);
@@ -240,6 +256,8 @@ void
 cmd_dump(char **av, void *priv)
 {
 
+       if (av == NULL)
+               return;
        printf("cmd_dump(%p)\n", priv);
        while (*av)
                printf("\t<%s>\n", *av++);
@@ -264,6 +282,7 @@ exec_file(const char *fn)
        buf = read_file(fn);
        parse_string(buf, cmds, NULL);
        printf("#    TEST %s completed\n", fn);
+       reset_cmds(cmds);
 }
 
 /**********************************************************************
index 783c2b63381bb2dcdcf0c44296c30ccb135a04b3..efcaba8e14474ab2139094c83a4a854167cc91fe 100644 (file)
@@ -163,9 +163,20 @@ client_run(struct client *c)
 void
 cmd_client(char **av, void *priv)
 {
-       struct client *c;
+       struct client *c, *c2;
 
        (void)priv;
+
+       if (av == NULL) {
+               /* Reset and free */
+               VTAILQ_FOREACH_SAFE(c, &clients, list, c2) {
+                       VTAILQ_REMOVE(&clients, c, list);
+                       FREE_OBJ(c);
+                       /* XXX: MEMLEAK */
+               }
+               return;
+       }
+
        assert(!strcmp(av[0], "client"));
        av++;
 
index 36eade98ed26bb8df4db199c0c2de4b72ec06e6c..dec6cab0a1aa4c8471d1a82653691f9f2089bbc0 100644 (file)
@@ -165,6 +165,8 @@ server_wait(struct server *s)
                exit (1);
        }
        s->tp = NULL;
+       AZ(close(s->sock));
+       s->sock = -1;
 }
 
 /**********************************************************************
@@ -174,9 +176,20 @@ server_wait(struct server *s)
 void
 cmd_server(char **av, void *priv)
 {
-       struct server *s;
+       struct server *s, *s2;
 
        (void)priv;
+
+       if (av == NULL) {
+               /* Reset and free */
+               VTAILQ_FOREACH_SAFE(s, &servers, list, s2) {
+                       VTAILQ_REMOVE(&servers, s, list);
+                       FREE_OBJ(s);
+                       /* XXX: MEMLEAK */
+               }
+               return;
+       }
+
        assert(!strcmp(av[0], "server"));
        av++;