diff options
Diffstat (limited to 'src/lib/hooks/tests/Makefile.am')
-rw-r--r-- | src/lib/hooks/tests/Makefile.am | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/src/lib/hooks/tests/Makefile.am b/src/lib/hooks/tests/Makefile.am new file mode 100644 index 0000000..8cbe413 --- /dev/null +++ b/src/lib/hooks/tests/Makefile.am @@ -0,0 +1,152 @@ +SUBDIRS = . + +AM_CPPFLAGS = -I$(top_builddir)/src/lib -I$(top_srcdir)/src/lib +AM_CPPFLAGS += $(BOOST_INCLUDES) + +AM_CXXFLAGS = $(KEA_CXXFLAGS) + +# Kea libraries against which the test user libraries are linked. +HOOKS_LIB = $(top_builddir)/src/lib/hooks/libkea-hooks.la +LOG_LIB = $(top_builddir)/src/lib/log/libkea-log.la +UTIL_LIB = $(top_builddir)/src/lib/util/libkea-util.la +EXCEPTIONS_LIB = $(top_builddir)/src/lib/exceptions/libkea-exceptions.la + +ALL_LIBS = $(HOOKS_LIB) $(LOG_LIB) $(UTIL_LIB) $(EXCEPTIONS_LIB) $(LOG4CPLUS_LIBS) + +# Files to clean include the file created by testing. +CLEANFILES = *.gcno *.gcda $(builddir)/marker_file.dat + +# Files generated by configure +DISTCLEANFILES = marker_file.h test_libraries.h + +TESTS_ENVIRONMENT = $(LIBTOOL) --mode=execute $(VALGRIND_COMMAND) + +TESTS = +if HAVE_GTEST +# Build shared libraries for testing. The libtool way to create a shared library +# is to specify "-avoid-version -export-dynamic -module" in the library LDFLAGS +# (see http://www.gnu.org/software/libtool/manual/html_node/Link-mode.html). +# Use of these switches will guarantee that the .so files are created in the +# .libs folder and they can be dlopened. +# +# Note that the shared libraries with callouts should not be used together with +# the --enable-static-link option. With this option, the bind10 libraries are +# statically linked with the program and if the callout invokes the methods +# which belong to these libraries, the library with the callout will get its +# own copy of the static objects (e.g. logger, ServerHooks) and that will lead +# to unexpected errors. For this reason, the --enable-static-link option is +# ignored for unit tests built here. + +noinst_LTLIBRARIES = libnvl.la libivl.la libfxl.la libbcl.la liblcl.la +noinst_LTLIBRARIES += liblecl.la libucl.la libfcl.la libpcl.la libacl.la + +# -rpath /nowhere is a hack to trigger libtool to not create a +# convenience archive, resulting in shared modules + +# No version function +libnvl_la_SOURCES = no_version_library.cc +libnvl_la_CXXFLAGS = $(AM_CXXFLAGS) +libnvl_la_CPPFLAGS = $(AM_CPPFLAGS) +libnvl_la_LDFLAGS = -avoid-version -export-dynamic -module -rpath /nowhere + +# Incorrect version function +libivl_la_SOURCES = incorrect_version_library.cc +libivl_la_CXXFLAGS = $(AM_CXXFLAGS) +libivl_la_CPPFLAGS = $(AM_CPPFLAGS) +libivl_la_LDFLAGS = -avoid-version -export-dynamic -module -rpath /nowhere + +# All framework functions throw an exception +libfxl_la_SOURCES = framework_exception_library.cc +libfxl_la_CXXFLAGS = $(AM_CXXFLAGS) +libfxl_la_CPPFLAGS = $(AM_CPPFLAGS) +libfxl_la_LDFLAGS = -avoid-version -export-dynamic -module -rpath /nowhere + +# The basic callout library - contains standard callouts +libbcl_la_SOURCES = basic_callout_library.cc +libbcl_la_CXXFLAGS = $(AM_CXXFLAGS) +libbcl_la_CPPFLAGS = $(AM_CPPFLAGS) +libbcl_la_LDFLAGS = -avoid-version -export-dynamic -module -rpath /nowhere + +# The load callout library - contains a load function +liblcl_la_SOURCES = load_callout_library.cc +liblcl_la_CXXFLAGS = $(AM_CXXFLAGS) +liblcl_la_CPPFLAGS = $(AM_CPPFLAGS) +liblcl_la_LDFLAGS = -avoid-version -export-dynamic -module -rpath /nowhere + +# The load error callout library - contains a load function that returns +# an error. +liblecl_la_SOURCES = load_error_callout_library.cc +liblecl_la_CXXFLAGS = $(AM_CXXFLAGS) +liblecl_la_CPPFLAGS = $(AM_CPPFLAGS) +liblecl_la_LDFLAGS = -avoid-version -export-dynamic -module -rpath /nowhere + +# The unload callout library - contains an unload function that +# creates a marker file. +libucl_la_SOURCES = unload_callout_library.cc +libucl_la_CXXFLAGS = $(AM_CXXFLAGS) +libucl_la_CPPFLAGS = $(AM_CPPFLAGS) +libucl_la_LDFLAGS = -avoid-version -export-dynamic -module -rpath /nowhere + +# The full callout library - contains all three framework functions. +libfcl_la_SOURCES = full_callout_library.cc +libfcl_la_CXXFLAGS = $(AM_CXXFLAGS) +libfcl_la_CPPFLAGS = $(AM_CPPFLAGS) +libfcl_la_LDFLAGS = -avoid-version -export-dynamic -module -rpath /nowhere + +# The parameters checking callout library - expects +libpcl_la_SOURCES = callout_params_library.cc +libpcl_la_CXXFLAGS = $(AM_CXXFLAGS) +libpcl_la_CPPFLAGS = $(AM_CPPFLAGS) +libpcl_la_LDFLAGS = -avoid-version -export-dynamic -module -rpath /nowhere +libpcl_la_LDFLAGS += $(top_builddir)/src/lib/util/libkea-util.la + +# The async callout library - parks object for asynchronous task +libacl_la_SOURCES = async_callout_library.cc +libacl_la_CXXFLAGS = $(AM_CXXFLAGS) +libacl_la_CPPFLAGS = $(AM_CPPFLAGS) +libacl_la_LDFLAGS = -avoid-version -export-dynamic -module -rpath /nowhere + +TESTS += run_unittests +run_unittests_SOURCES = run_unittests.cc +run_unittests_SOURCES += callout_handle_unittest.cc +run_unittests_SOURCES += callout_handle_associate_unittest.cc +run_unittests_SOURCES += callout_manager_unittest.cc +run_unittests_SOURCES += common_test_class.h +run_unittests_SOURCES += handles_unittest.cc +run_unittests_SOURCES += hooks_manager_unittest.cc +run_unittests_SOURCES += library_manager_collection_unittest.cc +run_unittests_SOURCES += library_manager_unittest.cc +run_unittests_SOURCES += parking_lots_unittest.cc +run_unittests_SOURCES += server_hooks_unittest.cc + +nodist_run_unittests_SOURCES = marker_file.h +nodist_run_unittests_SOURCES += test_libraries.h + +run_unittests_CXXFLAGS = $(AM_CXXFLAGS) +run_unittests_CPPFLAGS = $(AM_CPPFLAGS) $(GTEST_INCLUDES) +run_unittests_LDFLAGS = $(AM_LDFLAGS) $(GTEST_LDFLAGS) +if USE_STATIC_LINK +run_unittests_LDFLAGS += -static -export-dynamic +endif + +run_unittests_LDADD = $(AM_LDADD) +run_unittests_LDADD += $(ALL_LIBS) +run_unittests_LDADD += $(top_builddir)/src/lib/cc/libkea-cc.la +run_unittests_LDADD += $(top_builddir)/src/lib/asiolink/libkea-asiolink.la +run_unittests_LDADD += $(top_builddir)/src/lib/util/unittests/libutil_unittests.la +run_unittests_LDADD += $(GTEST_LDADD) $(LOG4CPLUS_LIBS) $(BOOST_LIBS) +# As noted in configure.ac, libtool doesn't work perfectly with Darwin: it +# embeds the final install path in dynamic libraries and loadable modules refer +# to that path even if its loaded within the source tree, so preventing tests +# from working - but only when linking statically. The solution used in other +# Makefiles (setting the path to the dynamic libraries via an environment +# variable) don't seem to work. What does work is to run the unit test using +# libtool and specifying paths via -dlopen switches. So... If running in an +# environment where we have to set the library path AND if linking statically, +# override the "check" target and run the unit tests ourselves. + +endif + +noinst_PROGRAMS = $(TESTS) + +EXTRA_DIST = marker_file.h.in test_libraries.h.in |