Home | History | Annotate | Download | only in testsuite
      1 /*
      2  * Copyright (C) 2012-2013  ProFUSION embedded systems
      3  *
      4  * This program is free software; you can redistribute it and/or
      5  * modify it under the terms of the GNU Lesser General Public
      6  * License as published by the Free Software Foundation; either
      7  * version 2.1 of the License, or (at your option) any later version.
      8  *
      9  * This program is distributed in the hope that it will be useful,
     10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     12  * Lesser General Public License for more details.
     13  *
     14  * You should have received a copy of the GNU Lesser General Public
     15  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
     16  */
     17 
     18 #include <errno.h>
     19 #include <inttypes.h>
     20 #include <stddef.h>
     21 #include <stdio.h>
     22 #include <stdlib.h>
     23 #include <string.h>
     24 #include <unistd.h>
     25 
     26 #include <libkmod/libkmod.h>
     27 
     28 #include "testsuite.h"
     29 
     30 static int from_name(const struct test *t)
     31 {
     32 	static const char *modnames[] = {
     33 		"ext4",
     34 		"balbalbalbbalbalbalbalbalbalbal",
     35 		"snd-hda-intel",
     36 		"snd-timer",
     37 		"iTCO_wdt",
     38 		NULL,
     39 	};
     40 	const char **p;
     41 	struct kmod_ctx *ctx;
     42 	struct kmod_module *mod;
     43 	const char *null_config = NULL;
     44 	int err;
     45 
     46 	ctx = kmod_new(NULL, &null_config);
     47 	if (ctx == NULL)
     48 		exit(EXIT_FAILURE);
     49 
     50 	for (p = modnames; p != NULL; p++) {
     51 		err = kmod_module_new_from_name(ctx, *p, &mod);
     52 		if (err < 0)
     53 			exit(EXIT_SUCCESS);
     54 
     55 		printf("modname: %s\n", kmod_module_get_name(mod));
     56 		kmod_module_unref(mod);
     57 	}
     58 
     59 	kmod_unref(ctx);
     60 
     61 	return EXIT_SUCCESS;
     62 }
     63 DEFINE_TEST(from_name,
     64 	.description = "check if module names are parsed correctly",
     65 	.config = {
     66 		[TC_ROOTFS] = TESTSUITE_ROOTFS "test-new-module/from_name/",
     67 	},
     68 	.need_spawn = true,
     69 	.output = {
     70 		.out = TESTSUITE_ROOTFS "test-new-module/from_name/correct.txt",
     71 	});
     72 
     73 static int from_alias(const struct test *t)
     74 {
     75 	static const char *modnames[] = {
     76 		"ext4.*",
     77 		NULL,
     78 	};
     79 	const char **p;
     80 	struct kmod_ctx *ctx;
     81 	int err;
     82 
     83 	ctx = kmod_new(NULL, NULL);
     84 	if (ctx == NULL)
     85 		exit(EXIT_FAILURE);
     86 
     87 	for (p = modnames; p != NULL; p++) {
     88 		struct kmod_list *l, *list = NULL;
     89 
     90 		err = kmod_module_new_from_lookup(ctx, *p, &list);
     91 		if (err < 0)
     92 			exit(EXIT_SUCCESS);
     93 
     94 		kmod_list_foreach(l, list) {
     95 			struct kmod_module *m;
     96 			m = kmod_module_get_module(l);
     97 
     98 			printf("modname: %s\n", kmod_module_get_name(m));
     99 			kmod_module_unref(m);
    100 		}
    101 		kmod_module_unref_list(list);
    102 	}
    103 
    104 	kmod_unref(ctx);
    105 
    106 	return EXIT_SUCCESS;
    107 }
    108 DEFINE_TEST(from_alias,
    109 	.description = "check if aliases are parsed correctly",
    110 	.config = {
    111 		[TC_ROOTFS] = TESTSUITE_ROOTFS "test-new-module/from_alias/",
    112 	},
    113 	.need_spawn = true,
    114 	.output = {
    115 		.out = TESTSUITE_ROOTFS "test-new-module/from_alias/correct.txt",
    116 	});
    117 
    118 TESTSUITE_MAIN();
    119