diff options
author | Karel Zak | 2010-05-24 14:13:33 +0200 |
---|---|---|
committer | Karel Zak | 2010-06-01 11:06:49 +0200 |
commit | 125b6a9191a1b09dbeaa1a068e7b0a966fca03fa (patch) | |
tree | 5422bff2d9a42ec6b10371881f05918335f1300b /lib | |
parent | taskset: move bitmap routines to lib/cpuset.c (diff) | |
download | kernel-qcow2-util-linux-125b6a9191a1b09dbeaa1a068e7b0a966fca03fa.tar.gz kernel-qcow2-util-linux-125b6a9191a1b09dbeaa1a068e7b0a966fca03fa.tar.xz kernel-qcow2-util-linux-125b6a9191a1b09dbeaa1a068e7b0a966fca03fa.zip |
tests: add cpuset regression test
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Makefile.am | 3 | ||||
-rw-r--r-- | lib/cpuset.c | 70 |
2 files changed, 72 insertions, 1 deletions
diff --git a/lib/Makefile.am b/lib/Makefile.am index 0f008b302..93b79a5a7 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -3,13 +3,14 @@ include $(top_srcdir)/config/include-Makefile.am AM_CPPFLAGS += -DTEST_PROGRAM noinst_PROGRAMS = test_blkdev test_ismounted test_wholedisk test_mangle \ - test_strtosize + test_strtosize test_cpuset test_blkdev_SOURCES = blkdev.c test_ismounted_SOURCES = ismounted.c test_wholedisk_SOURCES = wholedisk.c test_mangle_SOURCES = mangle.c test_strtosize_SOURCES = strtosize.c +test_cpuset_SOURCES = cpuset.c if LINUX test_blkdev_SOURCES += linux_version.c diff --git a/lib/cpuset.c b/lib/cpuset.c index abdd40901..92ed73043 100644 --- a/lib/cpuset.c +++ b/lib/cpuset.c @@ -239,3 +239,73 @@ int cstr_to_cpuset(struct bitmask *mask, const char* str) return 0; } + +#ifdef TEST_PROGRAM + +#include <err.h> +#include <getopt.h> + +int main(int argc, char *argv[]) +{ + struct bitmask *set; + char *buf, *mask = NULL, *range = NULL; + int ncpus = 2048, rc, c; + + struct option longopts[] = { + { "ncpus", 1, 0, 'n' }, + { "mask", 1, 0, 'm' }, + { "range", 1, 0, 'r' }, + { NULL, 0, 0, 0 } + }; + + while ((c = getopt_long(argc, argv, "n:m:r:", longopts, NULL)) != -1) { + switch(c) { + case 'n': + ncpus = atoi(optarg); + break; + case 'm': + mask = strdup(optarg); + break; + case 'r': + range = strdup(optarg); + break; + default: + goto usage_err; + } + } + + if (!mask && !range) + goto usage_err; + + set = bitmask_alloc(ncpus); + if (!set) + err(EXIT_FAILURE, "failed to allocate cpu set"); + + buf = malloc(7 * ncpus); + if (!buf) + err(EXIT_FAILURE, "failed to allocate cpu set buffer"); + + if (mask) + rc = str_to_cpuset(set, mask); + else + rc = cstr_to_cpuset(set, range); + + if (rc) + errx(EXIT_FAILURE, "failed to parse string: %s", mask ? : range); + + printf("%-15s = %15s ", mask ? : range, cpuset_to_str(set, buf)); + printf("[%s]\n", cpuset_to_cstr(set, buf)); + + free(buf); + free(set->maskp); + free(set); + + return EXIT_SUCCESS; + +usage_err: + fprintf(stderr, + "usage: %s [--ncpus <num>] --mask <mask> | --range <list>", + program_invocation_short_name); + exit(EXIT_FAILURE); +} +#endif |