}
}
-static wur int start_all_tests(struct kdbus_test_args *kdbus_args)
+static wur int start_all_tests(struct kdbus_test_args const *kdbus_args)
{
int ret;
unsigned int fail_cnt = 0;
return fail_cnt > 0 ? TEST_ERR : TEST_OK;
}
-static wur int start_one_test(struct kdbus_test_args *kdbus_args)
+static wur int start_one_test(struct kdbus_test_args const *kdbus_args)
{
int i, ret;
bool test_found = false;
exit(EXIT_FAILURE);
}
-void print_kdbus_test_args(struct kdbus_test_args *args)
+void print_kdbus_test_args(struct kdbus_test_args const *args)
{
if (args->userns || args->pidns || args->mntns)
print("# Starting tests in new %s%s%s namespaces%s\n",
print("# Starting tests with full metadata support\n");
}
-wur int run_tests(struct kdbus_test_args *kdbus_args)
+wur int run_tests(struct kdbus_test_args const *kdbus_args)
{
int ret;
static char control[4096];
static void nop_handler(int sig) { UNUSED(sig); }
-static wur int test_prepare_mounts(struct kdbus_test_args *kdbus_args)
+static wur int test_prepare_mounts(struct kdbus_test_args const *kdbus_args)
{
int ret;
char kdbusfs[64] = {'\0'};
return 0;
}
-wur int run_tests_in_namespaces(struct kdbus_test_args *kdbus_args)
+wur int run_tests_in_namespaces(struct kdbus_test_args const *kdbus_args)
{
int ret;
int efd = -1;
return TEST_OK;
}
-wur int start_tests(struct kdbus_test_args *kdbus_args)
+wur int start_tests(struct kdbus_test_args const *kdbus_args)
{
int ret;
bool namespaces;
- static char fspath[4096];
namespaces = (kdbus_args->mntns || kdbus_args->pidns ||
kdbus_args->userns);
print_kdbus_test_args(kdbus_args);
print_metadata_support();
- /* setup kdbus paths */
- if (!kdbus_args->module)
- kdbus_args->module = "kdbus";
-
- if (!kdbus_args->root) {
- snprintf(fspath, sizeof(fspath), "/sys/fs/%s",
- kdbus_args->module);
- kdbus_args->root = fspath;
- }
-
/* Start tests */
if (namespaces)
ret = run_tests_in_namespaces(kdbus_args);
wur int main(int argc, char *argv[])
{
int t, ret = 0;
- struct kdbus_test_args *kdbus_args;
+ struct kdbus_test_args kdbus_args;
+ static char fspath[4096];
enum {
ARG_MNTNS = 0x100,
ARG_PIDNS,
ARG_GIDMAP,
};
- kdbus_args = alloc(sizeof(*kdbus_args));
- if (!kdbus_args) {
- print("unable to alloc() kdbus_args\n");
- return EXIT_FAILURE;
- }
-
- memset(kdbus_args, 0, sizeof(*kdbus_args));
+ memset(&kdbus_args, 0, sizeof(kdbus_args));
+ kdbus_args.module = "kdbus";
static const struct option options[] = {
{ "loop", no_argument, NULL, 'x' },
{ "bus", required_argument, NULL, 'b' },
{ "wait", required_argument, NULL, 'w' },
{ "fork", no_argument, NULL, 'f' },
+ { "list", no_argument, NULL, 'l' },
{ "module", required_argument, NULL, 'm' },
{ "tap", no_argument, NULL, 'a' },
{ "mntns", no_argument, NULL, ARG_MNTNS },
srand(time(NULL));
- while ((t = getopt_long(argc, argv, "hxfm:r:t:b:w:a", options, NULL)) >= 0) {
+ while ((t = getopt_long(argc, argv, "hxfm:r:t:b:w:a:l", options, NULL)) >= 0) {
switch (t) {
case 'x':
- kdbus_args->loop = 1;
+ kdbus_args.loop = 1;
break;
case 'm':
- kdbus_args->module = optarg;
+ kdbus_args.module = optarg;
break;
case 'r':
- kdbus_args->root = optarg;
+ kdbus_args.root = optarg;
break;
case 't':
- kdbus_args->test = optarg;
+ kdbus_args.test = optarg;
break;
case 'b':
- kdbus_args->busname = optarg;
+ kdbus_args.busname = optarg;
break;
case 'w':
- kdbus_args->wait = strtol(optarg, NULL, 10);
+ kdbus_args.wait = strtol(optarg, NULL, 10);
break;
case 'f':
- kdbus_args->fork = 1;
+ kdbus_args.fork = 1;
break;
case 'a':
- kdbus_args->tap_output = 1;
+ kdbus_args.tap_output = 1;
break;
+ case 'l':
+ {
+ int i = 0;
+ do {
+ const struct kdbus_test *t = &tests[i];
+ printf("%s;%s\n", t->name, t->desc);
+ } while (++i < TABSIZE(tests)-1);
+
+ }
+ return 0;
+
case ARG_MNTNS:
- kdbus_args->mntns = true;
+ kdbus_args.mntns = true;
break;
case ARG_PIDNS:
- kdbus_args->pidns = true;
+ kdbus_args.pidns = true;
break;
case ARG_USERNS:
- kdbus_args->userns = true;
+ kdbus_args.userns = true;
break;
case ARG_UIDMAP:
- kdbus_args->uid_map = optarg;
+ kdbus_args.uid_map = optarg;
break;
case ARG_GIDMAP:
- kdbus_args->gid_map = optarg;
+ kdbus_args.gid_map = optarg;
break;
default:
}
}
- ret = start_tests(kdbus_args);
+ if (!kdbus_args.root) {
+ snprintf(fspath, sizeof(fspath), "/sys/fs/%s",
+ kdbus_args.module);
+ kdbus_args.root = fspath;
+ }
+
+ ret = start_tests(&kdbus_args);
if (ret == TEST_ERR)
return EXIT_FAILURE;
- free(kdbus_args);
-
return 0;
}