summaryrefslogtreecommitdiffstats
path: root/test/parser/test-yaboot-device-override.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/parser/test-yaboot-device-override.c')
-rw-r--r--test/parser/test-yaboot-device-override.c79
1 files changed, 79 insertions, 0 deletions
diff --git a/test/parser/test-yaboot-device-override.c b/test/parser/test-yaboot-device-override.c
new file mode 100644
index 0000000..5db5788
--- /dev/null
+++ b/test/parser/test-yaboot-device-override.c
@@ -0,0 +1,79 @@
+#include "parser-test.h"
+
+#include <talloc/talloc.h>
+
+#if 0 /* PARSER_EMBEDDED_CONFIG */
+default=
+device=/dev/sda1
+
+image=/vmlinux.1
+ label=linux.1
+ initrd=initrd.1
+
+image=/vmlinux.2
+ device=/dev/sda2
+ label=linux.2
+ initrd=initrd.2
+
+image=sda3:/vmlinux.3
+ device=/dev/sda2
+ label=linux.3
+ initrd=sda3:initrd.3
+
+image=sda4:/vmlinux.4
+ device=/dev/sda3
+ label=linux.4
+ initrd=initrd.4
+#endif
+
+void run_test(struct parser_test *test)
+{
+ struct discover_boot_option *opt[4];
+ struct discover_device *dev[4];
+ struct discover_context *ctx;
+ char *devname;
+ int i;
+
+ test_read_conf_embedded(test);
+ test_run_parser(test, "yaboot");
+
+ ctx = test->ctx;
+
+ check_boot_option_count(ctx, 4);
+
+ for (i = 0; i < 4; i++)
+ opt[i] = get_boot_option(ctx, i);
+
+ check_name(opt[0], "linux.1");
+ check_unresolved_resource(opt[0]->boot_image);
+ check_unresolved_resource(opt[0]->initrd);
+
+ check_name(opt[1], "linux.2");
+ check_unresolved_resource(opt[1]->boot_image);
+ check_unresolved_resource(opt[1]->initrd);
+
+ check_name(opt[2], "linux.3");
+ check_unresolved_resource(opt[2]->boot_image);
+ check_unresolved_resource(opt[2]->initrd);
+
+ check_name(opt[3], "linux.4");
+ check_unresolved_resource(opt[3]->boot_image);
+ check_unresolved_resource(opt[3]->initrd);
+
+ /* hotplug all dependent devices */
+ for (i = 0; i < 4; i++) {
+ devname = talloc_asprintf(test, "sda%d", i + 1);
+ dev[i] = test_create_device(ctx, devname);
+ test_hotplug_device(test, dev[i]);
+ }
+
+ check_resolved_local_resource(opt[0]->boot_image, dev[0], "/vmlinux.1");
+ check_resolved_local_resource(opt[1]->boot_image, dev[1], "/vmlinux.2");
+ check_resolved_local_resource(opt[2]->boot_image, dev[2], "/vmlinux.3");
+ check_resolved_local_resource(opt[3]->boot_image, dev[3], "/vmlinux.4");
+
+ check_resolved_local_resource(opt[0]->initrd, dev[0], "/initrd.1");
+ check_resolved_local_resource(opt[1]->initrd, dev[1], "/initrd.2");
+ check_resolved_local_resource(opt[2]->initrd, dev[2], "/initrd.3");
+ check_resolved_local_resource(opt[3]->initrd, dev[2], "/initrd.4");
+}
OpenPOWER on IntegriCloud