]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
tests list: refactor and add test for list_all_containers()
authorDwight Engen <dwight.engen@oracle.com>
Tue, 5 Nov 2013 18:16:57 +0000 (13:16 -0500)
committerSerge Hallyn <serge.hallyn@ubuntu.com>
Wed, 6 Nov 2013 14:11:20 +0000 (08:11 -0600)
Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
src/tests/list.c

index a0615423f1bc91a83868ae7672f4349cad07ed00..af41e7fff9b5b666c75da24dd03b7bbafb48826b 100644 (file)
 #include <stdlib.h>
 #include <lxc/lxccontainer.h>
 
-int main(int argc, char *argv[])
+static void test_list_func(const char *lxcpath, const char *type,
+                          int (*func)(const char *path, char ***names,
+                                      struct lxc_container ***cret))
 {
-       char *lxcpath = NULL;
+       int i, n, n2;
        struct lxc_container **clist;
        char **names;
-       int i, n, n2;
-
-       if (argc > 1)
-               lxcpath = argv[1];
 
-       printf("Counting defined containers only\n");
-       n = list_defined_containers(lxcpath, NULL, NULL);
-       printf("Found %d defined containers\n", n);
-       printf("Looking for defined containers only\n");
-       n2 = list_defined_containers(lxcpath, NULL, &clist);
+       printf("%-10s Counting containers\n", type);
+       n = func(lxcpath, NULL, NULL);
+       printf("%-10s Counted %d containers\n", type, n);
+       printf("%-10s Get container struct only\n", type);
+       n2 = func(lxcpath, NULL, &clist);
        if (n2 != n)
                printf("Warning: first call returned %d, second %d\n", n, n2);
-       for (i=0; i<n2; i++) {
+       for (i = 0; i < n2; i++) {
                struct lxc_container *c = clist[i];
-               printf("Found defined container %s\n", c->name);
+               printf("%-10s  Got container struct %s\n", type, c->name);
                lxc_container_put(c);
        }
-       if (n2 > 0)
+       if (n2 > 0) {
                free(clist);
-
-       printf("Looking for defined names only\n");
-       n2 = list_defined_containers(lxcpath, &names, NULL);
-       if (n2 != n)
-               printf("Warning: first call returned %d, second %d\n", n, n2);
-       for (i=0; i<n2; i++) {
-               printf("Found defined container %s\n", names[i]);
-               free(names[i]);
+               clist = NULL;
        }
-       if (n2 > 0)
-               free(names);
 
-       printf("Looking for defined names and containers\n");
-       n2 = list_defined_containers(lxcpath, &names, &clist);
+       printf("%-10s Get names only\n", type);
+       n2 = func(lxcpath, &names, NULL);
        if (n2 != n)
                printf("Warning: first call returned %d, second %d\n", n, n2);
-       for (i=0; i<n2; i++) {
-               struct lxc_container *c = clist[i];
-               printf("Found defined container %s, name was %s\n", c->name, names[i]);
+       for (i = 0; i < n2; i++) {
+               printf("%-10s  Got container name %s\n", type, names[i]);
                free(names[i]);
-               lxc_container_put(c);
        }
        if (n2 > 0) {
                free(names);
-               free(clist);
+               names = NULL;
        }
 
-
-       printf("Counting active containers only\n");
-       n = list_active_containers(lxcpath, NULL, NULL);
-       printf("Found %d active containers\n", n);
-       printf("Looking for active containers only\n");
-       n2 = list_active_containers(lxcpath, NULL, &clist);
+       printf("%-10s Get names and containers\n", type);
+       n2 = func(lxcpath, &names, &clist);
        if (n2 != n)
                printf("Warning: first call returned %d, second %d\n", n, n2);
-       for (i=0; i<n2; i++) {
-               printf("Found active container %s\n", clist[i]->name);
-               lxc_container_put(clist[i]);
-       }
-       if (n2 > 0)
-               free(clist);
-
-       printf("Looking for active names only\n");
-       n2 = list_active_containers(lxcpath, &names, NULL);
-       if (n2 != n)
-               printf("Warning: first call returned %d, second %d\n", n, n2);
-       for (i=0; i<n2; i++) {
-               printf("Found active container %s\n", names[i]);
-               free(names[i]);
-       }
-       if (n2 > 0)
-               free(names);
-
-       printf("Looking for active names and containers\n");
-       n2 = list_active_containers(lxcpath, &names, &clist);
-       if (n2 != n)
-               printf("Warning: first call returned %d, second %d\n", n, n2);
-       for (i=0; i<n2; i++) {
+       for (i = 0; i < n2; i++) {
                struct lxc_container *c = clist[i];
-               printf("Found active container %s, name was %s\n", c->name, names[i]);
+               printf("%-10s  Got container struct %s, name %s\n", type, c->name, names[i]);
+               if (strcmp(c->name, names[i]))
+                       fprintf(stderr, "ERROR: name mismatch!\n");
                free(names[i]);
                lxc_container_put(c);
        }
@@ -112,6 +75,18 @@ int main(int argc, char *argv[])
                free(names);
                free(clist);
        }
+}
+
+int main(int argc, char *argv[])
+{
+       char *lxcpath = NULL;
+
+       if (argc > 1)
+               lxcpath = argv[1];
+
+       test_list_func(lxcpath, "Defined:", list_defined_containers);
+       test_list_func(lxcpath, "Active:", list_active_containers);
+       test_list_func(lxcpath, "All:", list_all_containers);
 
        exit(0);
 }