From d554e7a29de802ef475bd7ba7120bc1d4e6dc2f1 Mon Sep 17 00:00:00 2001 From: Francis Dupont Date: Wed, 5 Feb 2025 12:32:14 +0100 Subject: [PATCH] [#3729] Added remaining lib tests --- meson.build | 1 + src/lib/d2srv/meson.build | 2 + src/lib/d2srv/tests/meson.build | 18 ++++ src/lib/d2srv/testutils/meson.build | 12 +++ src/lib/dhcpsrv/meson.build | 4 +- src/lib/dhcpsrv/tests/meson.build | 106 +++++++++++++++++++ src/lib/dhcpsrv/tests/test_kea_lfc_env.sh.in | 0 src/lib/dhcpsrv/testutils/meson.build | 39 +++++++ src/lib/hooks/meson.build | 2 +- src/lib/process/cfgrpt/meson.build | 1 + src/lib/process/cfgrpt/tests/meson.build | 13 +++ src/lib/process/meson.build | 2 + src/lib/process/tests/meson.build | 33 ++++++ src/lib/process/testutils/meson.build | 12 +++ 14 files changed, 243 insertions(+), 2 deletions(-) create mode 100644 src/lib/d2srv/tests/meson.build create mode 100644 src/lib/d2srv/testutils/meson.build create mode 100644 src/lib/dhcpsrv/tests/meson.build mode change 100644 => 100755 src/lib/dhcpsrv/tests/test_kea_lfc_env.sh.in create mode 100644 src/lib/dhcpsrv/testutils/meson.build create mode 100644 src/lib/process/cfgrpt/tests/meson.build create mode 100644 src/lib/process/tests/meson.build create mode 100644 src/lib/process/testutils/meson.build diff --git a/meson.build b/meson.build index c6b4a174e8..14cfb33e5d 100644 --- a/meson.build +++ b/meson.build @@ -23,6 +23,7 @@ DATABASE_SCRIPTS_DIR = f'@TOP_BUILD_DIR@/src/share/database/scripts' RUN_STATE_DIR = get_option('localstatedir') PREFIX = get_option('prefix') DHCP_DATA_DIR = f'@PREFIX@/@RUN_STATE_DIR@/run/kea' +DEFAULT_HOOKS_PATH = f'@PREFIX@/lib/kea/hooks' # TODO: Control it via a build option. FUZZING_IN_CI = false diff --git a/src/lib/d2srv/meson.build b/src/lib/d2srv/meson.build index 831380e6d3..a436c8f97b 100644 --- a/src/lib/d2srv/meson.build +++ b/src/lib/d2srv/meson.build @@ -18,6 +18,8 @@ kea_d2srv_lib = library( link_with: LIBS_BUILT_SO_FAR, ) LIBS_BUILT_SO_FAR = [kea_d2srv_lib] + LIBS_BUILT_SO_FAR +subdir('testutils') +subdir('tests') kea_d2srv_headers = [ 'd2_cfg_mgr.h', 'd2_config.h', diff --git a/src/lib/d2srv/tests/meson.build b/src/lib/d2srv/tests/meson.build new file mode 100644 index 0000000000..ae6d8e32ae --- /dev/null +++ b/src/lib/d2srv/tests/meson.build @@ -0,0 +1,18 @@ +if not gtest.found() + subdir_done() +endif + +libs_testutils = [kea_d2srv_testutils_lib, kea_testutils_lib] +kea_d2srv_tests = executable( + 'kea-d2srv-tests', + 'run_unittests.cc', + 'd2_tsig_key_unittest.cc', + 'd2_update_message_unittests.cc', + 'd2_zone_unittests.cc', + 'dns_client_unittests.cc', + 'nc_trans_unittests.cc', + dependencies: [boost, crypto, gtest], + include_directories: [include_directories('.')] + INCLUDES, + link_with: [kea_util_unittests_lib] + libs_testutils + LIBS_BUILT_SO_FAR, +) +test('kea_d2srv_tests', kea_d2srv_tests, protocol: 'gtest') diff --git a/src/lib/d2srv/testutils/meson.build b/src/lib/d2srv/testutils/meson.build new file mode 100644 index 0000000000..ded563d1c3 --- /dev/null +++ b/src/lib/d2srv/testutils/meson.build @@ -0,0 +1,12 @@ +if not gtest.found() + subdir_done() +endif + +kea_d2srv_testutils_lib = static_library( + 'kea-d2srv-testutils', + 'nc_test_utils.cc', + 'stats_test_utils.cc', + dependencies: [boost], + include_directories: [include_directories('.')] + INCLUDES, + link_with: LIBS_BUILT_SO_FAR, +) diff --git a/src/lib/dhcpsrv/meson.build b/src/lib/dhcpsrv/meson.build index 96599c582d..647ad7ee7c 100644 --- a/src/lib/dhcpsrv/meson.build +++ b/src/lib/dhcpsrv/meson.build @@ -89,13 +89,15 @@ kea_dhcpsrv_lib = library( f'-DDHCP_DATA_DIR="@DHCP_DATA_DIR@"', f'-DKEA_LFC_EXECUTABLE="@KEA_LFC@"', ], - dependencies: [crypto], + dependencies: [boost, crypto, threads], include_directories: [include_directories('.')] + INCLUDES, install: true, install_dir: 'lib', link_with: LIBS_BUILT_SO_FAR, ) LIBS_BUILT_SO_FAR = [kea_dhcpsrv_lib] + LIBS_BUILT_SO_FAR +subdir('testutils') +subdir('tests') kea_dhcpsrv_headers = [ 'alloc_engine.h', 'alloc_engine_log.h', diff --git a/src/lib/dhcpsrv/tests/meson.build b/src/lib/dhcpsrv/tests/meson.build new file mode 100644 index 0000000000..18a3f84ed8 --- /dev/null +++ b/src/lib/dhcpsrv/tests/meson.build @@ -0,0 +1,106 @@ +if not gtest.found() + subdir_done() +endif + +CURRENT_BUILD_DIR = meson.current_build_dir() +libs_testutils = [ + kea_dhcpsrv_testutils_lib, + kea_dhcp_testutils_lib, + kea_database_testutils_lib, + kea_testutils_lib, +] +configure_file( + input: 'test_kea_lfc_env.sh.in', + output: 'test_kea_lfc_env.sh', + copy: true, +) +kea_dhcpsrv_tests = executable( + 'kea-dhcpsrv-tests', + 'alloc_engine4_unittest.cc', + 'alloc_engine6_unittest.cc', + 'alloc_engine_expiration_unittest.cc', + 'alloc_engine_hooks_unittest.cc', + 'allocation_state_unittest.cc', + 'callout_handle_store_unittest.cc', + 'cb_ctl_dhcp_unittest.cc', + 'cfg_db_access_unittest.cc', + 'cfg_duid_unittest.cc', + 'cfg_expiration_unittest.cc', + 'cfg_host_operations_unittest.cc', + 'cfg_hosts_unittest.cc', + 'cfg_iface_unittest.cc', + 'cfg_mac_source_unittest.cc', + 'cfg_multi_threading_unittest.cc', + 'cfg_option_def_unittest.cc', + 'cfg_option_unittest.cc', + 'cfg_rsoo_unittest.cc', + 'cfg_shared_networks4_unittest.cc', + 'cfg_shared_networks6_unittest.cc', + 'cfg_subnets4_unittest.cc', + 'cfg_subnets6_unittest.cc', + 'cfgmgr_unittest.cc', + 'client_class_def_parser_unittest.cc', + 'client_class_def_unittest.cc', + 'csv_lease_file4_unittest.cc', + 'csv_lease_file6_unittest.cc', + 'd2_client_unittest.cc', + 'd2_udp_unittest.cc', + 'dhcp4o6_ipc_unittest.cc', + # 'dhcp_parsers_unittest.cc', + 'dhcp_queue_control_parser_unittest.cc', + 'duid_config_parser_unittest.cc', + 'expiration_config_parser_unittest.cc', + 'flq_allocation_state_unittest.cc', + 'flq_allocator_unittest.cc', + 'host_cache_unittest.cc', + 'host_data_source_factory_unittest.cc', + 'host_mgr_unittest.cc', + 'host_reservation_parser_unittest.cc', + 'host_reservations_list_parser_unittest.cc', + 'host_unittest.cc', + 'ifaces_config_parser_unittest.cc', + 'ip_range_permutation_unittest.cc', + 'ip_range_unittest.cc', + 'iterative_allocation_state_unittest.cc', + 'iterative_allocator_unittest.cc', + 'lease_file_loader_unittest.cc', + 'lease_mgr_factory_unittest.cc', + 'lease_mgr_unittest.cc', + 'lease_unittest.cc', + 'memfile_lease_extended_info_unittest.cc', + 'memfile_lease_limits_unittest.cc', + 'memfile_lease_mgr_unittest.cc', + 'multi_threading_config_parser_unittest.cc', + 'ncr_generator_unittest.cc', + 'network_state_unittest.cc', + 'network_unittest.cc', + 'pool_unittest.cc', + 'random_allocation_state_unittest.cc', + 'random_allocator_unittest.cc', + 'resource_handler_unittest.cc', + 'run_unittests.cc', + 'sanity_checks_unittest.cc', + 'shared_network_parser_unittest.cc', + 'shared_network_unittest.cc', + 'shared_networks_list_parser_unittest.cc', + 'srv_config_unittest.cc', + 'subnet_unittest.cc', + 'test_get_callout_handle.cc', + 'timer_mgr_unittest.cc', + 'tracking_lease_mgr_unittest.cc', + cpp_args: [ + f'-DTEST_DATA_BUILDDIR="@CURRENT_BUILD_DIR@"', + f'-DDHCP_DATA_DIR="@CURRENT_BUILD_DIR@"', + f'-DKEA_LFC_BUILD_DIR="@TOP_BUILD_DIR@/src/bin/lfc"', + f'-DDEFAULT_HOOKS_PATH="@DEFAULT_HOOKS_PATH@"', + ], + dependencies: [boost, gtest], + include_directories: [include_directories('.')] + INCLUDES, + link_with: [kea_util_unittests_lib] + libs_testutils + LIBS_BUILT_SO_FAR, +) +test( + 'kea_dhcpsrv_tests', + kea_dhcpsrv_tests, + protocol: 'gtest', + is_parallel: false, +) diff --git a/src/lib/dhcpsrv/tests/test_kea_lfc_env.sh.in b/src/lib/dhcpsrv/tests/test_kea_lfc_env.sh.in old mode 100644 new mode 100755 diff --git a/src/lib/dhcpsrv/testutils/meson.build b/src/lib/dhcpsrv/testutils/meson.build new file mode 100644 index 0000000000..380c5cd3d0 --- /dev/null +++ b/src/lib/dhcpsrv/testutils/meson.build @@ -0,0 +1,39 @@ +if not gtest.found() + subdir_done() +endif + +sources = [ + 'alloc_engine_utils.cc', + 'concrete_lease_mgr.cc', + 'config_result_check.cc', + 'dhcp4o6_test_ipc.cc', + 'generic_backend_unittest.cc', + 'generic_cb_dhcp4_unittest.cc', + 'generic_cb_dhcp6_unittest.cc', + 'generic_cb_recovery_unittest.cc', + 'generic_host_data_source_unittest.cc', + 'generic_lease_mgr_unittest.cc', + 'host_data_source_utils.cc', + 'lease_file_io.cc', + 'memory_host_data_source.cc', + 'test_config_backend_dhcp4.cc', + 'test_config_backend_dhcp6.cc', + 'test_utils.cc', +] +dependencies = [boost] +if mysql.found() + sources += ['mysql_generic_backend_unittest.cc'] + dependencies += [mysql] +endif +if postgresql.found() + sources += ['pgsql_generic_backend_unittest.cc'] + dependencies += [postgresql] +endif +kea_dhcpsrv_testutils_lib = static_library( + 'kea-dhcpsrv-testutils', + sources, + cpp_args: [f'-DDATABASE_SCRIPTS_DIR="@DATABASE_SCRIPTS_DIR@"'], + dependencies: dependencies, + include_directories: [include_directories('.')] + INCLUDES, + link_with: LIBS_BUILT_SO_FAR, +) diff --git a/src/lib/hooks/meson.build b/src/lib/hooks/meson.build index 3b1d0026aa..6019365284 100644 --- a/src/lib/hooks/meson.build +++ b/src/lib/hooks/meson.build @@ -13,7 +13,7 @@ kea_hooks_lib = library( 'library_manager.cc', 'library_manager_collection.cc', 'server_hooks.cc', - cpp_args: [f'-DDEFAULT_HOOKS_PATH="@TOP_BUILD_DIR@"'], + cpp_args: [f'-DDEFAULT_HOOKS_PATH="@DEFAULT_HOOKS_PATH@"'], dependencies: [boost], include_directories: [include_directories('.')] + INCLUDES, install: true, diff --git a/src/lib/process/cfgrpt/meson.build b/src/lib/process/cfgrpt/meson.build index 7e0a1a4108..25b7c49447 100644 --- a/src/lib/process/cfgrpt/meson.build +++ b/src/lib/process/cfgrpt/meson.build @@ -13,6 +13,7 @@ kea_cfgrpt_lib = library( link_with: LIBS_BUILT_SO_FAR, ) LIBS_BUILT_SO_FAR = [kea_cfgrpt_lib] + LIBS_BUILT_SO_FAR +subdir('tests') kea_cfgrpt_headers = ['config_report.h'] install_headers( kea_cfgrpt_headers, diff --git a/src/lib/process/cfgrpt/tests/meson.build b/src/lib/process/cfgrpt/tests/meson.build new file mode 100644 index 0000000000..a3a9f95d50 --- /dev/null +++ b/src/lib/process/cfgrpt/tests/meson.build @@ -0,0 +1,13 @@ +if not gtest.found() + subdir_done() +endif + +kea_process_cfgrpt_tests = executable( + 'kea-process-cfgrpt-tests', + # 'config_report_unittests.cc', + 'run_unittests.cc', + dependencies: [gtest], + include_directories: [include_directories('.')] + INCLUDES, + link_with: [kea_util_unittests_lib] + LIBS_BUILT_SO_FAR, +) +test('kea_process_cfgrpt_tests', kea_process_cfgrpt_tests, protocol: 'gtest') diff --git a/src/lib/process/meson.build b/src/lib/process/meson.build index 7f836d193f..45d60b22a0 100644 --- a/src/lib/process/meson.build +++ b/src/lib/process/meson.build @@ -20,6 +20,8 @@ kea_process_lib = library( link_with: LIBS_BUILT_SO_FAR, ) LIBS_BUILT_SO_FAR = [kea_process_lib] + LIBS_BUILT_SO_FAR +subdir('testutils') +subdir('tests') kea_process_headers = [ 'cb_ctl_base.h', 'config_base.h', diff --git a/src/lib/process/tests/meson.build b/src/lib/process/tests/meson.build new file mode 100644 index 0000000000..0e31034391 --- /dev/null +++ b/src/lib/process/tests/meson.build @@ -0,0 +1,33 @@ +if not gtest.found() + subdir_done() +endif + +CURRENT_BUILD_DIR = meson.current_build_dir() +libs_testutils = [kea_process_testutils_lib, kea_testutils_lib] +configure_file( + input: 'process_test.sh.in', + output: 'process_test.sh', + copy: true, +) +kea_process_tests = executable( + 'kea-process-tests', + 'cb_ctl_base_unittests.cc', + 'config_base_unittests.cc', + 'config_ctl_info_unittests.cc', + 'config_ctl_parser_unittests.cc', + 'd_cfg_mgr_unittests.cc', + 'd_controller_unittests.cc', + 'daemon_unittest.cc', + 'log_parser_unittests.cc', + 'logging_info_unittests.cc', + 'run_unittests.cc', + dependencies: [gtest], + cpp_args: [ + f'-DTEST_DATA_BUILDDIR="@CURRENT_BUILD_DIR@"', + f'-DTEST_SCRIPT_SH="@CURRENT_BUILD_DIR@/process_test.sh"', + f'-DDATA_DIR="@DHCP_DATA_DIR@"', + ], + include_directories: [include_directories('.')] + INCLUDES, + link_with: [kea_util_unittests_lib] + libs_testutils + LIBS_BUILT_SO_FAR, +) +test('kea_process_tests', kea_process_tests, protocol: 'gtest') diff --git a/src/lib/process/testutils/meson.build b/src/lib/process/testutils/meson.build new file mode 100644 index 0000000000..ae115ea1e2 --- /dev/null +++ b/src/lib/process/testutils/meson.build @@ -0,0 +1,12 @@ +if not gtest.found() + subdir_done() +endif + +kea_process_testutils_lib = static_library( + 'kea-process-testutils', + 'd_test_stubs.cc', + cpp_args: [f'-DDATABASE_SCRIPTS_DIR="@DATABASE_SCRIPTS_DIR@"'], + dependencies: [boost], + include_directories: [include_directories('.')] + INCLUDES, + link_with: LIBS_BUILT_SO_FAR, +) -- 2.47.3