tests/hwtable: set multipath_dir in local configuration
authorMartin Wilck <mwilck@suse.com>
Mon, 10 Dec 2018 09:49:36 +0000 (10:49 +0100)
committerChristophe Varoqui <christophe.varoqui@opensvc.com>
Mon, 10 Dec 2018 23:40:33 +0000 (00:40 +0100)
If internal libmultipath APIs change (such as, recently, the
checker API), test programs will fail because they'll link
with the standard system prioritizer / checker / foreign APIs.

Make sure we always link with our own shared libraries.

Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
Signed-off-by: Martin Wilck <mwilck@suse.com>
tests/Makefile
tests/hwtable.c

index b37b502..ef90086 100644 (file)
@@ -26,7 +26,11 @@ hwtable-test_LIBDEPS := -ludev -lpthread -ldl
 blacklist-test_OBJDEPS := ../libmultipath/blacklist.o
 blacklist-test_LIBDEPS := -ludev
 
 blacklist-test_OBJDEPS := ../libmultipath/blacklist.o
 blacklist-test_LIBDEPS := -ludev
 
-%.out: %-test
+lib/libchecktur.so:
+       mkdir lib
+       ln -t lib ../libmultipath/{checkers,prioritizers,foreign}/*.so
+
+%.out: %-test lib/libchecktur.so
        @echo == running $< ==
        @LD_LIBRARY_PATH=$(multipathdir):$(mpathcmddir) ./$< >$@
 
        @echo == running $< ==
        @LD_LIBRARY_PATH=$(multipathdir):$(mpathcmddir) ./$< >$@
 
@@ -34,6 +38,7 @@ OBJS = $(TESTS:%=%.o) test-lib.o
 
 clean: dep_clean
        $(RM) $(TESTS:%=%-test) $(TESTS:%=%.out) $(OBJS)
 
 clean: dep_clean
        $(RM) $(TESTS:%=%-test) $(TESTS:%=%.out) $(OBJS)
+       $(RM) -rf lib
 
 .SECONDARY: $(OBJS)
 
 
 .SECONDARY: $(OBJS)
 
index 9146ecc..1cd788a 100644 (file)
@@ -250,14 +250,19 @@ static void write_defaults(const struct hwt_state *hwt)
        static struct key_value defaults[] = {
                { "config_dir", NULL },
                { "bindings_file", NULL },
        static struct key_value defaults[] = {
                { "config_dir", NULL },
                { "bindings_file", NULL },
+               { "multipath_dir", NULL },
                { "detect_prio", "no" },
                { "detect_checker", "no" },
        };
        char buf[sizeof(tmplate) + sizeof(bindings_name)];
                { "detect_prio", "no" },
                { "detect_checker", "no" },
        };
        char buf[sizeof(tmplate) + sizeof(bindings_name)];
+       char dirbuf[PATH_MAX];
 
        snprintf(buf, sizeof(buf), "%s/%s", hwt->tmpname, bindings_name);
        defaults[0].value = hwt->dirname;
        defaults[1].value = buf;
 
        snprintf(buf, sizeof(buf), "%s/%s", hwt->tmpname, bindings_name);
        defaults[0].value = hwt->dirname;
        defaults[1].value = buf;
+       assert_ptr_not_equal(getcwd(dirbuf, sizeof(dirbuf)), NULL);
+       strncat(dirbuf, "/lib", sizeof(dirbuf));
+       defaults[2].value = dirbuf;
        write_section(hwt->config_file, "defaults",
                      ARRAY_SIZE(defaults), defaults);
 }
        write_section(hwt->config_file, "defaults",
                      ARRAY_SIZE(defaults), defaults);
 }