Fixup parser test program
authorGeoff Levand <geoffrey.levand@am.sony.com>
Wed, 25 Mar 2009 12:35:59 +0000 (12:35 +0000)
committerJeremy Kerr <jk@ozlabs.org>
Mon, 30 Mar 2009 09:20:16 +0000 (20:20 +1100)
Fixup the parser test program and helper script to work
with the new multi-ui design.

The expected-output files have not been updated.

Signed-off-by: Geoff Levand <geoffrey.levand@am.sony.com>
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
rules.mk
test/parser-test.c
test/parser-test.sh

index 040f269f9e68a967b6b435735734670658ab2357..23b23d7e95ce2fdd48f350c53753428afc91edcd 100644 (file)
--- a/rules.mk
+++ b/rules.mk
@@ -37,11 +37,10 @@ talloc_objs = lib/talloc/talloc.o
 waiter_objs = lib/waiter/waiter.o
 
 # daemon objs
-parser_objs = discover/parser.o discover/parser-utils.o \
-       discover/parser-conf.o\
+parser_objs = discover/parser.o discover/parser-conf.o discover/paths.o \
        $(foreach p, $(parsers), discover/$(p)-parser.o)
-discover_objs = discover/udev.o discover/discover-server.o \
-       discover/device-handler.o discover/paths.o
+discover_objs =  discover/udev.o discover/discover-server.o \
+       discover/device-handler.o discover/paths.o discover/parser-utils.o
 
 # client objs
 ui_common_objs = ui/common/discover-client.o
@@ -95,7 +94,7 @@ $(pb_discover): $(pb_discover_objs)
        $(LINK.o) -o $@ $^
 
 # parser-test
-parser_test_objs = $(parser_objs) test/parser-test.o
+parser_test_objs = $(lib_objs) $(parser_objs) test/parser-test.o
 $(parser_test_objs): $(makefiles)
 
 $(parser_test): $(parser_test_objs)
index 8c94d3f899d4c2f43ea4945ae006ccd619a05065..c88fc6c371765f7eb192c5da148719ac5e295ab1 100644 (file)
@@ -1,85 +1,75 @@
 #define _GNU_SOURCE
 
-#include <stdlib.h>
-#include <stdio.h>
 #include <stdarg.h>
-#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
 #include <string.h>
+#include <unistd.h>
 
-#include "parser.h"
-#include "paths.h"
-
-void pb_log(const char *fmt, ...)
-{
-       va_list ap;
-
-       va_start(ap, fmt);
-       vfprintf(stderr, fmt, ap);
-       va_end(ap);
-}
+#include <log/log.h>
+#include "pb-protocol/pb-protocol.h"
+#include <talloc/talloc.h>
 
-int mount_device(const char *dev_path)
-{
-       printf("[mount] %s\n", dev_path);
-       return 0;
-}
+#include "discover/device-handler.h"
+#include "discover/parser.h"
+#include "discover/parser-utils.h"
+#include "discover/paths.h"
 
-static int device_idx;
-static int option_idx;
+static FILE *testf;
 
-int add_device(const struct device *dev)
+void device_add_boot_option(struct device *device,
+               struct boot_option *boot_option)
 {
-       printf("[dev %2d] id: %s\n", device_idx, dev->id);
-       printf("[dev %2d] name: %s\n", device_idx, dev->name);
-       printf("[dev %2d] description: %s\n", device_idx, dev->description);
-       printf("[dev %2d] boot_image: %s\n", device_idx, dev->icon_file);
-
-       device_idx++;
-       option_idx = 0;
-       return 0;
+       fprintf(testf, "%s: %s\n", __func__, device->id);
+       fprintf(testf, " id     '%s'\n", boot_option->id);
+       fprintf(testf, " name   '%s'\n", boot_option->name);
+       fprintf(testf, " descr  '%s'\n", boot_option->description);
+       fprintf(testf, " icon   '%s'\n", boot_option->icon_file);
+       fprintf(testf, " image  '%s'\n", boot_option->boot_image_file);
+       fprintf(testf, " initrd '%s'\n", boot_option->initrd_file);
+       fprintf(testf, " args   '%s'\n", boot_option->boot_args);
+       fflush(testf);
 }
 
