summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/libcgrouptest.h2
-rw-r--r--tests/libcgrouptest01.c34
2 files changed, 36 insertions, 0 deletions
diff --git a/tests/libcgrouptest.h b/tests/libcgrouptest.h
index 1efc4b8..73c4a9b 100644
--- a/tests/libcgrouptest.h
+++ b/tests/libcgrouptest.h
@@ -20,6 +20,7 @@
#include <errno.h>
#include <fcntl.h>
+#include <mntent.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -67,6 +68,7 @@ static int set_controller(int controller, char *controller_name,
static int group_modified(char *path_control_file, int value_type);
struct cgroup *new_cgroup(char *group, char *controller_name,
char *control_file, int value_type);
+int check_fsmounted();
static inline pid_t cgrouptest_gettid()
{
diff --git a/tests/libcgrouptest01.c b/tests/libcgrouptest01.c
index a57c3ab..2ec63ec 100644
--- a/tests/libcgrouptest01.c
+++ b/tests/libcgrouptest01.c
@@ -149,6 +149,13 @@ int main(int argc, char *argv[])
case FS_MOUNTED:
+ /* Do a sanity check if cgroup fs is mounted */
+ if (check_fsmounted()) {
+ printf("Sanity check fails. cgroup fs not mounted\n");
+ printf("Exiting without running this set of tests\n");
+ exit(1);
+ }
+
/*
* Test01: call cgroup_attach_task() with null group
* without calling cgroup_inti(). We can check other apis too.
@@ -570,3 +577,30 @@ struct cgroup *new_cgroup(char *group, char *controller_name,
}
return newcgroup;
}
+
+int check_fsmounted()
+{
+ struct mntent *entry, *tmp_entry;
+ /* Need a better mechanism to decide memory allocation size here */
+ char entry_buffer[FILENAME_MAX * 4];
+ FILE *proc_file;
+
+ tmp_entry = (struct mntent *) malloc(sizeof(struct mntent *));
+ if (!tmp_entry) {
+ perror("Error: failled to mallloc for mntent\n");
+ return 1;
+ }
+
+ proc_file = fopen("/proc/mounts", "r");
+ if (!proc_file) {
+ printf("Error in opening /proc/mounts.\n");
+ return EIO;
+ }
+ while ((entry = getmntent_r(proc_file, tmp_entry, entry_buffer, FILENAME_MAX*4)) != NULL) {
+ if (!strncmp(entry->mnt_type, "cgroup", strlen("cgroup"))) {
+ printf("sanity check pass.... %s\n", entry->mnt_type);
+ return 0;
+ }
+ }
+ return 1;
+}