test/parser: Add pxe tests
authorJeremy Kerr <jk@ozlabs.org>
Tue, 9 Jul 2013 08:14:41 +0000 (16:14 +0800)
committerGeoff Levand <geoff@infradead.org>
Tue, 23 Jul 2013 16:44:45 +0000 (09:44 -0700)
Add a couple of tests to verify the pxe parser, particularly the
different styles of initrd handling.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
test/parser/Makefile.am
test/parser/test-pxe-initrd-in-append.c [new file with mode: 0644]
test/parser/test-pxe-single.c [new file with mode: 0644]

index 5dba679f682bf39c582bdce98f349cad02adf871..c2d84a38a84009a0c92cfb7bf98144667cdb0d1f 100644 (file)
@@ -34,7 +34,9 @@ TESTS = \
        test-kboot-single \
        test-yaboot-single \
        test-yaboot-external \
-       test-yaboot-rh8-ppc64
+       test-yaboot-rh8-ppc64 \
+       test-pxe-single \
+       test-pxe-initrd-in-append
 
 $(TESTS): %: %.embedded-config.o
 $(TESTS): LDADD += $@.embedded-config.o
@@ -49,6 +51,7 @@ parser_objs = \
        $(top_srcdir)/discover/yaboot-parser.c \
        $(top_srcdir)/discover/kboot-parser.c \
        $(top_srcdir)/discover/grub2-parser.c \
+       $(top_srcdir)/discover/pxe-parser.c \
        $(top_srcdir)/discover/resource.c \
        $(top_srcdir)/discover/paths.c \
        $(top_srcdir)/discover/device-handler.c \
diff --git a/test/parser/test-pxe-initrd-in-append.c b/test/parser/test-pxe-initrd-in-append.c
new file mode 100644 (file)
index 0000000..3c1c217
--- /dev/null
@@ -0,0 +1,34 @@
+
+#include "parser-test.h"
+
+#if 0 /* PARSER_EMBEDDED_CONFIG */
+default linux
+
+label linux
+kernel ./pxe/de-ad-de-ad-be-ef.vmlinuz
+append command line initrd=./pxe/de-ad-de-ad-be-ef.initrd
+#endif
+
+void run_test(struct parser_test *test)
+{
+       struct discover_boot_option *opt;
+       struct discover_context *ctx;
+
+       test_read_conf_embedded(test);
+       test_set_conf_source(test, "tftp://host/dir/conf.txt");
+       test_run_parser(test, "pxe");
+
+       ctx = test->ctx;
+
+       check_boot_option_count(ctx, 1);
+       opt = get_boot_option(ctx, 0);
+
+       check_name(opt, "linux");
+       check_args(opt, "command line "
+                       "initrd=./pxe/de-ad-de-ad-be-ef.initrd");
+
+       check_resolved_url_resource(opt->boot_image,
+                       "tftp://host/dir/./pxe/de-ad-de-ad-be-ef.vmlinuz");
+       check_resolved_url_resource(opt->initrd,
+                       "tftp://host/dir/./pxe/de-ad-de-ad-be-ef.initrd");
+}
diff --git a/test/parser/test-pxe-single.c b/test/parser/test-pxe-single.c
new file mode 100644 (file)
index 0000000..65e3051
--- /dev/null
@@ -0,0 +1,34 @@
+
+#include "parser-test.h"
+
+#if 0 /* PARSER_EMBEDDED_CONFIG */
+default linux
+
+label linux
+kernel ./pxe/de-ad-de-ad-be-ef.vmlinuz
+append command line
+initrd=./pxe/de-ad-de-ad-be-ef.initrd
+#endif
+
+void run_test(struct parser_test *test)
+{
+       struct discover_boot_option *opt;
+       struct discover_context *ctx;
+
+       test_read_conf_embedded(test);
+       test_set_conf_source(test, "tftp://host/dir/conf.txt");
+       test_run_parser(test, "pxe");
+
+       ctx = test->ctx;
+
+       check_boot_option_count(ctx, 1);
+       opt = get_boot_option(ctx, 0);
+
+       check_name(opt, "linux");
+       check_args(opt, "command line");
+
+       check_resolved_url_resource(opt->boot_image,
+                       "tftp://host/dir/./pxe/de-ad-de-ad-be-ef.vmlinuz");
+       check_resolved_url_resource(opt->initrd,
+                       "tftp://host/dir/./pxe/de-ad-de-ad-be-ef.initrd");
+}