]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#3729] Checkpoint: hook tests
authorFrancis Dupont <fdupont@isc.org>
Thu, 6 Feb 2025 12:30:30 +0000 (13:30 +0100)
committerAndrei Pavel <andrei@isc.org>
Thu, 13 Feb 2025 08:05:20 +0000 (10:05 +0200)
28 files changed:
src/hooks/dhcp/bootp/meson.build
src/hooks/dhcp/flex_option/libloadtests/meson.build [new file with mode: 0644]
src/hooks/dhcp/flex_option/meson.build
src/hooks/dhcp/flex_option/tests/meson.build [new file with mode: 0644]
src/hooks/dhcp/high_availability/libloadtests/meson.build [new file with mode: 0644]
src/hooks/dhcp/high_availability/meson.build
src/hooks/dhcp/high_availability/tests/meson.build [new file with mode: 0644]
src/hooks/dhcp/lease_cmds/libloadtests/meson.build [new file with mode: 0644]
src/hooks/dhcp/lease_cmds/meson.build
src/hooks/dhcp/lease_cmds/tests/meson.build [new file with mode: 0644]
src/hooks/dhcp/mysql/libloadtests/meson.build [new file with mode: 0644]
src/hooks/dhcp/mysql/meson.build
src/hooks/dhcp/mysql/tests/meson.build [new file with mode: 0644]
src/hooks/dhcp/perfmon/libloadtests/meson.build [new file with mode: 0644]
src/hooks/dhcp/perfmon/meson.build
src/hooks/dhcp/perfmon/tests/meson.build [new file with mode: 0644]
src/hooks/dhcp/pgsql/libloadtests/meson.build [new file with mode: 0644]
src/hooks/dhcp/pgsql/meson.build
src/hooks/dhcp/pgsql/tests/meson.build [new file with mode: 0644]
src/hooks/dhcp/run_script/libloadtests/meson.build [new file with mode: 0644]
src/hooks/dhcp/run_script/meson.build
src/hooks/dhcp/run_script/tests/meson.build [new file with mode: 0644]
src/hooks/dhcp/run_script/tests/run_script_test.sh.in [changed mode: 0644->0755]
src/hooks/dhcp/stat_cmds/libloadtests/meson.build [new file with mode: 0644]
src/hooks/dhcp/stat_cmds/meson.build
src/hooks/dhcp/stat_cmds/tests/meson.build [new file with mode: 0644]
src/hooks/dhcp/user_chk/meson.build
src/hooks/dhcp/user_chk/tests/meson.build [new file with mode: 0644]

index dc0ad001717d8bc3ff2efe08083a85f2243da8fc..09b70a364cec12afcbf7d682ae8e0ee6d41be5b5 100644 (file)
@@ -16,5 +16,5 @@ dhcp_bootp_archive = static_library(
     objects: dhcp_bootp_lib.extract_all_objects(recursive: false),
     link_with: LIBS_BUILT_SO_FAR,
 )
-subdir('tests')
 subdir('libloadtests')
