Patchwork [13/18] petitboot: Fixup parser test program

login
register
mail settings
Submitter Geoff Levand
Date March 25, 2009, 10:35 p.m.
Message ID <20090325223547.665526004@am.sony.com>>
Download mbox | patch
Permalink /patch/25118/
State Accepted
Headers show

Comments

Geoff Levand - March 25, 2009, 10:35 p.m.
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>
---
 rules.mk            |    9 ++--
 test/parser-test.c  |   96 +++++++++++++++++++++++-----------------------------
 test/parser-test.sh |   29 +++++++--------
 3 files changed, 61 insertions(+), 73 deletions(-)

Patch

--- 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)
--- a/test/parser-test.c
+++ b/test/parser-test.c
@@ -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;
 }
--- a/test/parser-test.sh
+++ b/test/parser-test.sh
@@ -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"