]> git.ipfire.org Git - thirdparty/libcgroup.git/commitdiff
libcgroup: Add test cases for new get_task API
authorDhaval Giani <dhaval@linux.vnet.ibm.com>
Wed, 22 Apr 2009 10:00:20 +0000 (15:30 +0530)
committerDhaval Giani <dhaval@linux.vnet.ibm.com>
Wed, 22 Apr 2009 10:16:54 +0000 (15:46 +0530)
This is the test case for the new API. This test takes one argument, the
group name.

Sample run on my system with this test case returns,

[dhaval@gondor tests]$ ../libtool --mode=execute ./walk_task a
Printing the details of groups a
Pid is 6092
Pid is 11315
Pid is 11318
Pid is 11319
Pid is 11324
Pid is 13234
[dhaval@gondor tests]$

Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com>
Acked-by: Balbir Singh <balbir@linux.vnet.ibm.com>
Acked-by: Bharata B Rao <bharata@linux.vnet.ibm.com>
tests/Makefile.am
tests/walk_task.c [new file with mode: 0644]

index 599938945c54bc7f91254b781a66257c01a9233a..41aebd3ba715748c9aed1f063717bbd874be9de8 100644 (file)
@@ -2,7 +2,7 @@ INCLUDES = -I$(top_srcdir)/include
 LDADD = $(top_srcdir)/src/.libs/libcgroup.la
 
 # compile the tests, but do not install them
-noinst_PROGRAMS = libcgrouptest01 libcg_ba setuid pathtest walk_test read_stats
+noinst_PROGRAMS = libcgrouptest01 libcg_ba setuid pathtest walk_test read_stats walk_task
 
 libcgrouptest01_SOURCES=libcgrouptest01.c test_functions.c libcgrouptest.h
 libcg_ba_SOURCES=libcg_ba.cpp
@@ -10,6 +10,7 @@ setuid_SOURCES=setuid.c
 pathtest_SOURCES=pathtest.c
 walk_test_SOURCES=walk_test.c
 read_stats_SOURCES=read_stats.c
+walk_task_SOURCES=walk_task.c
 
 EXTRA_DIST = pathtest.sh runlibcgrouptest.sh
 
diff --git a/tests/walk_task.c b/tests/walk_task.c
new file mode 100644 (file)
index 0000000..fb89963
--- /dev/null
@@ -0,0 +1,50 @@
+#include <stdio.h>
+#include <libcgroup.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+
+int main(int argc, char *argv[])
+{
+       int ret, i;
+       char *group = NULL;
+       FILE *tasks = NULL;
+
+       if (argc < 2) {
+               printf("No list of groups provided\n");
+               return -1;
+       }
+
+       ret = cgroup_init();
+
+       if (ret) {
+               printf("cgroup_init failed with %s\n", cgroup_strerror(ret));
+               return -1;
+       }
+
+       for (i = 1; i < argc; i++) {
+               pid_t pid;
+               group = strdup(argv[i]);
+               printf("Printing the details of groups %s\n", group);
+               ret = cgroup_get_task_begin(group, "cpu", (void *) &tasks,
+                                                                       &pid);
+               while (!ret) {
+                       printf("Pid is %u\n", pid);
+                       ret = cgroup_get_task_next((void *) tasks, &pid);
+                       if (ret && ret != ECGEOF) {
+                               printf("cgroup_get_task_next failed with %s\n",
+                                                       cgroup_strerror(ret));
+                               if (ret == ECGOTHER)
+                                       printf("failure with %s\n",
+                                                       strerror(errno));
+                               return -1;
+                       }
+               }
+               free(group);
+               group = NULL;
+               ret = cgroup_get_task_end((void **) &tasks);
+       }
+
+       return 0;
+
+}