+subdir('tests')
diff --git a/src/hooks/dhcp/flex_option/libloadtests/meson.build b/src/hooks/dhcp/flex_option/libloadtests/meson.build
new file mode 100644 (file)
index 0000000..7bc401f
--- /dev/null
@@ -0,0 +1,22 @@
+if not gtest.found()
+    subdir_done()
+endif
+
+HOOK_INCLUDES = [include_directories('..')]
+dhcp_flex_option_libload_tests = executable(
+    'dhcp-flex-option-libload-tests',
+    'callout_unittests.cc',
+    'load_unload_unittests.cc',
+    'run_unittests.cc',
+    cpp_args: [
+        f'-DFLEX_OPTION_LIB_SO="@TOP_BUILD_DIR@/src/hooks/dhcp/flex_option/libdhcp_flex_option.so"',
+    ],
+    dependencies: [gtest, crypto],
+    include_directories: [include_directories('.')] + INCLUDES + HOOK_INCLUDES,
+    link_with: LIBS_BUILT_SO_FAR,
+)
+test(
+    'dhcp_flex_option_libload_tests',
+    dhcp_flex_option_libload_tests,
+    protocol: 'gtest',
+)
index 6c0903aea99207a9c5a24e54326732707c3c5d3b..73513bbdb5a14bd7f45c6e9065b1a0f5e1e4e111 100644 (file)
@@ -1,4 +1,4 @@
-dhcp_flex_option_lib = library(
+dhcp_flex_option_lib = shared_library(
     'dhcp_flex_option',
     'flex_option.cc',
     'flex_option_callouts.cc',
@@ -12,3 +12,10 @@ dhcp_flex_option_lib = library(
     link_with: LIBS_BUILT_SO_FAR,
     name_suffix: 'so',
 )
+dhcp_flex_option_archive = static_library(
+    'dhcp_flex_option',
+    objects: dhcp_flex_option_lib.extract_all_objects(recursive: false),
+    link_with: LIBS_BUILT_SO_FAR,
+)
+subdir('libloadtests')
+subdir('tests')
diff --git a/src/hooks/dhcp/flex_option/tests/meson.build b/src/hooks/dhcp/flex_option/tests/meson.build
new file mode 100644 (file)
index 0000000..a3d297e
--- /dev/null
@@ -0,0 +1,18 @@
+if not gtest.found()
+    subdir_done()
+endif
+
+HOOK_INCLUDES = [include_directories('..')]
+dhcp_flex_option_lib_tests = executable(
+    'dhcp-flex-option-lib-tests',
+    'flex_option_unittests.cc',
+    'run_unittests.cc',
+    'sub_option_unittests.cc',
+    cpp_args: [
+        f'-DFLEX_OPTION_LIB_SO="@TOP_BUILD_DIR@/src/hooks/dhcp/flex_option/libdhcp_flex_option.so"',
+    ],
+    dependencies: [gtest, crypto],
+    include_directories: [include_directories('.')] + INCLUDES + HOOK_INCLUDES,
+    link_with: [dhcp_flex_option_archive] + LIBS_BUILT_SO_FAR,
+)
+test('dhcp_flex_option_lib_tests', dhcp_flex_option_lib_tests, protocol: 'gtest')
diff --git a/src/hooks/dhcp/high_availability/libloadtests/meson.build b/src/hooks/dhcp/high_availability/libloadtests/meson.build
new file mode 100644 (file)
index 0000000..5407f08
--- /dev/null
@@ -0,0 +1,18 @@
+if not gtest.found()
+    subdir_done()
+endif
+
+HOOK_INCLUDES = [include_directories('..')]
+dhcp_ha_libload_tests = executable(
+    'dhcp-ha-libload-tests',
+    'close_unittests.cc',
+    'load_unload_unittests.cc',
+    'run_unittests.cc',
+    cpp_args: [
+        f'-DLIBDHCP_HA_SO="@TOP_BUILD_DIR@/src/hooks/dhcp/high_availability/libdhcp_ha.so"',
+    ],
+    dependencies: [gtest, crypto],
+    include_directories: [include_directories('.')] + INCLUDES + HOOK_INCLUDES,
+    link_with: LIBS_BUILT_SO_FAR,
+)
+test('dhcp_ha_libload_tests', dhcp_ha_libload_tests, protocol: 'gtest')
index 6f64bfa279a672f31f2113289835076badd8ba05..d95fbe895d7383694d90ced8e3bebdd161fcf616 100644 (file)
@@ -1,5 +1,5 @@
-dhcp_high_availability_lib = library(
-    'dhcp_high_availability',
+dhcp_ha_lib = shared_library(
+    'dhcp_ha',
     'command_creator.cc',
     'communication_state.cc',
     'ha_callouts.cc',
@@ -21,3 +21,10 @@ dhcp_high_availability_lib = library(
     link_with: LIBS_BUILT_SO_FAR,
     name_suffix: 'so',
 )
+dhcp_ha_archive = static_library(
+    'dhcp_ha',
+    objects: dhcp_ha_lib.extract_all_objects(recursive: false),
+    link_with: LIBS_BUILT_SO_FAR,
+)
+subdir('libloadtests')
+subdir('tests')
diff --git a/src/hooks/dhcp/high_availability/tests/meson.build b/src/hooks/dhcp/high_availability/tests/meson.build
new file mode 100644 (file)
index 0000000..03e598b
--- /dev/null
@@ -0,0 +1,34 @@
+if not gtest.found()
+    subdir_done()
+endif
+
+HOOK_INCLUDES = [include_directories('..')]
+dhcp_ha_lib_tests = executable(
+    'dhcp-ha-lib-tests',
+    'command_creator_unittest.cc',
+    'communication_state_unittest.cc',
+    'ha_config_unittest.cc',
+    'ha_impl_unittest.cc',
+    'ha_mt_unittest.cc',
+    'ha_relationship_mapper_unittest.cc',
+    'ha_service_unittest.cc',
+    'ha_test.cc',
+    'lease_sync_filter_unittest.cc',
+    'lease_update_backlog_unittest.cc',
+    'query_filter_unittest.cc',
+    'run_unittests.cc',
+    cpp_args: [
+        f'-DLIBDHCP_HA_SO="@TOP_BUILD_DIR@/src/hooks/dhcp/high_availability/libdhcp_ha.so"',
+        f'-DTEST_CA_DIR="@TEST_CA_DIR@"',
+        f'-DTEST_HTTP_DIR="@TOP_SOURCE_DIR@/src/lib/http/tests/testdata"',
+    ],
+    dependencies: [gtest, crypto],
+    include_directories: [include_directories('.')] + INCLUDES + HOOK_INCLUDES,
+    link_with: [dhcp_ha_archive] + [kea_testutils_lib] + LIBS_BUILT_SO_FAR,
+)
+test(
+    'dhcp_ha_lib_tests',
+    dhcp_ha_lib_tests,
+    protocol: 'gtest',
+    is_parallel: false,
+)
diff --git a/src/hooks/dhcp/lease_cmds/libloadtests/meson.build b/src/hooks/dhcp/lease_cmds/libloadtests/meson.build
new file mode 100644 (file)
index 0000000..8b85851
--- /dev/null
@@ -0,0 +1,21 @@
+if not gtest.found()
+    subdir_done()
+endif
+
+HOOK_INCLUDES = [include_directories('..')]
+dhcp_lease_cmds_libload_tests = executable(
+    'dhcp-lease-cmds-libload-tests',
+    'load_unload_unittests.cc',
+    'run_unittests.cc',
+    cpp_args: [
+        f'-DLIBDHCP_LEASE_CMDS_SO="@TOP_BUILD_DIR@/src/hooks/dhcp/lease_cmds/libdhcp_lease_cmds.so"',
+    ],
+    dependencies: [gtest, crypto],
+    include_directories: [include_directories('.')] + INCLUDES + HOOK_INCLUDES,
+    link_with: LIBS_BUILT_SO_FAR,
+)
+test(
+    'dhcp_lease_cmds_libload_tests',
+    dhcp_lease_cmds_libload_tests,
+    protocol: 'gtest',
+)
index 4c72e45b5dad1a170199f12d128a1575852b6dad..2a8a2f42508b22886f4d5c3cd2688c99b8c485f2 100644 (file)
@@ -1,4 +1,4 @@
-dhcp_lease_cmds_lib = library(
+dhcp_lease_cmds_lib = shared_library(
     'dhcp_lease_cmds',
     'lease_cmds.cc',
     'lease_cmds_callouts.cc',
@@ -13,3 +13,10 @@ dhcp_lease_cmds_lib = library(
     link_with: LIBS_BUILT_SO_FAR,
     name_suffix: 'so',
 )
+dhcp_lease_cmds_archive = static_library(
+    'dhcp_lease_cmds',
+    objects: dhcp_lease_cmds_lib.extract_all_objects(recursive: false),
+    link_with: LIBS_BUILT_SO_FAR,
+)
+subdir('libloadtests')
+subdir('tests')
diff --git a/src/hooks/dhcp/lease_cmds/tests/meson.build b/src/hooks/dhcp/lease_cmds/tests/meson.build
new file mode 100644 (file)
index 0000000..8e82d68
--- /dev/null
@@ -0,0 +1,19 @@
+if not gtest.found()
+    subdir_done()
+endif
+
+HOOK_INCLUDES = [include_directories('..')]
+dhcp_lease_cmds_lib_tests = executable(
+    'dhcp-lease-cmds-lib-tests',
+    'lease_cmds4_unittest.cc',
+    'lease_cmds6_unittest.cc',
+    'lease_cmds_unittest.cc',
+    'run_unittests.cc',
+    cpp_args: [
+        f'-DLEASE_CMDS_LIB_SO="@TOP_BUILD_DIR@/src/hooks/dhcp/lease_cmds/libdhcp_lease_cmds.so"',
+    ],
+    dependencies: [gtest, crypto],
+    include_directories: [include_directories('.')] + INCLUDES + HOOK_INCLUDES,
+    link_with: [dhcp_lease_cmds_archive] + LIBS_BUILT_SO_FAR,
+)
+test('dhcp_lease_cmds_lib_tests', dhcp_lease_cmds_lib_tests, protocol: 'gtest')
diff --git a/src/hooks/dhcp/mysql/libloadtests/meson.build b/src/hooks/dhcp/mysql/libloadtests/meson.build
new file mode 100644 (file)
index 0000000..ce7ae11
--- /dev/null
@@ -0,0 +1,17 @@
+if not gtest.found()
+    subdir_done()
+endif
+
+HOOK_INCLUDES = [include_directories('..')]
+dhcp_mysql_libload_tests = executable(
+    'dhcp-mysql-libload-tests',
+    'load_unload_unittests.cc',
+    'run_unittests.cc',
+    cpp_args: [
+        f'-DLIBDHCP_MYSQL_SO="@TOP_BUILD_DIR@/src/hooks/dhcp/mysql/libdhcp_mysql.so"',
+    ],
+    dependencies: [gtest, crypto],
+    include_directories: [include_directories('.')] + INCLUDES + HOOK_INCLUDES,
+    link_with: LIBS_BUILT_SO_FAR,
+)
+test('dhcp_mysql_libload_tests', dhcp_mysql_libload_tests, protocol: 'gtest')
index 96550fe9c1ffa228c325302e3f0fca1ccddcdb56..fb994a2cdbac1d8a219fa4ca86f71433b06d31ce 100644 (file)
@@ -2,7 +2,7 @@ if not mysql.found()
     subdir_done()
 endif
 
-dhcp_mysql_lib = library(
+dhcp_mysql_lib = shared_library(
     'dhcp_mysql',
     'mysql_callouts.cc',
     'mysql_cb_dhcp4.cc',
@@ -24,3 +24,10 @@ dhcp_mysql_lib = library(
     link_with: LIBS_BUILT_SO_FAR,
     name_suffix: 'so',
 )
+dhcp_mysql_archive = static_library(
+    'dhcp_mysql',
+    objects: dhcp_mysql_lib.extract_all_objects(recursive: false),
+    link_with: LIBS_BUILT_SO_FAR,
+)
+subdir('libloadtests')
+subdir('tests')
diff --git a/src/hooks/dhcp/mysql/tests/meson.build b/src/hooks/dhcp/mysql/tests/meson.build
new file mode 100644 (file)
index 0000000..29e01ed
--- /dev/null
@@ -0,0 +1,28 @@
+if not gtest.found()
+    subdir_done()
+endif
+
+HOOK_INCLUDES = [include_directories('..')]
+libs_testutils = [kea_dhcpsrv_testutils_lib, kea_mysql_testutils_lib]
+dhcp_mysql_lib_tests = executable(
+    'dhcp-mysql-lib-tests',
+    'mysql_bootp_unittest.cc',
+    'mysql_cb_dhcp4_mgr_unittest.cc',
+    'mysql_cb_dhcp4_unittest.cc',
+    'mysql_cb_dhcp6_mgr_unittest.cc',
+    'mysql_cb_dhcp6_unittest.cc',
+    'mysql_cb_impl_unittest.cc',
+    'mysql_host_data_source_unittest.cc',
+    'mysql_lease_extended_info_unittest.cc',
+    'mysql_lease_mgr_unittest.cc',
+    'run_unittests.cc',
+    dependencies: [gtest, crypto, mysql],
+    include_directories: [include_directories('.')] + INCLUDES + HOOK_INCLUDES,
+    link_with: [dhcp_mysql_archive] + libs_testutils + LIBS_BUILT_SO_FAR,
+)
+test(
+    'dhcp_mysql_lib_tests',
+    dhcp_mysql_lib_tests,
+    protocol: 'gtest',
+    is_parallel: false,
+)
diff --git a/src/hooks/dhcp/perfmon/libloadtests/meson.build b/src/hooks/dhcp/perfmon/libloadtests/meson.build
new file mode 100644 (file)
index 0000000..70c6033
--- /dev/null
@@ -0,0 +1,17 @@
+if not gtest.found()
+    subdir_done()
+endif
+
+HOOK_INCLUDES = [include_directories('..')]
+dhcp_perfmon_libload_tests = executable(
+    'dhcp-perfmon-libload-tests',
+    'load_unload_unittests.cc',
+    'run_unittests.cc',
+    cpp_args: [
+        f'-DLIBDHCP_PERFMON_SO="@TOP_BUILD_DIR@/src/hooks/dhcp/perfmon/libdhcp_perfmon.so"',
+    ],
+    dependencies: [gtest, crypto],
+    include_directories: [include_directories('.')] + INCLUDES + HOOK_INCLUDES,
+    link_with: LIBS_BUILT_SO_FAR,
+)
+test('dhcp_perfmon_libload_tests', dhcp_perfmon_libload_tests, protocol: 'gtest')
index 2a88bb15a3e135f6b125dd03fa43ddd4b1e4ec93..255a208db6b83365dee27e7bab6be57c7595b490 100644 (file)
@@ -1,4 +1,4 @@
-dhcp_perfmon_lib = library(
+dhcp_perfmon_lib = shared_library(
     'dhcp_perfmon',
     'alarm.cc',
     'alarm_store.cc',
@@ -17,3 +17,10 @@ dhcp_perfmon_lib = library(
     link_with: LIBS_BUILT_SO_FAR,
     name_suffix: 'so',
 )
+dhcp_perfmon_archive = static_library(
+    'dhcp_perfmon',
+    objects: dhcp_perfmon_lib.extract_all_objects(recursive: false),
+    link_with: LIBS_BUILT_SO_FAR,
+)
+subdir('libloadtests')
+subdir('tests')
diff --git a/src/hooks/dhcp/perfmon/tests/meson.build b/src/hooks/dhcp/perfmon/tests/meson.build
new file mode 100644 (file)
index 0000000..4b89583
--- /dev/null
@@ -0,0 +1,23 @@
+if not gtest.found()
+    subdir_done()
+endif
+
+HOOK_INCLUDES = [include_directories('..')]
+dhcp_perfmon_lib_tests = executable(
+    'dhcp-perfmon-lib-tests',
+    'alarm_parser_unittests.cc',
+    'alarm_unittests.cc',
+    'duration_key_parser_unittests.cc',
+    'monitored_duration_unittests.cc',
+    'perfmon_cmds_unittests.cc',
+    'perfmon_config_unittests.cc',
+    'perfmon_mgr_unittests.cc',
+    'run_unittests.cc',
+    cpp_args: [
+        f'-DPERFMON_LIB_SO="@TOP_BUILD_DIR@/src/hooks/dhcp/perfmon/libdhcp_perfmon.so"',
+    ],
+    dependencies: [gtest, crypto],
+    include_directories: [include_directories('.')] + INCLUDES + HOOK_INCLUDES,
+    link_with: [dhcp_perfmon_archive] + [kea_testutils_lib] + LIBS_BUILT_SO_FAR,
+)
+test('dhcp_perfmon_lib_tests', dhcp_perfmon_lib_tests, protocol: 'gtest')
diff --git a/src/hooks/dhcp/pgsql/libloadtests/meson.build b/src/hooks/dhcp/pgsql/libloadtests/meson.build
new file mode 100644 (file)
index 0000000..060bbe3
--- /dev/null
@@ -0,0 +1,17 @@
+if not gtest.found()
+    subdir_done()
+endif
+
+HOOK_INCLUDES = [include_directories('..')]
+dhcp_pgsql_libload_tests = executable(
+    'dhcp-pgsql-libload-tests',
+    'load_unload_unittests.cc',
+    'run_unittests.cc',
+    cpp_args: [
+        f'-DLIBDHCP_PGSQL_SO="@TOP_BUILD_DIR@/src/hooks/dhcp/pgsql/libdhcp_pgsql.so"',
+    ],
+    dependencies: [gtest, crypto],
+    include_directories: [include_directories('.')] + INCLUDES + HOOK_INCLUDES,
+    link_with: LIBS_BUILT_SO_FAR,
+)
+test('dhcp_pgsql_libload_tests', dhcp_pgsql_libload_tests, protocol: 'gtest')
index 4a37c10aa69d18c278c52df9dc2408f4b76ab3b9..2d040a9ab76bed291c5b819270d9ed338a9b61a1 100644 (file)
@@ -2,7 +2,7 @@ if not postgresql.found()
     subdir_done()
 endif
 
-dhcp_pgsql_lib = library(
+dhcp_pgsql_lib = shared_library(
     'dhcp_pgsql',
     'pgsql_callouts.cc',
     'pgsql_cb_dhcp4.cc',
@@ -24,3 +24,10 @@ dhcp_pgsql_lib = library(
     link_with: LIBS_BUILT_SO_FAR,
     name_suffix: 'so',
 )
+dhcp_pgsql_archive = static_library(
+    'dhcp_pgsql',
+    objects: dhcp_pgsql_lib.extract_all_objects(recursive: false),
+    link_with: LIBS_BUILT_SO_FAR,
+)
+subdir('libloadtests')
+subdir('tests')
diff --git a/src/hooks/dhcp/pgsql/tests/meson.build b/src/hooks/dhcp/pgsql/tests/meson.build
new file mode 100644 (file)
index 0000000..835823b
--- /dev/null
@@ -0,0 +1,28 @@
+if not gtest.found()
+    subdir_done()
+endif
+
+HOOK_INCLUDES = [include_directories('..')]
+libs_testutils = [kea_dhcpsrv_testutils_lib, kea_pgsql_testutils_lib]
+dhcp_pgsql_lib_tests = executable(
+    'dhcp-pgsql-lib-tests',
+    'pgsql_bootp_unittest.cc',
+    'pgsql_cb_dhcp4_mgr_unittest.cc',
+    'pgsql_cb_dhcp4_unittest.cc',
+    'pgsql_cb_dhcp6_mgr_unittest.cc',
+    'pgsql_cb_dhcp6_unittest.cc',
+    'pgsql_cb_impl_unittest.cc',
+    'pgsql_host_data_source_unittest.cc',
+    'pgsql_lease_extended_info_unittest.cc',
+    'pgsql_lease_mgr_unittest.cc',
+    'run_unittests.cc',
+    dependencies: [gtest, crypto, postgresql],
+    include_directories: [include_directories('.')] + INCLUDES + HOOK_INCLUDES,
+    link_with: [dhcp_pgsql_archive] + libs_testutils + LIBS_BUILT_SO_FAR,
+)
+test(
+    'dhcp_pgsql_lib_tests',
+    dhcp_pgsql_lib_tests,
+    protocol: 'gtest',
+    is_parallel: false,
+)
diff --git a/src/hooks/dhcp/run_script/libloadtests/meson.build b/src/hooks/dhcp/run_script/libloadtests/meson.build
new file mode 100644 (file)
index 0000000..e4061e7
--- /dev/null
@@ -0,0 +1,22 @@
+if not gtest.found()
+    subdir_done()
+endif
+
+HOOK_INCLUDES = [include_directories('..')]
+dhcp_run_script_libload_tests = executable(
+    'dhcp-run-script-libload-tests',
+    'load_unload_unittests.cc',
+    'run_unittests.cc',
+    cpp_args: [
+        f'-DLIBRUN_SCRIPT_SO="@TOP_BUILD_DIR@/src/hooks/dhcp/run_script/libdhcp_run_script.so"',
+        f'-DRUN_SCRIPT_TEST_SH="@TOP_BUILD_DIR@/src/hooks/dhcp/run_script/tests/run_script_test.sh"',
+    ],
+    dependencies: [gtest, crypto],
+    include_directories: [include_directories('.')] + INCLUDES + HOOK_INCLUDES,
+    link_with: LIBS_BUILT_SO_FAR,
+)
+test(
+    'dhcp_run_script_libload_tests',
+    dhcp_run_script_libload_tests,
+    protocol: 'gtest',
+)
index 9d23d27d0922168b7ff415d8320dbcf2c1a16717..defb19cc6f1d70690fc7d70b89cd035499149452 100644 (file)
@@ -1,4 +1,4 @@
-dhcp_run_script_lib = library(
+dhcp_run_script_lib = shared_library(
     'dhcp_run_script',
     'run_script.cc',
     'run_script_callouts.cc',
@@ -12,3 +12,11 @@ dhcp_run_script_lib = library(
     link_with: LIBS_BUILT_SO_FAR,
     name_suffix: 'so',
 )
+dhcp_run_script_archive = static_library(
+    'dhcp_run_script',
+    objects: dhcp_run_script_lib.extract_all_objects(recursive: false),
+    link_with: LIBS_BUILT_SO_FAR,
+)
+# Do tests first
+subdir('tests')
+subdir('libloadtests')
diff --git a/src/hooks/dhcp/run_script/tests/meson.build b/src/hooks/dhcp/run_script/tests/meson.build
new file mode 100644 (file)
index 0000000..cc9daf6
--- /dev/null
@@ -0,0 +1,28 @@
+if not gtest.found()
+    subdir_done()
+endif
+
+run_script_test_conf_data = configuration_data()
+run_script_test_conf_data.set('abs_top_builddir', TOP_BUILD_DIR)
+configure_file(
+    input: 'run_script_test.sh.in',
+    output: 'run_script_test.sh',
+    configuration: run_script_test_conf_data,
+)
+
+CURRENT_BUILD_DIR = meson.current_build_dir()
+HOOK_INCLUDES = [include_directories('..')]
+dhcp_run_script_lib_tests = executable(
+    'dhcp-run-script-lib-tests',
+    'run_script_unittests.cc',
+    'run_unittests.cc',
+    cpp_args: [
+        f'-DRUN_SCRIPT_LIB_SO="@TOP_BUILD_DIR@/src/hooks/dhcp/run_script/libdhcp_run_script.so"',
+        f'-DTEST_LOG_FILE="@CURRENT_BUILD_DIR@/test.log"',
+        f'-DRUN_SCRIPT_TEST_SH="@CURRENT_BUILD_DIR@/run_script_test.sh"',
+    ],
+    dependencies: [gtest, crypto],
+    include_directories: [include_directories('.')] + INCLUDES + HOOK_INCLUDES,
+    link_with: [dhcp_run_script_archive] + LIBS_BUILT_SO_FAR,
+)
+test('dhcp_run_script_lib_tests', dhcp_run_script_lib_tests, protocol: 'gtest')
diff --git a/src/hooks/dhcp/stat_cmds/libloadtests/meson.build b/src/hooks/dhcp/stat_cmds/libloadtests/meson.build
new file mode 100644 (file)
index 0000000..9f3b282
--- /dev/null
@@ -0,0 +1,21 @@
+if not gtest.found()
+    subdir_done()
+endif
+
+HOOK_INCLUDES = [include_directories('..')]
+dhcp_stat_cmds_libload_tests = executable(
+    'dhcp-stat-cmds-libload-tests',
+    'load_unload_unittests.cc',
+    'run_unittests.cc',
+    cpp_args: [
+        f'-DLIBDHCP_STAT_CMDS_SO="@TOP_BUILD_DIR@/src/hooks/dhcp/stat_cmds/libdhcp_stat_cmds.so"',
+    ],
+    dependencies: [gtest, crypto],
+    include_directories: [include_directories('.')] + INCLUDES + HOOK_INCLUDES,
+    link_with: LIBS_BUILT_SO_FAR,
+)
+test(
+    'dhcp_stat_cmds_libload_tests',
+    dhcp_stat_cmds_libload_tests,
+    protocol: 'gtest',
+)
index fcada06574b2e4e47c257f14d1f8db43f5f7f764..1b61f5fc6be228ba5c325716c4c005e0682e1bac 100644 (file)
@@ -1,4 +1,4 @@
-dhcp_stat_cmds_lib = library(
+dhcp_stat_cmds_lib = shared_library(
     'dhcp_stat_cmds',
     'stat_cmds.cc',
     'stat_cmds_callouts.cc',
@@ -12,3 +12,10 @@ dhcp_stat_cmds_lib = library(
     link_with: LIBS_BUILT_SO_FAR,
     name_suffix: 'so',
 )
+dhcp_stat_cmds_archive = static_library(
+    'dhcp_stat_cmds',
+    objects: dhcp_stat_cmds_lib.extract_all_objects(recursive: false),
+    link_with: LIBS_BUILT_SO_FAR,
+)
+subdir('libloadtests')
+subdir('tests')
diff --git a/src/hooks/dhcp/stat_cmds/tests/meson.build b/src/hooks/dhcp/stat_cmds/tests/meson.build
new file mode 100644 (file)
index 0000000..546471d
--- /dev/null
@@ -0,0 +1,17 @@
+if not gtest.found()
+    subdir_done()
+endif
+
+HOOK_INCLUDES = [include_directories('..')]
+dhcp_stat_cmds_lib_tests = executable(
+    'dhcp-stat-cmds-lib-tests',
+    'run_unittests.cc',
+    'stat_cmds_unittest.cc',
+    cpp_args: [
+        f'-DSTAT_CMDS_LIB_SO="@TOP_BUILD_DIR@/src/hooks/dhcp/stat_cmds/libdhcp_stat_cmds.so"',
+    ],
+    dependencies: [gtest, crypto],
+    include_directories: [include_directories('.')] + INCLUDES + HOOK_INCLUDES,
+    link_with: [dhcp_stat_cmds_archive] + LIBS_BUILT_SO_FAR,
+)
+test('dhcp_stat_cmds_lib_tests', dhcp_stat_cmds_lib_tests, protocol: 'gtest')
index 60160b8f8e559901beb278472ca5313328e8a011..a30f722ed310eba447b212a59188cae667a60220 100644 (file)
@@ -1,4 +1,5 @@
-dhcp_user_chk_lib = library(
+# Not install it
+dhcp_user_chk_lib = shared_library(
     'dhcp_user_chk',
     'load_unload.cc',
     'pkt_receive_co.cc',
@@ -12,8 +13,14 @@ dhcp_user_chk_lib = library(
     'version.cc',
     dependencies: [boost],
     include_directories: [include_directories('.')] + INCLUDES,
-    install: true,
+    install: false,
     install_dir: 'lib/kea/hooks',
     link_with: LIBS_BUILT_SO_FAR,
     name_suffix: 'so',
 )
+dhcp_user_chk_archive = static_library(
+    'dhcp_user_chk',
+    objects: dhcp_user_chk_lib.extract_all_objects(recursive: false),
+    link_with: LIBS_BUILT_SO_FAR,
+)
+subdir('tests')
diff --git a/src/hooks/dhcp/user_chk/tests/meson.build b/src/hooks/dhcp/user_chk/tests/meson.build
new file mode 100644 (file)
index 0000000..00fbf1d
--- /dev/null
@@ -0,0 +1,27 @@
+if not gtest.found()
+    subdir_done()
+endif
+
+dhcp_user_chk_config_data = configuration_data()
+dhcp_user_chk_config_data.set('abs_top_srcdir', TOP_SOURCE_DIR)
+configure_file(
+    input: 'test_data_files_config.h.in',
+    output: 'test_data_files_config.h',
+    configuration: dhcp_user_chk_config_data,
+)
+
+HOOK_INCLUDES = [include_directories('..')]
+CURRENT_BUILD_DIR = meson.current_build_dir()
+dhcp_user_chk_lib_tests = executable(
+    'dhcp-user-chk-lib-tests',
+    'run_unittests.cc',
+    'user_file_unittests.cc',
+    'user_registry_unittests.cc',
+    'user_unittests.cc',
+    'userid_unittests.cc',
+    cpp_args: [f'-DTEST_DATA_BUILDDIR="@CURRENT_SOURCE_DIR@"'],
+    dependencies: [gtest],
+    include_directories: [include_directories('.')] + INCLUDES + HOOK_INCLUDES,
+    link_with: [dhcp_user_chk_archive] + LIBS_BUILT_SO_FAR,
+)
+test('dhcp_user_chk_lib_tests', dhcp_user_chk_lib_tests, protocol: 'gtest')