summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2012-02-03 13:50:49 -0600
committerDan McGee <dan@archlinux.org>2012-02-06 22:18:08 -0600
commit2570b0e8a6894c760a8f13befe261bba662169e6 (patch)
tree444adec9bef22999288ec2f2090580e63e9ce946
parent1708e9ee0f6c8e5d3e51f32a46009d02afcba790 (diff)
downloadkmod-testsuite.tar.gz
kmod-testsuite.zip
test-conversion: convert test-get-dependencies to new infrastructuretestsuite
The test uses the ext4 module dependencies as the testcase, checking both the number and the names of the returned modules. Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r--Makefile.am4
-rw-r--r--test/test-get-dependencies.c52
-rw-r--r--testsuite/.gitignore1
-rw-r--r--testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/kernel/fs/jbd2/jbd2.kobin0 -> 159175 bytes
-rw-r--r--testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/kernel/fs/mbcache.kobin0 -> 18431 bytes
-rw-r--r--testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/kernel/lib/crc16.kobin0 -> 4374 bytes
-rw-r--r--testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.alias1
-rw-r--r--testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.alias.binbin0 -> 12 bytes
-rw-r--r--testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.builtin0
-rw-r--r--testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.builtin.binbin0 -> 12 bytes
-rw-r--r--testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.dep4
-rw-r--r--testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.dep.binbin0 -> 265 bytes
-rw-r--r--testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.devname1
-rw-r--r--testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.order7
-rw-r--r--testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.softdep2
-rw-r--r--testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.symbols58
-rw-r--r--testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.symbols.binbin0 -> 2584 bytes
-rw-r--r--testsuite/test-dependencies.c118
18 files changed, 195 insertions, 53 deletions
diff --git a/Makefile.am b/Makefile.am
index 81bd820..04e807e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -164,7 +164,7 @@ testsuite_libtestsuite_la_CPPFLAGS = $(TESTSUITE_CPPFLAGS)
TESTSUITE = testsuite/test-init testsuite/test-testsuite testsuite/test-loaded \
testsuite/test-modinfo testsuite/test-alias testsuite/test-new-module \
- testsuite/test-blacklist
+ testsuite/test-blacklist testsuite/test-dependencies
check_PROGRAMS = $(TESTSUITE)
TESTS = $(TESTSUITE)
@@ -182,6 +182,8 @@ testsuite_test_new_module_LDADD = $(TESTSUITE_LDADD)
testsuite_test_new_module_CPPFLAGS = $(TESTSUITE_CPPFLAGS)
testsuite_test_blacklist_LDADD = $(TESTSUITE_LDADD)
testsuite_test_blacklist_CPPFLAGS = $(TESTSUITE_CPPFLAGS)
+testsuite_test_dependencies_LDADD = $(TESTSUITE_LDADD)
+testsuite_test_dependencies_CPPFLAGS = $(TESTSUITE_CPPFLAGS)
DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc
diff --git a/test/test-get-dependencies.c b/test/test-get-dependencies.c
deleted file mode 100644
index 3a7bbf2..0000000
--- a/test/test-get-dependencies.c
+++ /dev/null
@@ -1,52 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <stddef.h>
-#include <errno.h>
-#include <unistd.h>
-#include <inttypes.h>
-#include <string.h>
-#include <libkmod.h>
-
-
-int main(int argc, char *argv[])
-{
- const char *name;
- struct kmod_ctx *ctx;
- struct kmod_module *mod;
- struct kmod_list *list, *l;
- int err;
-
- printf("libkmod version %s\n", VERSION);
-
- if (argc < 2) {
- fprintf(stderr, "ERR: Provide a module name\n");
- return EXIT_FAILURE;
- }
-
- name = argv[1];
-
- ctx = kmod_new(NULL, NULL);
- if (ctx == NULL)
- exit(EXIT_FAILURE);
-
- err = kmod_module_new_from_name(ctx, name, &mod);
- if (err < 0) {
- kmod_unref(ctx);
- exit(EXIT_FAILURE);
- }
-
- list = kmod_module_get_dependencies(mod);
- printf("Module: %s\nDependency list:\n", name);
-
- kmod_list_foreach(l, list) {
- struct kmod_module *m = kmod_module_get_module(l);
- printf("\t%s\n", kmod_module_get_name(m));
- kmod_module_unref(m);
- }
-
- kmod_module_unref_list(list);
- kmod_module_unref(mod);
- kmod_unref(ctx);
-
- return EXIT_SUCCESS;
-}
diff --git a/testsuite/.gitignore b/testsuite/.gitignore
index f22ca96..5ecd7e7 100644
--- a/testsuite/.gitignore
+++ b/testsuite/.gitignore
@@ -4,6 +4,7 @@
/.dirstamp
/test-alias
/test-blacklist
+/test-dependencies
/test-init
/test-loaded
/test-modinfo
diff --git a/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/kernel/fs/jbd2/jbd2.ko b/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/kernel/fs/jbd2/jbd2.ko
new file mode 100644
index 0000000..521c214
--- /dev/null
+++ b/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/kernel/fs/jbd2/jbd2.ko
Binary files differ
diff --git a/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/kernel/fs/mbcache.ko b/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/kernel/fs/mbcache.ko
new file mode 100644
index 0000000..5849fa7
--- /dev/null
+++ b/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/kernel/fs/mbcache.ko
Binary files differ
diff --git a/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/kernel/lib/crc16.ko b/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/kernel/lib/crc16.ko
new file mode 100644
index 0000000..2fffdb7
--- /dev/null
+++ b/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/kernel/lib/crc16.ko
Binary files differ
diff --git a/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.alias b/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.alias
new file mode 100644
index 0000000..ba76e18
--- /dev/null
+++ b/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.alias
@@ -0,0 +1 @@
+# Aliases extracted from modules themselves.
diff --git a/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.alias.bin b/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.alias.bin
new file mode 100644
index 0000000..7075435
--- /dev/null
+++ b/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.alias.bin
Binary files differ
diff --git a/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.builtin b/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.builtin
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.builtin
diff --git a/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.builtin.bin b/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.builtin.bin
new file mode 100644
index 0000000..7075435
--- /dev/null
+++ b/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.builtin.bin
Binary files differ
diff --git a/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.dep b/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.dep
new file mode 100644
index 0000000..c4e2516
--- /dev/null
+++ b/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.dep
@@ -0,0 +1,4 @@
+kernel/fs/mbcache.ko:
+kernel/fs/ext4/ext4.ko: kernel/lib/crc16.ko kernel/fs/jbd2/jbd2.ko kernel/fs/mbcache.ko
+kernel/fs/jbd2/jbd2.ko:
+kernel/lib/crc16.ko:
diff --git a/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.dep.bin b/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.dep.bin
new file mode 100644
index 0000000..2e89d91
--- /dev/null
+++ b/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.dep.bin
Binary files differ
diff --git a/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.devname b/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.devname
new file mode 100644
index 0000000..58f6d6d
--- /dev/null
+++ b/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.devname
@@ -0,0 +1 @@
+# Device nodes to trigger on-demand module loading.
diff --git a/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.order b/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.order
new file mode 100644
index 0000000..85f2778
--- /dev/null
+++ b/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.order
@@ -0,0 +1,7 @@
+kernel/fs/mbcache.ko
+kernel/fs/ext3/ext3.ko
+kernel/fs/ext2/ext2.ko
+kernel/fs/ext4/ext4.ko
+kernel/fs/jbd/jbd.ko
+kernel/fs/jbd2/jbd2.ko
+kernel/lib/crc16.ko
diff --git a/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.softdep b/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.softdep
new file mode 100644
index 0000000..3cc0512
--- /dev/null
+++ b/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.softdep
@@ -0,0 +1,2 @@
+# Soft dependencies extracted from modules themselves.
+# Copy, with a .conf extension, to /etc/modprobe.d to use it with modprobe.
diff --git a/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.symbols b/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.symbols
new file mode 100644
index 0000000..0f0d88c
--- /dev/null
+++ b/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.symbols
@@ -0,0 +1,58 @@
+# Aliases for symbols, used by symbol_request().
+alias symbol:jbd2_journal_invalidatepage jbd2
+alias symbol:jbd2_journal_release_buffer jbd2
+alias symbol:jbd2_journal_init_inode jbd2
+alias symbol:jbd2__journal_restart jbd2
+alias symbol:mb_cache_entry_find_next mbcache
+alias symbol:crc16 crc16
+alias symbol:mb_cache_entry_insert mbcache
+alias symbol:jbd2_journal_destroy jbd2
+alias symbol:jbd2_journal_lock_updates jbd2
+alias symbol:mb_cache_entry_free mbcache
+alias symbol:jbd2_log_start_commit jbd2
+alias symbol:mb_cache_entry_find_first mbcache
+alias symbol:mb_cache_destroy mbcache
+alias symbol:jbd2_journal_extend jbd2
+alias symbol:jbd2_journal_begin_ordered_truncate jbd2
+alias symbol:jbd2_journal_revoke jbd2
+alias symbol:jbd2_journal_get_write_access jbd2
+alias symbol:jbd2_inode_cache jbd2
+alias symbol:jbd2_journal_ack_err jbd2
+alias symbol:mb_cache_create mbcache
+alias symbol:jbd2_journal_flush jbd2
+alias symbol:jbd2_journal_init_jbd_inode jbd2
+alias symbol:mb_cache_entry_alloc mbcache
+alias symbol:jbd2_journal_get_undo_access jbd2
+alias symbol:jbd2_journal_get_create_access jbd2
+alias symbol:jbd2_journal_update_format jbd2
+alias symbol:crc16_table crc16
+alias symbol:jbd2_journal_wipe jbd2
+alias symbol:jbd2_journal_check_used_features jbd2
+alias symbol:mb_cache_entry_get mbcache
+alias symbol:jbd2_journal_force_commit_nested jbd2
+alias symbol:jbd2_log_wait_commit jbd2
+alias symbol:jbd2_journal_stop jbd2
+alias symbol:jbd2_journal_set_triggers jbd2
+alias symbol:jbd2_journal_release_jbd_inode jbd2
+alias symbol:jbd2_journal_unlock_updates jbd2
+alias symbol:jbd2_journal_start_commit jbd2
+alias symbol:jbd2_journal_dirty_metadata jbd2
+alias symbol:jbd2_journal_force_commit jbd2
+alias symbol:mb_cache_entry_release mbcache
+alias symbol:jbd2_journal_init_dev jbd2
+alias symbol:jbd2_journal_forget jbd2
+alias symbol:jbd2_journal_set_features jbd2
+alias symbol:jbd2_journal_start jbd2
+alias symbol:jbd2_journal_clear_features jbd2
+alias symbol:jbd2__journal_start jbd2
+alias symbol:mb_cache_shrink mbcache
+alias symbol:jbd2_journal_clear_err jbd2
+alias symbol:jbd2_journal_file_inode jbd2
+alias symbol:jbd2_journal_restart jbd2
+alias symbol:jbd2_journal_load jbd2
+alias symbol:jbd2_journal_check_available_features jbd2
+alias symbol:jbd2_journal_abort jbd2
+alias symbol:jbd2_journal_blocks_per_page jbd2
+alias symbol:jbd2_journal_try_to_free_buffers jbd2
+alias symbol:jbd2_trans_will_send_data_barrier jbd2
+alias symbol:jbd2_journal_errno jbd2
diff --git a/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.symbols.bin b/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.symbols.bin
new file mode 100644
index 0000000..aa8cfc8
--- /dev/null
+++ b/testsuite/rootfs/test-dependencies/lib/modules/4.0.20-kmod/modules.symbols.bin
Binary files differ
diff --git a/testsuite/test-dependencies.c b/testsuite/test-dependencies.c
new file mode 100644
index 0000000..b9f9a12
--- /dev/null
+++ b/testsuite/test-dependencies.c
@@ -0,0 +1,118 @@
+/*
+ * Copyright (C) 2011-2012 ProFUSION embedded systems
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * 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.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stddef.h>
+#include <errno.h>
+#include <unistd.h>
+#include <inttypes.h>
+#include <string.h>
+#include <libkmod.h>
+
+#include "testsuite.h"
+#define TEST_UNAME "4.0.20-kmod"
+
+static int test_dependencies(const struct test *t)
+{
+ struct kmod_ctx *ctx;
+ struct kmod_module *mod;
+ struct kmod_list *list, *l;
+ int err;
+ size_t len = 0;
+ int crc16 = 0, mbcache = 0, jbd2 = 0;
+
+ ctx = kmod_new(NULL, NULL);
+ if (ctx == NULL)
+ return EXIT_FAILURE;
+
+ err = kmod_module_new_from_name(ctx, "ext4", &mod);
+ if (err < 0) {
+ kmod_unref(ctx);
+ return EXIT_FAILURE;
+ }
+
+ list = kmod_module_get_dependencies(mod);
+
+ kmod_list_foreach(l, list) {
+ struct kmod_module *m = kmod_module_get_module(l);
+ const char *name = kmod_module_get_name(m);
+
+ if (strcmp(name, "crc16") == 0)
+ crc16 = 1;
+ if (strcmp(name, "mbcache") == 0)
+ mbcache = 1;
+ else if (strcmp(name, "jbd2") == 0)
+ jbd2 = 1;
+
+ kmod_module_unref(m);
+ len++;
+ }
+
+ /* crc16, mbcache, jbd2 */
+ if (len != 3 || !crc16 || !mbcache || !jbd2)
+ return EXIT_FAILURE;
+
+ kmod_module_unref_list(list);
+ kmod_module_unref(mod);
+ kmod_unref(ctx);
+
+ return EXIT_SUCCESS;
+}
+static const struct test stest_dependencies = {
+ .name = "test_dependencies",
+ .description = "test if kmod_module_get_dependencies works",
+ .func = test_dependencies,
+ .config = {
+ [TC_ROOTFS] = TESTSUITE_ROOTFS "test-dependencies/",
+ [TC_UNAME_R] = TEST_UNAME,
+ },
+ .need_spawn = true,
+};
+
+static const struct test *tests[] = {
+ &stest_dependencies,
+ NULL,
+};
+
+int main(int argc, char *argv[])
+{
+ const struct test *t;
+ int arg;
+ size_t i;
+
+ arg = test_init(argc, argv, tests);
+ if (arg == 0)
+ return 0;
+
+ if (arg < argc) {
+ t = test_find(tests, argv[arg]);
+ if (t == NULL) {
+ fprintf(stderr, "could not find test %s\n", argv[arg]);
+ exit(EXIT_FAILURE);
+ }
+
+ return test_run(t);
+ }
+
+ for (i = 0; tests[i] != NULL; i++) {
+ if (test_run(tests[i]) != 0)
+ exit(EXIT_FAILURE);
+ }
+
+ exit(EXIT_SUCCESS);
+}