| /* |
| * Copyright(c) 2015-2017 Intel Corporation. All rights reserved. |
| * |
| * This program is free software; you can redistribute it and/or modify it |
| * under the terms of version 2 of the GNU General Public License as |
| * published by the Free Software Foundation. |
| * |
| * This program is distributed in the hope that it will be useful, but |
| * WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * General Public License for more details. |
| */ |
| #include <stdio.h> |
| #include <limits.h> |
| #include <syslog.h> |
| #include <test.h> |
| #include <util/parse-options.h> |
| |
| static char *result(int rc) |
| { |
| if (rc == 77) |
| return "SKIP"; |
| else if (rc) |
| return "FAIL"; |
| else |
| return "PASS"; |
| } |
| |
| int cmd_test(int argc, const char **argv, void *ctx) |
| { |
| struct ndctl_test *test; |
| int loglevel = LOG_DEBUG, i, rc; |
| const char * const u[] = { |
| "ndctl test [<options>]", |
| NULL |
| }; |
| bool force = false; |
| const struct option options[] = { |
| OPT_INTEGER('l', "loglevel", &loglevel, |
| "set the log level (default LOG_DEBUG)"), |
| OPT_BOOLEAN('f', "force", &force, |
| "force run all tests regardless of required kernel"), |
| OPT_END(), |
| }; |
| |
| argc = parse_options(argc, argv, options, u, 0); |
| |
| for (i = 0; i < argc; i++) |
| error("unknown parameter \"%s\"\n", argv[i]); |
| |
| if (argc) |
| usage_with_options(u, options); |
| |
| if (force) |
| test = ndctl_test_new(UINT_MAX); |
| else |
| test = ndctl_test_new(0); |
| |
| rc = test_libndctl(loglevel, test, ctx); |
| fprintf(stderr, "test-libndctl: %s\n", result(rc)); |
| if (rc && rc != 77) |
| return rc; |
| |
| rc = test_dsm_fail(loglevel, test, ctx); |
| fprintf(stderr, "test-dsm-fail: %s\n", result(rc)); |
| if (rc && rc != 77) |
| return rc; |
| |
| rc = test_dpa_alloc(loglevel, test, ctx); |
| fprintf(stderr, "test-dpa-alloc: %s\n", result(rc)); |
| if (rc && rc != 77) |
| return rc; |
| |
| rc = test_parent_uuid(loglevel, test, ctx); |
| fprintf(stderr, "test-parent-uuid: %s\n", result(rc)); |
| |
| rc = test_multi_pmem(loglevel, test, ctx); |
| fprintf(stderr, "test-multi-pmem: %s\n", result(rc)); |
| |
| return ndctl_test_result(test, rc); |
| } |