[lxc-devel] [PATCH v2 2/4] tests list: refactor and add test for list_all_containers()
Serge Hallyn
serge.hallyn at ubuntu.com
Wed Nov 6 04:06:15 UTC 2013
Quoting Dwight Engen (dwight.engen at oracle.com):
> Signed-off-by: Dwight Engen <dwight.engen at oracle.com>
Acked-by: Serge E. Hallyn <serge.hallyn at ubuntu.com>
> ---
> src/tests/list.c | 97 +++++++++++++++++++++-----------------------------------
> 1 file changed, 36 insertions(+), 61 deletions(-)
>
> diff --git a/src/tests/list.c b/src/tests/list.c
> index a061542..af41e7f 100644
> --- a/src/tests/list.c
> +++ b/src/tests/list.c
> @@ -21,90 +21,53 @@
> #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);
> }
> --
> 1.8.3.1
>
>
> ------------------------------------------------------------------------------
> November Webinars for C, C++, Fortran Developers
> Accelerate application performance with scalable programming models. Explore
> techniques for threading, error checking, porting, and tuning. Get the most
> from the latest Intel processors and coprocessors. See abstracts and register
> http://pubads.g.doubleclick.net/gampad/clk?id=60136231&iu=/4140/ostg.clktrk
> _______________________________________________
> Lxc-devel mailing list
> Lxc-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/lxc-devel
More information about the lxc-devel
mailing list