-
-int add_boot_option(const struct boot_option *opt)
+const char *generic_icon_file(
+       enum generic_icon_type __attribute__((unused)) type)
 {
-       if (!device_idx) {
-               fprintf(stderr, "Option (%s) added before device\n",
-                               opt->name);
-               exit(EXIT_FAILURE);
-       }
-
-       printf("[opt %2d] name: %s\n", option_idx, opt->name);
-       printf("[opt %2d] description: %s\n", option_idx, opt->description);
-       printf("[opt %2d] boot_image: %s\n", option_idx, opt->boot_image_file);
-       printf("[opt %2d] initrd: %s\n", option_idx, opt->initrd_file);
-       printf("[opt %2d] boot_args: %s\n", option_idx, opt->boot_args);
-
-       option_idx++;
-
-       return 0;
+       return "tester.png";
 }
 
-enum generic_icon_type guess_device_type(void)
+enum generic_icon_type guess_device_type(
+       struct discover_context __attribute__((unused)) *ctx)
 {
        return ICON_TYPE_UNKNOWN;
 }
 
 int main(int argc, char **argv)
 {
-       char *mountpoint, *dev;
+       struct discover_context *ctx;
+       int rc;
 
        if (argc != 3) {
                fprintf(stderr, "usage: %s <basedir> <devname>\n", argv[0]);
                return EXIT_FAILURE;
        }
 
-       mountpoint = argv[1];
-       dev = argv[2];
+       /* Default to test on stdout, pb_log on stderr. */
+
+       testf = stdout;
+
+       pb_log_set_stream(stderr);
+       pb_log_always_flush(1);
+       pb_log("--- parser-test ---\n");
+
+       ctx = talloc_zero(NULL, struct discover_context);
 
-       set_mount_base(mountpoint);
+       ctx->device_path = talloc_asprintf(ctx, "%s/%s", argv[1], argv[2]);
+       ctx->device = talloc_zero(ctx, struct device);
+       ctx->device->id = talloc_strdup(ctx->device, argv[2]);
 
-       iterate_parsers(dev, mountpoint);
+       rc = iterate_parsers(ctx);
 
+       pb_log("--- end ---\n");
 
        return EXIT_SUCCESS;
 }
index 140601e70ad7de5cea7f6395931616cbbf11aaf5..af54395215ed57d754ea33614881aedc7aa05fbb 100755 (executable)
@@ -1,26 +1,25 @@
 #!/bin/bash
 
-testdir=devices/parser-tests
+testdir=parser
 default_rootdev=ps3da1
+mnt=${PREFIX}/var/petitboot/mnt
 
-function test_dir()
-{
-       dir="$1"
+#set -ex
+
+tests=$(ls ${mnt}/${testdir}/)
+
+for test in $tests
+do
        rootdev=$default_rootdev
-       if [ -e "$dir/rootdev" ]
-       then
-               rootdev=$(cat "$dir/rootdev")
+
+       if [ -e "${mnt}/${testdir}/$test/rootdev" ]; then
+               rootdev=$(cat "${mnt}/${testdir}/$test/rootdev")
        fi
-       ./parser-test "$dir" /dev/$rootdev 2>/dev/null |
-               diff -u "$dir/expected-output" -
-}
 
-set -ex
+       ./test/parser-test "${testdir}/$test" $rootdev
 
-for test in $testdir/*
-do
-       echo $test
-       test_dir "$test"
+#      ./test/parser-test "${testdir}/$test" $rootdev 2>/dev/null |
+#              diff -u "${mnt}/${testdir}/$test/expected-output" -
 done
 
 echo "All tests passed"