3105 lines
116 KiB
Meson
3105 lines
116 KiB
Meson
#!Meson configure - time test discovery without fs.glob / subdir_glob
|
||
|
||
gtest_dep = dependency('gtest', required: false)
|
||
gmock_dep = dependency('gmock', required: false)
|
||
|
||
gtest_compile_dep = []
|
||
if gtest_dep.found()
|
||
gtest_compile_dep = gtest_dep.partial_dependency(compile_args: true, includes: true)
|
||
endif
|
||
gmock_compile_deps = []
|
||
gmock_link_deps = []
|
||
if gmock_dep.found()
|
||
gmock_compile_deps += [gmock_dep.partial_dependency(compile_args: true, includes: true)]
|
||
gmock_link_deps += [gmock_dep]
|
||
endif
|
||
|
||
#Catch2 dependency for modern test framework(PBI - 050)
|
||
#Prefer system installs, but fall back to Meson wrap subproject when available.
|
||
catch2_dep = dependency('catch2', required: false, fallback: ['catch2', 'catch2_dep'])
|
||
catch2_main_dep = dependency('catch2-with-main', required: false, fallback: ['catch2', 'catch2_with_main_dep'])
|
||
|
||
#Get Catch2 partial dependency with includes for test builds
|
||
catch2_compile_dep = []
|
||
if catch2_dep.found()
|
||
catch2_compile_dep = [catch2_dep.partial_dependency(compile_args: true, includes: true)]
|
||
endif
|
||
|
||
#Trailing link deps for Catch2 tests - ensure spdlog / fmt symbols are available
|
||
#after Catch2 libs(static link order matters : users before providers)
|
||
catch2_trailing_link_deps = [
|
||
dependency('spdlog'),
|
||
dependency('fmt', required: false),
|
||
]
|
||
|
||
catch2_incs = []
|
||
|
||
#TSAN suppressions file for tests(if TSAN is enabled)
|
||
#Must be defined early before subdirs are included
|
||
_tsan_suppressions_file = meson.project_source_root() / 'tsan.suppressions'
|
||
_test_tsan_options = 'suppressions=' + _tsan_suppressions_file
|
||
|
||
fs = import('fs')
|
||
cli11_dep = cli11_resolved_dep
|
||
if not cli11_dep.found()
|
||
cli11_dep = declare_dependency()
|
||
endif
|
||
|
||
#Common dependencies for tests; mirror CLI breadth to cover includes
|
||
test_deps = [
|
||
dependency('spdlog'),
|
||
dependency('nlohmann_json'),
|
||
dependency('sqlite3'),
|
||
dependency('OpenSSL'),
|
||
|
||
cli11_dep,
|
||
dependency('boost', required: true),
|
||
dependency('libcurl', required: false),
|
||
dependency('zlib'),
|
||
dependency('fmt', required: false),
|
||
dependency('yams_core'),
|
||
dependency('yams_config'),
|
||
dependency('yams_crypto'),
|
||
dependency('yams_chunking'),
|
||
dependency('yams_compression'),
|
||
dependency('yams_storage_engine'),
|
||
dependency('yams_reference_counter'),
|
||
dependency('yams_manifest'),
|
||
dependency('yams_integrity'),
|
||
dependency('yams_metadata'),
|
||
dependency('yams_extraction'),
|
||
dependency('yams_detection'),
|
||
dependency('yams_content'),
|
||
dependency('yams_downloader'),
|
||
dependency('yams_indexing'),
|
||
dependency('yams_vector'),
|
||
dependency('yams_search'),
|
||
dependency('yams_api'),
|
||
dependency('yams_repair'),
|
||
dependency('yams_app_services'),
|
||
dependency('yams_daemon_client'),
|
||
dependency('yams_daemon'),
|
||
]
|
||
|
||
yams_plugins_mgmt_dep = dependency('yams_plugins_mgmt', required: false)
|
||
if yams_plugins_mgmt_dep.found()
|
||
test_deps += yams_plugins_mgmt_dep
|
||
endif
|
||
|
||
yams_mcp_dep = dependency('yams_mcp', required: false)
|
||
if yams_mcp_dep.found()
|
||
test_deps += yams_mcp_dep
|
||
endif
|
||
|
||
onnxruntime_dep_opt = onnxruntime_resolved_dep
|
||
if onnxruntime_dep_opt.found()
|
||
test_deps += onnxruntime_dep_opt
|
||
endif
|
||
|
||
#Windows : stage runtime DLLs next to every test executable(mirrors Windows install).
|
||
#Placing DLLs alongside the test binaries prevents the loader from falling back to
|
||
#older System32 copies(e.g., onnxruntime.dll API 17) and keeps tests aligned with
|
||
#the Conan - shipped runtime used for installation.
|
||
if host_machine.system() == 'windows' and windows_runtime_dlls.length() > 0
|
||
py_mod = import('python')
|
||
python = py_mod.find_installation('python3', required: false)
|
||
if not python.found()
|
||
python = py_mod.find_installation('python', required: false)
|
||
endif
|
||
|
||
if python.found()
|
||
#All test binary directories(relative to builddir / tests)
|
||
test_runtime_dirs = [
|
||
'.',
|
||
'integration',
|
||
'integration/smoke',
|
||
'integration/daemon',
|
||
'integration/cli',
|
||
'integration/search',
|
||
'integration/services',
|
||
]
|
||
|
||
foreach dll_info : windows_runtime_dlls
|
||
dll_name = dll_info[0]
|
||
dll_src = dll_info[1]
|
||
|
||
foreach dest_rel : test_runtime_dirs
|
||
dest_path = join_paths(meson.current_build_dir(), dest_rel, dll_name)
|
||
stamp = 'dllcopy_@0@_@1@.stamp'.format(dll_name, dest_rel.replace('/', '_'))
|
||
custom_target(stamp,
|
||
input: dll_src,
|
||
output: stamp,
|
||
command: [python, '-c',
|
||
'import pathlib, shutil, sys; src=sys.argv[1]; dest=pathlib.Path(sys.argv[2]); stamp=pathlib.Path(sys.argv[3]); dest.parent.mkdir(parents=True, exist_ok=True); shutil.copy2(src, dest); stamp.parent.mkdir(parents=True, exist_ok=True); stamp.write_text("ok")',
|
||
dll_src, dest_path, '@OUTPUT@'],
|
||
build_by_default: true,
|
||
)
|
||
endforeach
|
||
endforeach
|
||
else
|
||
message('Python not found (python3/python); skipping Windows test runtime DLL staging')
|
||
endif
|
||
endif
|
||
|
||
tests_has_cli = false
|
||
tests_has_cli11 = cli11_dep.found()
|
||
|
||
if get_option('build-cli')
|
||
yams_cli_dep = dependency('yams_cli', required: false)
|
||
if yams_cli_dep.found()
|
||
test_deps += yams_cli_dep
|
||
tests_has_cli = true
|
||
else
|
||
message('build-cli enabled but yams_cli dependency not found; skipping CLI-dependent tests.')
|
||
endif
|
||
else
|
||
#If build - cli is disabled, still try to find yams_cli but don't error if missing
|
||
yams_cli_dep = dependency('yams_cli', required: false)
|
||
if yams_cli_dep.found()
|
||
test_deps += yams_cli_dep
|
||
tests_has_cli = true
|
||
endif
|
||
endif
|
||
|
||
incs = [
|
||
include_directories('..'), # project root
|
||
include_directories('.'), # tests/
|
||
include_directories('common'), # shared helpers
|
||
include_directories('../include'), # headers
|
||
include_directories('../tools/yams-tools/include'),
|
||
] + catch2_incs
|
||
|
||
#Keep project strict, but don’t fail unit tests on common test - only warnings.
|
||
#We downgrade selective warnings to non - errors for test targets only.
|
||
cxx = meson.get_compiler('cpp')
|
||
test_cpp_noerror_args = cxx.get_supported_arguments([
|
||
'-Wno-error=sign-compare',
|
||
'-Wno-error=unused-variable',
|
||
'-Wno-error=unused-but-set-variable',
|
||
'-Wno-error=unused-result',
|
||
'-Wno-error=unused-lambda-capture',
|
||
'-Wno-error=missing-field-initializers',
|
||
])
|
||
|
||
## Meson-native test discovery via structured subdirs (no shell globs)
|
||
#Build legacy GTest unit tests only when GTest is available.
|
||
if gtest_dep.found()
|
||
#Build unit test object library in subdir and link here for the aggregate runner
|
||
subdir('unit')
|
||
if get_option('build-plugins')
|
||
subdir('plugins')
|
||
endif
|
||
else
|
||
message('GTest not found; skipping GTest unit/plugin test build (Catch2 tests may still be enabled).')
|
||
yams_unit_objs = []
|
||
endif
|
||
|
||
|
||
|
||
if get_option('enable-integration-tests') or get_option('buildtype') == 'debug'
|
||
subdir('integration/smoke')
|
||
subdir('integration/daemon')
|
||
if gtest_dep.found()
|
||
subdir('integration/cli')
|
||
else
|
||
message('GTest not found; skipping GTest-based CLI integration tests.')
|
||
endif
|
||
subdir('integration/search')
|
||
endif
|
||
if get_option('enable-mobile-tests')
|
||
subdir('mobile')
|
||
endif
|
||
|
||
stress_srcs = files(
|
||
'stress/main.cpp',
|
||
'stress/storage/concurrent_test.cpp',
|
||
'stress/mcp_socket_stress_test.cpp',
|
||
)
|
||
|
||
common_srcs = [] # currently no .cpp files under tests/common
|
||
sdk_srcs = [] # currently no .cpp files under tests/sdk
|
||
|
||
#NOTE(PBI 028) : Temporarily disable plugin tests to avoid duplicate plugin
|
||
#symbol definitions in a single aggregated integration binary.
|
||
plugin_test_srcs = []
|
||
|
||
all_unit = [] # unit sources now provided by 'yams_unit_objs' from tests/unit/meson.build
|
||
all_stress = stress_srcs
|
||
|
||
#Always rely on tests / unit_main.cpp; do not include tests / test_main.cpp here
|
||
test_main = []
|
||
|
||
heavy_tests = [
|
||
'ResourcePoolTest.MaxSizeEnforcement',
|
||
'StreamingProcessorTest.*',
|
||
'ZstandardCompressorTest.DecompressionPerformance',
|
||
'DatabaseTest.Migrations',
|
||
'ResultRankerTest.RankingResults',
|
||
'CompressedStorageStatsTest.*',
|
||
'IntegrityVerifierTest.*',
|
||
'DaemonTest.*',
|
||
'StreamingChunkerTest.*',
|
||
'ChunkValidatorParallel.*',
|
||
'DownloadManagerExport.*',
|
||
'StorageBackendTest.*',
|
||
#Temporary skips to stabilize shards(Option A) : vector DB / WAL heavy
|
||
'VectorDatabaseTest.*',
|
||
'VectorDatabasePersistenceTest.*',
|
||
'VectorIndexManagerTest.*',
|
||
'OnnxRuntimeTest.*',
|
||
'EmbeddingGeneratorTest.*',
|
||
'ModelManagementTest.*',
|
||
'WALDualReadTest.*',
|
||
'WALManagerComprehensiveTest.*',
|
||
'WALManagerTest.*',
|
||
]
|
||
|
||
unit_exclude = '*-' + ':'.join(heavy_tests)
|
||
|
||
#Prefer Conan CMake config before falling back to system discovery
|
||
onnx_dep = onnxruntime_resolved_dep
|
||
tbb_dep = tbb_resolved_dep
|
||
|
||
#Add TBB to test_deps if found(needed by yams_vector via ONNX runtime)
|
||
if tbb_dep.found()
|
||
test_deps += tbb_dep
|
||
endif
|
||
|
||
#Collect library directories for test runtime.
|
||
#
|
||
#Docker note : our Linux Docker build uses a BuildKit cache mount for / root /.conan2,
|
||
#which is not committed into the image layers.We therefore rely on Conan's
|
||
#runtime_deploy output in the build directory for running tests in later stages.
|
||
#Always include the build root in RPATH / LD_LIBRARY_PATH so tests can find
|
||
#deployed runtime libraries(e.g.ONNX, TBB) even when the Conan cache is absent.
|
||
_test_rpaths = [meson.project_build_root()]
|
||
_test_ld_library_path = [meson.project_build_root()]
|
||
foreach d : [onnx_dep, tbb_dep]
|
||
if d.found()
|
||
libdir = d.get_variable(pkgconfig: 'libdir', default_value: '')
|
||
if libdir != ''
|
||
_test_rpaths += libdir
|
||
_test_ld_library_path += libdir
|
||
endif
|
||
endif
|
||
endforeach
|
||
|
||
#Prepare LD_LIBRARY_PATH for test environment(needed for transitive TBB dependencies)
|
||
_test_env_ld_library_path = ':'.join(_test_ld_library_path)
|
||
|
||
unit_exe = []
|
||
#Only build the GTest executable if there are remaining GTest sources
|
||
if gtest_dep.found() and yams_unit_objs != []
|
||
unit_exe = executable('yams_unit_tests', files('unit/main.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [gtest_dep] + gmock_link_deps + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
link_whole: yams_unit_objs,
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
else
|
||
message('GTest unit tests fully migrated to Catch2 or GTest not found; skipping GTest-based unit test executable.')
|
||
endif
|
||
unit_shards = get_option('unit-shards')
|
||
unit_timeout = get_option('unit-timeout')
|
||
bench_timeout = get_option('bench-timeout')
|
||
#CI - friendly timeout for the unit_safe runner : 2x unit_timeout, floor at 600s
|
||
safe_timeout = unit_timeout * 2
|
||
if safe_timeout < 600
|
||
safe_timeout = 600
|
||
endif
|
||
|
||
if gtest_dep.found() and unit_exe != [] and get_option('enable-full-unit') and unit_shards > 1
|
||
#Derive per - shard timeout(ceil division) with a small floor of 120s
|
||
shard_timeout = (unit_timeout + unit_shards - 1) / unit_shards
|
||
if shard_timeout < 120
|
||
shard_timeout = 120
|
||
endif
|
||
|
||
foreach i : range(unit_shards)
|
||
test('unit_shard@0@'.format(i), unit_exe,
|
||
suite: 'unit',
|
||
args: ['--gtest_filter=' + unit_exclude],
|
||
env: {
|
||
'GTEST_TOTAL_SHARDS' : unit_shards.to_string(), 'GTEST_SHARD_INDEX' : i.to_string(),
|
||
#Be brief to reduce log size
|
||
'GTEST_BRIEF' : '1',
|
||
'YAMS_TEST_SAFE_SINGLE_INSTANCE' : '1',
|
||
#Stabilize SQLite / vec for unit runs(PBI - 040)
|
||
'YAMS_SQLITE_MINIMAL_PRAGMAS'
|
||
: '1',
|
||
'YAMS_SQLITE_VEC_INIT_TIMEOUT_MS' : '1500',
|
||
'YAMS_SQLITE_BUSY_TIMEOUT_MS' : '1000',
|
||
'YAMS_VDB_IN_MEMORY'
|
||
: '1',
|
||
'YAMS_SQLITE_VEC_SKIP_INIT' : '1',
|
||
'YAMS_DISABLE_VECTORS' : '1',
|
||
'YAMS_TESTING' : '1',
|
||
#Add TBB library path for transitive dependencies
|
||
'LD_LIBRARY_PATH'
|
||
: _test_env_ld_library_path,
|
||
},
|
||
timeout: shard_timeout
|
||
)
|
||
endforeach
|
||
elif gtest_dep.found() and unit_exe != [] and get_option('enable-full-unit')
|
||
test('unit', unit_exe,
|
||
suite: 'unit',
|
||
args: ['--gtest_filter=' + unit_exclude],
|
||
env: {
|
||
'YAMS_TEST_SAFE_SINGLE_INSTANCE': '1',
|
||
'YAMS_SQLITE_MINIMAL_PRAGMAS': '1',
|
||
'YAMS_SQLITE_VEC_INIT_TIMEOUT_MS': '1500',
|
||
'YAMS_SQLITE_BUSY_TIMEOUT_MS': '1000',
|
||
'YAMS_VDB_IN_MEMORY': '1',
|
||
'YAMS_SQLITE_VEC_SKIP_INIT': '1',
|
||
'YAMS_DISABLE_VECTORS': '1',
|
||
'YAMS_TESTING': '1',
|
||
'LD_LIBRARY_PATH': _test_env_ld_library_path,
|
||
},
|
||
timeout: unit_timeout)
|
||
endif
|
||
|
||
if gtest_dep.found() and unit_exe != [] and get_option('enable-bench-tests')
|
||
# Note: All bench tests use suite 'bench' or ['bench', 'isolated'].
|
||
# Run unified benchmarks with: `meson test -C builddir --suite bench`
|
||
|
||
test('unit_isolated_integrity_verifier', unit_exe,
|
||
suite: ['bench', 'isolated', 'perf'],
|
||
args: ['--gtest_filter=IntegrityVerifierTest.*'],
|
||
env: {
|
||
'YAMS_TEST_SAFE_SINGLE_INSTANCE': '1',
|
||
'GTEST_BRIEF': '1',
|
||
'LD_LIBRARY_PATH': _test_env_ld_library_path,
|
||
},
|
||
timeout: bench_timeout,
|
||
)
|
||
|
||
# Daemon lifecycle smoke coverage remains opt-in because it performs full
|
||
# daemon start/stop sequences.
|
||
endif
|
||
|
||
if get_option('enable-daemon-long-tests') and unit_exe != []
|
||
test('unit_isolated_daemon', unit_exe,
|
||
suite: ['daemon-long'],
|
||
args: ['--gtest_filter=DaemonTest.*'],
|
||
env: {
|
||
'YAMS_TEST_SAFE_SINGLE_INSTANCE': '1',
|
||
'GTEST_BRIEF': '1',
|
||
},
|
||
timeout: bench_timeout,
|
||
)
|
||
endif
|
||
|
||
if gtest_dep.found() and unit_exe != [] and get_option('enable-bench-tests')
|
||
test('unit_isolated_streaming_chunker', unit_exe,
|
||
suite: ['bench', 'isolated', 'perf'],
|
||
args: ['--gtest_filter=StreamingChunkerTest.*'],
|
||
env: {
|
||
'YAMS_TEST_SAFE_SINGLE_INSTANCE': '1',
|
||
'GTEST_BRIEF': '1',
|
||
'LD_LIBRARY_PATH': _test_env_ld_library_path,
|
||
},
|
||
timeout: bench_timeout,
|
||
)
|
||
|
||
test('unit_isolated_chunk_validator', unit_exe,
|
||
suite: ['bench', 'isolated', 'perf'],
|
||
args: ['--gtest_filter=ChunkValidatorParallel.*'],
|
||
env: {
|
||
'YAMS_TEST_SAFE_SINGLE_INSTANCE': '1',
|
||
'GTEST_BRIEF': '1',
|
||
'LD_LIBRARY_PATH': _test_env_ld_library_path,
|
||
},
|
||
timeout: bench_timeout,
|
||
)
|
||
|
||
test('unit_isolated_download_manager', unit_exe,
|
||
suite: ['bench', 'isolated', 'perf'],
|
||
args: ['--gtest_filter=DownloadManagerExport.*'],
|
||
env: {
|
||
'YAMS_TEST_SAFE_SINGLE_INSTANCE': '1',
|
||
'GTEST_BRIEF': '1',
|
||
'LD_LIBRARY_PATH': _test_env_ld_library_path,
|
||
},
|
||
timeout: bench_timeout,
|
||
)
|
||
|
||
test('unit_isolated_storage_backend', unit_exe,
|
||
suite: ['bench', 'isolated', 'perf'],
|
||
args: ['--gtest_filter=StorageBackendTest.*'],
|
||
env: {
|
||
'YAMS_TEST_SAFE_SINGLE_INSTANCE': '1',
|
||
'GTEST_BRIEF': '1',
|
||
'LD_LIBRARY_PATH': _test_env_ld_library_path,
|
||
},
|
||
timeout: bench_timeout,
|
||
)
|
||
|
||
test('unit_isolated_service_manager', unit_exe,
|
||
suite: ['bench', 'isolated', 'perf'],
|
||
args: ['--gtest_filter=ServiceManagerTest.*'],
|
||
env: {
|
||
'YAMS_TEST_SAFE_SINGLE_INSTANCE': '1',
|
||
'GTEST_BRIEF': '1',
|
||
'LD_LIBRARY_PATH': _test_env_ld_library_path,
|
||
},
|
||
timeout: bench_timeout,
|
||
)
|
||
|
||
test('unit_shard_vectordb_metrics', unit_exe,
|
||
suite: ['bench', 'perf'],
|
||
args: ['--gtest_filter=DaemonMetrics.VectorDbReadyHealsFromHandle'],
|
||
env: {
|
||
'YAMS_TEST_SAFE_SINGLE_INSTANCE': '1',
|
||
'GTEST_BRIEF': '1',
|
||
'LD_LIBRARY_PATH': _test_env_ld_library_path,
|
||
},
|
||
timeout: bench_timeout,
|
||
)
|
||
|
||
test('unit_shard_post_ingest_queue', unit_exe,
|
||
suite: ['bench', 'perf'],
|
||
args: ['--gtest_filter=PostIngestQueueStandardTest.*'],
|
||
env: {
|
||
'YAMS_TEST_SAFE_SINGLE_INSTANCE': '1',
|
||
'GTEST_BRIEF': '1',
|
||
'LD_LIBRARY_PATH': _test_env_ld_library_path,
|
||
},
|
||
timeout: bench_timeout,
|
||
)
|
||
|
||
#Fast warm - latency bench(replaces unit WarmLatencyBenchmark)
|
||
test('unit_bench_daemon_warm_latency', unit_exe,
|
||
suite: ['bench', 'perf'],
|
||
args: ['--gtest_filter=DaemonBench.WarmLatencyFast'],
|
||
env: {
|
||
'YAMS_TEST_SAFE_SINGLE_INSTANCE' : '1',
|
||
'GTEST_BRIEF' : '1',
|
||
#Require an explicit opt - in to actually run the daemon warm bench
|
||
#in CI or local : YAMS_ENABLE_DAEMON_BENCH = 1 must be set in addition
|
||
#to this fast flag; otherwise the test self - skips.
|
||
'YAMS_BENCH_FAST' : '1',
|
||
'LD_LIBRARY_PATH'
|
||
: _test_env_ld_library_path,
|
||
},
|
||
timeout: bench_timeout,
|
||
)
|
||
|
||
endif
|
||
|
||
if gtest_dep.found() and unit_exe != [] and get_option('enable-reliability-tests')
|
||
test('unit_reliability_grep_search_startup', unit_exe,
|
||
suite: ['bench', 'reliability'],
|
||
args: ['--gtest_filter=GrepServiceTest.RetriesTransientMetadataErrors:GrepServiceTest.PropagatesMetadataErrorsWhenTagsUnavailable:SearchServiceTest.LightIndexRetriesTransientMetadataErrors'],
|
||
env: {
|
||
'YAMS_TEST_SAFE_SINGLE_INSTANCE': '1',
|
||
'GTEST_BRIEF': '1',
|
||
'YAMS_SQLITE_MINIMAL_PRAGMAS': '1',
|
||
'YAMS_SQLITE_VEC_INIT_TIMEOUT_MS': '1500',
|
||
'YAMS_SQLITE_BUSY_TIMEOUT_MS': '1000',
|
||
'YAMS_VDB_IN_MEMORY': '1',
|
||
'YAMS_SQLITE_VEC_SKIP_INIT': '1',
|
||
'YAMS_DISABLE_VECTORS': '1',
|
||
'YAMS_TESTING': '1',
|
||
'LD_LIBRARY_PATH': _test_env_ld_library_path,
|
||
},
|
||
timeout: bench_timeout,
|
||
)
|
||
endif
|
||
|
||
if gtest_dep.found() and unit_exe != []
|
||
#Define a fast "smoke" subset using gtest filter for developer iteration
|
||
smoke_filter = 'ContentStoreTest.*:ProgressReporterTest.*:ContentMetadataTest.*:ContentStoreBuilderTest.*:SearchSmoke.*'
|
||
test('unit_smoke', unit_exe,
|
||
suite: ['unit', 'smoke'],
|
||
args: ['--gtest_filter=' + smoke_filter],
|
||
env: {
|
||
'YAMS_TEST_SAFE_SINGLE_INSTANCE': '1',
|
||
'YAMS_SQLITE_MINIMAL_PRAGMAS': '1',
|
||
'YAMS_SQLITE_VEC_INIT_TIMEOUT_MS': '1500',
|
||
'YAMS_SQLITE_BUSY_TIMEOUT_MS': '1000',
|
||
'YAMS_VDB_IN_MEMORY': '1',
|
||
'YAMS_SQLITE_VEC_SKIP_INIT': '1',
|
||
'YAMS_DISABLE_VECTORS': '1',
|
||
'YAMS_TESTING': '1',
|
||
'LD_LIBRARY_PATH': _test_env_ld_library_path,
|
||
},
|
||
timeout: 120,
|
||
)
|
||
|
||
#Targeted fast subset for PBI - 045 metadata modernization acceptance
|
||
targeted_filter = 'DatabaseStatementChronoTest.*:QueryHelpersIntegration.*:MetadataRepositoryCache.*:ConnectionPoolMaintenance.*:SqlBuildSelectTest.*:TagsQuerySpecIntegration.*:MetadataRepositoryTest.CountsAndModifiedSince:MetadataValueVariantTest.*'
|
||
test('unit_targeted_metadata', unit_exe,
|
||
suite: ['unit', 'pbi045'],
|
||
args: ['--gtest_filter=' + targeted_filter],
|
||
env: {
|
||
'YAMS_TEST_SAFE_SINGLE_INSTANCE': '1',
|
||
'GTEST_BRIEF': '1',
|
||
'YAMS_SQLITE_MINIMAL_PRAGMAS': '1',
|
||
'YAMS_SQLITE_VEC_INIT_TIMEOUT_MS': '1500',
|
||
'YAMS_SQLITE_BUSY_TIMEOUT_MS': '1000',
|
||
'YAMS_VDB_IN_MEMORY': '1',
|
||
'YAMS_SQLITE_VEC_SKIP_INIT': '1',
|
||
'YAMS_DISABLE_VECTORS': '1',
|
||
'YAMS_TESTING': '1',
|
||
'LD_LIBRARY_PATH': _test_env_ld_library_path,
|
||
},
|
||
timeout: 180,
|
||
)
|
||
|
||
#PBI - 040 : unit_safe runner — stable daily gate excluding known heavy / fragile suites
|
||
#This provides a fast, reliable unit test subset for CI / developer iteration
|
||
#CI - stable subset : drop FTS - heavy, repo search, reference counter stats and vector smoke
|
||
safe_include_filter = 'ContentStoreTest.*:ProgressReporterTest.*:QueryHelpersIntegration.*:ConnectionPoolMaintenance.*:BKTreeTest.*:SearchCacheTest.*:QueryParserTest.*:MessageFramingTest.*:ResponseOfTest.*:IPCMessageTypeTest.*'
|
||
test('unit_safe', unit_exe,
|
||
suite: ['unit', 'safe', 'pbi040'],
|
||
args: ['--gtest_filter=' + safe_include_filter],
|
||
env: {
|
||
'YAMS_TEST_SAFE_SINGLE_INSTANCE': '1',
|
||
'GTEST_BRIEF': '1',
|
||
'YAMS_SQLITE_MINIMAL_PRAGMAS': '1',
|
||
'YAMS_SQLITE_VEC_INIT_TIMEOUT_MS': '1500',
|
||
'YAMS_SQLITE_BUSY_TIMEOUT_MS': '1000',
|
||
'YAMS_VDB_IN_MEMORY': '1',
|
||
'YAMS_SQLITE_VEC_SKIP_INIT': '1',
|
||
'YAMS_DISABLE_VECTORS': '1',
|
||
'YAMS_TESTING': '1',
|
||
'LD_LIBRARY_PATH': _test_env_ld_library_path,
|
||
},
|
||
timeout: safe_timeout,
|
||
)
|
||
|
||
#PBI - 040 : Conditional vector smoke test(runs only when sqlite - vec is available)
|
||
test('unit_vector_smoke', unit_exe,
|
||
suite: ['unit', 'vector', 'pbi040'],
|
||
args: ['--gtest_filter=VectorSmokeTest.*'],
|
||
env: {
|
||
'YAMS_TEST_SAFE_SINGLE_INSTANCE' : '1',
|
||
'GTEST_BRIEF' : '1',
|
||
'YAMS_SQLITE_MINIMAL_PRAGMAS'
|
||
: '1',
|
||
'YAMS_SQLITE_VEC_INIT_TIMEOUT_MS' : '3000',
|
||
'YAMS_SQLITE_BUSY_TIMEOUT_MS' : '1000',
|
||
'YAMS_VDB_IN_MEMORY'
|
||
: '1',
|
||
'YAMS_TESTING' : '1',
|
||
#Note : sqlite - vec env toggles NOT set, allowing initialization if available
|
||
'LD_LIBRARY_PATH' : _test_env_ld_library_path,
|
||
},
|
||
timeout: 120,
|
||
)
|
||
endif
|
||
|
||
|
||
## integration_smoke now defined in subdir('integration/smoke')
|
||
|
||
#Next integration group : Services(daemon ingestion / retrieval)
|
||
#Compile this group separately to avoid duplicate plugin symbols and to allow isolated serial runs.
|
||
#Prefer Meson - native subdirs over shell discovery for services integration tests.
|
||
#
|
||
#IMPORTANT : services integration includes both GTest - and Catch2 - based suites.
|
||
#Do not gate the entire subdir on GTest.
|
||
if get_option('enable-integration-tests') or get_option('enable-integration-services') or get_option('buildtype') == 'debug'
|
||
subdir('integration/services')
|
||
endif
|
||
|
||
#Benchmarks(standalone executables).Register bench test target only when enabled.
|
||
if get_option('build-benchmarks')
|
||
subdir('benchmarks')
|
||
|
||
#Standalone, minimal daemon warm - latency bench(does not depend on unit object lib)
|
||
daemon_warm_bench = executable('yams_bench_daemon_warm',
|
||
files('benchmarks/daemon_warm_latency_main.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [test_deps],
|
||
install: false,
|
||
)
|
||
|
||
if get_option('enable-bench-tests')
|
||
test('bench_daemon_warm_latency', daemon_warm_bench,
|
||
suite: ['bench', 'perf'],
|
||
env: {
|
||
'YAMS_TEST_SAFE_SINGLE_INSTANCE': '1',
|
||
'LD_LIBRARY_PATH': _test_env_ld_library_path,
|
||
},
|
||
timeout: bench_timeout,
|
||
)
|
||
endif
|
||
endif
|
||
|
||
#Acceptance tests(E2E validation)
|
||
subdir('acceptance')
|
||
|
||
#Stress tests can be heavy; register but mark as long - running via suite name
|
||
if gtest_dep.found() and get_option('enable-stress-tests') and all_stress.length() > 0
|
||
stress_exe = executable('yams_stress_tests', all_stress + test_main,
|
||
include_directories: incs,
|
||
dependencies: [gtest_dep, test_deps],
|
||
cpp_args: ['-DYAMS_TESTING=1'],
|
||
install: false,
|
||
)
|
||
test('stress', stress_exe,
|
||
suite: 'stress',
|
||
args: ['--gtest_filter=MCPSocketStressTest.*'],
|
||
env: {
|
||
'LD_LIBRARY_PATH': _test_env_ld_library_path,
|
||
'YAMS_TEST_SAFE_SINGLE_INSTANCE': '1',
|
||
},
|
||
timeout: 300)
|
||
elif get_option('enable-stress-tests')
|
||
message('GTest not found; skipping stress test registration.')
|
||
endif
|
||
|
||
# ============================================================================
|
||
#Catch2 Test Executables(PBI - 068 : Separated for isolation)
|
||
#Each test suite gets its own executable to prevent resource conflicts
|
||
#and enable parallel execution.This resolves SIGABRT crashes from shared
|
||
#filesystem state and temp directory conflicts.
|
||
# ============================================================================
|
||
|
||
if catch2_dep.found()
|
||
|
||
#Daemon Test Suites(6 consolidated executables)
|
||
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||
|
||
catch2_daemon_fsm_exe = executable('catch2_daemon_fsm',
|
||
files('unit/daemon/daemon_fsm_suite_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_daemon_metrics_exe = executable('catch2_daemon_metrics',
|
||
files('unit/daemon/daemon_metrics_status_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_daemon_components_exe = executable('catch2_daemon_components',
|
||
files('unit/daemon/daemon_components_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_daemon_protocol_exe = executable('catch2_daemon_protocol',
|
||
files(
|
||
'unit/daemon/daemon_protocol_test.cpp',
|
||
'unit/daemon/dispatch_response_mapper_catch2_test.cpp',
|
||
'unit/daemon/request_handler_admission_reuse_catch2_test.cpp',
|
||
'unit/daemon/request_handler_status_unary_catch2_test.cpp',
|
||
),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_daemon_background_exe = executable('catch2_daemon_background',
|
||
files('unit/daemon/daemon_background_processing_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_daemon_graph_component_exe = executable('catch2_daemon_graph_component',
|
||
files(
|
||
'unit/daemon/graph_component_catch2_test.cpp',
|
||
'unit/app/services/graph_query_service_catch2_test.cpp',
|
||
),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Daemon component submodule tests(CheckpointManager, ConfigResolver, etc.)
|
||
#Migrated from GTest as part of yams - 3s4 / yams - zns
|
||
catch2_daemon_component_submodule_exe = executable('catch2_daemon_component_submodule',
|
||
files(
|
||
'unit/daemon/components/checkpoint_manager_test.cpp',
|
||
'unit/daemon/components/config_resolver_test.cpp',
|
||
'unit/daemon/components/database_manager_test.cpp',
|
||
'unit/daemon/components/plugin_manager_test.cpp',
|
||
'unit/daemon/plugin_manager_config_test.cpp',
|
||
'unit/daemon/components/request_queue_test.cpp',
|
||
'unit/daemon/components/vector_system_manager_test.cpp',
|
||
),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Gradient limiter tests(Netflix Gradient2 adaptive concurrency)
|
||
catch2_gradient_limiter_exe = executable('catch2_gradient_limiter',
|
||
files('unit/daemon/components/gradient_limiter_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#WorkCoordinator tests(async work coordination)
|
||
catch2_work_coordinator_exe = executable('catch2_work_coordinator',
|
||
files('unit/daemon/work_coordinator_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#PostIngestQueue unit tests(LruCache template + stage constants)
|
||
catch2_post_ingest_queue_unit_exe = executable('catch2_post_ingest_queue_unit',
|
||
files('unit/daemon/components/post_ingest_queue_unit_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Metrics consistency tests(migrated from GTest)
|
||
catch2_metrics_consistency_exe = executable('catch2_metrics_consistency',
|
||
files('unit/daemon/metrics_consistency_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#SearchService integration tests(migrated from GTest)
|
||
catch2_search_service_exe = executable('catch2_search_service',
|
||
files(
|
||
'unit/app/services/search_service_catch2_test.cpp',
|
||
'unit/app/services/search_hash_edge_cases_catch2_test.cpp',
|
||
),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Compressed ANN fusion/dedup contract and behavior tests
|
||
catch2_compressed_ann_fusion_exe = executable('catch2_compressed_ann_fusion',
|
||
files(
|
||
'unit/search/compressed_ann_fusion_contract_catch2_test.cpp',
|
||
'unit/search/compressed_ann_fusion_behavior_catch2_test.cpp',
|
||
'unit/search/compressed_ann_dedup_catch2_test.cpp',
|
||
),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#FTS5 performance / stress tests(migrated from GTest, opt - in via YAMS_RUN_STRESS_TESTS = 1)
|
||
catch2_fts5_stress_exe = executable('catch2_fts5_stress',
|
||
files('unit/metadata/fts5_performance_stress_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Add plugin path for plugin harness tests
|
||
plugin_test_cpp_args = test_cpp_noerror_args + ['-DYAMS_TESTING=1']
|
||
if get_option('plugin-onnx')
|
||
#Pass the expected plugin location to the test
|
||
onnx_plugin_name = 'libyams_onnx_plugin.so'
|
||
if host_machine.system() == 'darwin'
|
||
onnx_plugin_name = 'libyams_onnx_plugin.dylib'
|
||
elif host_machine.system() == 'windows'
|
||
onnx_plugin_name = 'yams_onnx_plugin.dll'
|
||
endif
|
||
onnx_plugin_path = join_paths(meson.project_build_root(), 'plugins', 'onnx', onnx_plugin_name)
|
||
plugin_test_cpp_args += ['-Dyams_onnx_plugin_BUILT="' + onnx_plugin_path + '"']
|
||
endif
|
||
|
||
catch2_daemon_plugin_exe = executable('catch2_daemon_plugin',
|
||
files('unit/daemon/onnx_plugin_harness_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: plugin_test_cpp_args,
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
if onnx_dep.found()
|
||
#Reranker session test(uses mock mode by default, real model optional)
|
||
#Compile the reranker session source directly into the test to avoid plugin linking issues
|
||
reranker_test_deps = [catch2_dep, catch2_main_dep] + test_deps + onnx_dep
|
||
|
||
catch2_daemon_reranker_exe = executable('catch2_daemon_reranker',
|
||
files(
|
||
'unit/daemon/onnx_reranker_session_test.cpp',
|
||
'../plugins/onnx/onnx_text_processing.cpp',
|
||
'../plugins/onnx/ort_runtime_loader.cpp',
|
||
'../plugins/onnx/onnx_reranker_session.cpp',
|
||
'../src/vector/tokenizer.cpp',
|
||
),
|
||
include_directories: incs,
|
||
dependencies: reranker_test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
onnx_provider_test_deps = [catch2_dep, catch2_main_dep] + test_deps + onnx_dep
|
||
catch2_daemon_onnx_provider_exe = executable('catch2_daemon_onnx_provider',
|
||
files(
|
||
'unit/daemon/onnx_model_provider_config_test.cpp',
|
||
'../plugins/onnx/model_provider.cpp',
|
||
'../plugins/onnx/onnx_text_processing.cpp',
|
||
'../plugins/onnx/ort_runtime_loader.cpp',
|
||
'../plugins/onnx/onnx_model_pool.cpp',
|
||
'../plugins/onnx/onnx_reranker_session.cpp',
|
||
'../plugins/onnx/onnx_colbert_session.cpp',
|
||
'../src/vector/tokenizer.cpp',
|
||
),
|
||
include_directories: incs,
|
||
dependencies: onnx_provider_test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_gpu_provider_exe = executable('catch2_gpu_provider',
|
||
files(
|
||
'unit/daemon/onnx_gpu_provider_catch2_test.cpp',
|
||
'../plugins/onnx/ort_runtime_loader.cpp',
|
||
),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps + [onnx_dep],
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_onnx_embedding_diag_exe = executable('catch2_onnx_embedding_diag',
|
||
files(
|
||
'unit/daemon/onnx_embedding_diagnostic_test.cpp',
|
||
'../plugins/onnx/model_provider.cpp',
|
||
'../plugins/onnx/onnx_text_processing.cpp',
|
||
'../plugins/onnx/ort_runtime_loader.cpp',
|
||
'../plugins/onnx/onnx_model_pool.cpp',
|
||
'../plugins/onnx/onnx_reranker_session.cpp',
|
||
'../plugins/onnx/onnx_colbert_session.cpp',
|
||
'../src/vector/tokenizer.cpp',
|
||
),
|
||
include_directories: incs,
|
||
dependencies: onnx_provider_test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
test('onnx_embedding_diagnostic', catch2_onnx_embedding_diag_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'onnx', 'diagnostic'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
args: ['--allow-running-no-tests'],
|
||
timeout: 120,
|
||
)
|
||
endif
|
||
|
||
catch2_plugin_infrastructure_exe = executable('catch2_plugin_infrastructure',
|
||
files('unit/daemon/plugin_infrastructure_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: plugin_test_cpp_args,
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_external_plugin_host_exe = executable('catch2_external_plugin_host',
|
||
files('unit/daemon/external_plugin_host_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: plugin_test_cpp_args,
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_extractor_adapter_exe = executable('catch2_extractor_adapter',
|
||
files('unit/daemon/plugin_content_extractor_adapter_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_repair_scheduling_exe = executable('catch2_repair_scheduling',
|
||
files('unit/daemon/repair_scheduling_adapter_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_repair_service_exe = executable('catch2_repair_service',
|
||
files('unit/daemon/repair_service_post_ingest_channel_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_service_manager_exe = executable('catch2_service_manager',
|
||
files('unit/daemon/service_manager_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_streaming_processor_exe = executable('catch2_streaming_processor',
|
||
files('unit/daemon/streaming_processor_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_in_process_transport_exe = executable('catch2_in_process_transport',
|
||
files('unit/daemon/in_process_transport_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_sandbox_detection_exe = executable('catch2_sandbox_detection',
|
||
files('unit/daemon/sandbox_detection_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_multiplex_client_exe = executable('catch2_multiplex_client',
|
||
files('unit/daemon/multiplex_client_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_entity_graph_service_exe = executable('catch2_entity_graph_service',
|
||
files('unit/daemon/entity_graph_service_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_service_manager_shutdown_exe = executable('catch2_service_manager_shutdown',
|
||
files('unit/daemon/service_manager_shutdown_ownership_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_service_manager_degraded_exe = executable('catch2_service_manager_degraded',
|
||
files('unit/daemon/service_manager_provider_degraded_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_repair_binary_filter_exe = executable('catch2_repair_binary_filter',
|
||
files('unit/daemon/repair_binary_filter_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_abi_model_provider_dim_exe = executable('catch2_abi_model_provider_dim',
|
||
files('unit/daemon/abi_model_provider_dimension_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_embedding_recovery_exe = executable('catch2_embedding_recovery',
|
||
files('unit/daemon/embedding_provider_recovery_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_request_io_edge_exe = executable('catch2_request_io_edge',
|
||
files('unit/daemon/request_handler_io_edge_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_daemon_warm_bench_exe = executable('catch2_daemon_warm_bench',
|
||
files('unit/daemon/daemon_warm_bench_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_request_lifetime_exe = executable('catch2_request_lifetime',
|
||
files('unit/daemon/request_handler_lifetime_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_writer_drain_cleanup_exe = executable('catch2_writer_drain_cleanup',
|
||
files('unit/daemon/request_handler_writer_drain_cleanup_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_asio_connection_pool_exe = executable('catch2_asio_connection_pool',
|
||
files('unit/daemon/asio_connection_pool_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_asio_transport_exhaustion_exe = executable('catch2_asio_transport_exhaustion',
|
||
files('unit/daemon/asio_transport_exhaustion_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_asio_transport_inflight_close_ipc_prefix_exe = executable('catch2_asio_transport_inflight_close_ipc_prefix',
|
||
files('unit/daemon/asio_transport_inflight_close_ipc_prefix_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_daemon_exe = executable('catch2_daemon',
|
||
files('unit/daemon/daemon_catch2_test.cpp'),
|
||
files('unit/daemon/streaming_handlers_catch2_test.cpp'),
|
||
files('unit/daemon/daemon_client_list_status_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_tune_advisor_threshold_exe = executable('catch2_tune_advisor_threshold',
|
||
files('unit/daemon/tune_advisor_threshold_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_tuning_allocation_exe = executable('catch2_tuning_allocation',
|
||
files('unit/daemon/tuning_allocation_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_tuning_reconciliation_exe = executable('catch2_tuning_reconciliation',
|
||
files('unit/daemon/tuning_reconciliation_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_post_ingest_dynamic_cap_recovery_exe = executable('catch2_post_ingest_dynamic_cap_recovery',
|
||
files('unit/daemon/post_ingest_dynamic_cap_recovery_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_resource_governance_exe = executable('catch2_resource_governance',
|
||
files('unit/daemon/resource_governance_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_timing_audit_exe = executable('catch2_timing_audit',
|
||
files('unit/daemon/timing_audit_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_dynamic_cap_sentinel_exe = executable('catch2_dynamic_cap_sentinel',
|
||
files('unit/daemon/dynamic_cap_sentinel_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_idle_zero_concurrency_exe = executable('catch2_idle_zero_concurrency',
|
||
files('unit/daemon/idle_zero_concurrency_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_health_check_isolation_exe = executable('catch2_health_check_isolation',
|
||
files('unit/daemon/health_check_isolation_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_tuning_loop_wakeup_exe = executable('catch2_tuning_loop_wakeup',
|
||
files('unit/daemon/tuning_loop_wakeup_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
if onnx_dep.found()
|
||
catch2_onnx_model_pool_exe = executable('catch2_onnx_model_pool',
|
||
files(
|
||
'unit/daemon/onnx_model_pool_catch2_test.cpp',
|
||
'../plugins/onnx/model_provider.cpp',
|
||
'../plugins/onnx/onnx_text_processing.cpp',
|
||
'../plugins/onnx/ort_runtime_loader.cpp',
|
||
'../plugins/onnx/onnx_model_pool.cpp',
|
||
'../plugins/onnx/onnx_reranker_session.cpp',
|
||
'../plugins/onnx/onnx_colbert_session.cpp',
|
||
'../src/vector/tokenizer.cpp',
|
||
),
|
||
include_directories: incs,
|
||
dependencies: onnx_provider_test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
endif
|
||
|
||
#CLI Test Suites(Catch2)
|
||
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||
|
||
catch2_cli_init_command_exe = executable('catch2_cli_init_command',
|
||
files('unit/cli/init_command_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Storage Test Suites(Catch2)
|
||
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||
|
||
catch2_storage_backend_exe = executable('catch2_storage_backend',
|
||
files('unit/storage/storage_backend_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Storage submodule tests(StorageEngine, CompressedStorageEngine, ReferenceCounter, etc.)
|
||
#Migrated from GTest as part of yams - 3s4 / yams - 8b9
|
||
catch2_storage_submodule_exe = executable('catch2_storage_submodule',
|
||
files(
|
||
'unit/storage/compressed_storage_engine_catch2_test.cpp',
|
||
'unit/storage/compressed_storage_stats_catch2_test.cpp',
|
||
'unit/storage/storage_backend_engine_adapter_catch2_test.cpp',
|
||
'unit/storage/object_storage_adapter_catch2_test.cpp',
|
||
'unit/storage/reference_counter_catch2_test.cpp',
|
||
'unit/storage/reference_counter_stress_catch2_test.cpp',
|
||
'unit/storage/s3_signer_catch2_test.cpp',
|
||
'unit/storage/storage_runtime_resolver_catch2_test.cpp',
|
||
'unit/storage/storage_engine_catch2_test.cpp',
|
||
),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#WAL Entry tests - serialization, checksums, encode / decode round - trips
|
||
catch2_wal_entry_exe = executable('catch2_wal_entry',
|
||
files('unit/wal/wal_entry_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_wal_submodule_exe = executable('catch2_wal_submodule',
|
||
files(
|
||
'unit/wal/wal_file_catch2_test.cpp',
|
||
'unit/wal/wal_manager_catch2_test.cpp',
|
||
'unit/wal/wal_recovery_catch2_test.cpp',
|
||
),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Search submodule tests(QueryParser, SearchExecutor, etc.)
|
||
#Migrated from GTest as part of yams - 3s4 / yams - 1yq
|
||
catch2_search_submodule_exe = executable('catch2_search_submodule',
|
||
files(
|
||
'unit/search/chunk_coverage_catch2_test.cpp',
|
||
'unit/search/entity_linker_catch2_test.cpp',
|
||
'unit/search/kg_scorer_simple_catch2_test.cpp',
|
||
'unit/search/query_helpers_catch2_test.cpp',
|
||
'unit/search/query_parser_catch2_test.cpp',
|
||
'unit/search/query_qualifiers_catch2_test.cpp',
|
||
'unit/search/result_fusion_catch2_test.cpp',
|
||
'unit/search/result_ranker_catch2_test.cpp',
|
||
'unit/search/search_engine_config_catch2_test.cpp',
|
||
'unit/search/search_tracing_catch2_test.cpp',
|
||
'unit/search/search_smoke_catch2_test.cpp',
|
||
'unit/search/query_literal_extractor_catch2_test.cpp',
|
||
'unit/search/search_filters_catch2_test.cpp',
|
||
'unit/search/search_results_catch2_test.cpp',
|
||
'unit/search/compressed_ann_fusion_contract_catch2_test.cpp',
|
||
'unit/search/compressed_ann_fusion_behavior_catch2_test.cpp',
|
||
'unit/search/compressed_ann_dedup_catch2_test.cpp',
|
||
),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#SearchTuner tests(Phase 2 of Epic yams - 7ez4 : Adaptive Search Engine Tuning via Corpus-Aware FSM)
|
||
#Tests FSM state transitions, TunedParams matrix, and SearchEngineConfig generation
|
||
catch2_search_tuner_exe = executable('catch2_search_tuner',
|
||
files('unit/search/search_tuner_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#InternalBenchmark tests(Phase 3 of Epic yams - 7ez4 : Internal Benchmark Suite)
|
||
#Tests LatencyStats, BenchmarkResults, BenchmarkComparison, query generation configs
|
||
catch2_internal_benchmark_exe = executable('catch2_internal_benchmark',
|
||
files('unit/search/internal_benchmark_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Compression submodule tests(CompressionPolicy, CompressionMonitor, Zstandard, LZMA, ErrorHandler, etc.)
|
||
#Migrated from GTest as part of yams - 3s4 / yams - pmf
|
||
catch2_compression_submodule_exe = executable('catch2_compression_submodule',
|
||
files(
|
||
#basic_error_handler_catch2_test.cpp removed : fully covered by error_handler_catch2_test.cpp
|
||
#basic_integrity_validator_catch2_test.cpp removed : fully covered by integrity_validator_catch2_test.cpp
|
||
'unit/compression/compression_comprehensive_catch2_test.cpp',
|
||
'unit/compression/compression_monitor_catch2_test.cpp',
|
||
'unit/compression/compression_policy_catch2_test.cpp',
|
||
'unit/compression/error_handler_catch2_test.cpp',
|
||
#TODO(yams - 3s4) : Fix API mismatch - uses non - existent IntegrityValidator methods
|
||
#'unit/compression/integrity_validator_catch2_test.cpp',
|
||
'unit/compression/lzma_compressor_catch2_test.cpp',
|
||
'unit/compression/recovery_manager_catch2_test.cpp',
|
||
'unit/compression/transaction_manager_catch2_test.cpp',
|
||
'unit/compression/zstandard_compressor_catch2_test.cpp',
|
||
),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#MCP submodule tests(MCPServer, Transport, JSON - RPC, Tools Schema, etc.)
|
||
#Migrated from GTest as part of yams - 3s4 / yams - 84g
|
||
catch2_mcp_submodule_exe = executable('catch2_mcp_submodule',
|
||
files(
|
||
'unit/mcp/initialize_response_catch2_test.cpp',
|
||
'unit/mcp/mcp_add_disconnect_catch2_test.cpp',
|
||
'unit/mcp/mcp_apps/capability_negotiation_test.cpp',
|
||
'unit/mcp/mcp_apps/tool_metadata_test.cpp',
|
||
'unit/mcp/mcp_apps/ui_resource_handling_test.cpp',
|
||
'unit/mcp/mcp_daemon_dto_parsing_catch2_test.cpp',
|
||
'unit/mcp/mcp_daemon_dto_parsing_more_catch2_test.cpp',
|
||
'unit/mcp/mcp_error_handling_catch2_test.cpp',
|
||
'unit/mcp/mcp_context_suggestion_catch2_test.cpp',
|
||
'unit/mcp/mcp_semantic_dedupe_catch2_test.cpp',
|
||
'unit/mcp/mcp_disconnect_uniform_errors_catch2_test.cpp',
|
||
'unit/mcp/mcp_doctor_flags_catch2_test.cpp',
|
||
'unit/mcp/mcp_jsonrpc_roundtrip_catch2_test.cpp',
|
||
'unit/mcp/mcp_protocol_version_features_test.cpp',
|
||
'unit/mcp/mcp_prompts_catch2_test.cpp',
|
||
'unit/mcp/mcp_resource_read_catch2_test.cpp',
|
||
'unit/mcp/mcp_request_routing_catch2_test.cpp',
|
||
'unit/mcp/mcp_search_dto_catch2_test.cpp',
|
||
'unit/mcp/mcp_tool_registry_dto_roundtrip_catch2_test.cpp',
|
||
'unit/mcp/mcp_server_catch2_test.cpp',
|
||
'unit/mcp/mcp_server_exec_catch2_test.cpp',
|
||
'unit/mcp/mcp_socket_resolution_catch2_test.cpp',
|
||
'unit/mcp/mcp_code_mode_catch2_test.cpp',
|
||
'unit/mcp/mcp_composite_dispatch_catch2_test.cpp',
|
||
'unit/mcp/mcp_tool_registry_wrappers_catch2_test.cpp',
|
||
'unit/mcp/mcp_tools_schema_and_smoke_catch2_test.cpp',
|
||
'unit/mcp/stdio_transport_catch2_test.cpp',
|
||
'unit/mcp/websocket_transport_catch2_test.cpp',
|
||
),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#CLI submodule tests(Commands, Data Resolution, Error Hints, Prompt Utils, etc.)
|
||
#Migrated from GTest as part of yams - 3s4 / yams - cli
|
||
catch2_cli_submodule_exe = executable('catch2_cli_submodule',
|
||
files(
|
||
'unit/common/format_catch2_test.cpp',
|
||
'unit/common/pattern_utils_catch2_test.cpp',
|
||
'unit/common/test_utils_catch2_test.cpp',
|
||
'unit/common/utf8_utils_catch2_test.cpp',
|
||
'unit/cli/add_command_stdin_catch2_test.cpp',
|
||
'unit/cli/cli_option_isolation_catch2_test.cpp',
|
||
'unit/cli/config_command_catch2_test.cpp',
|
||
'unit/cli/delete_command_catch2_test.cpp',
|
||
'unit/cli/daemon_helpers_pool_catch2_test.cpp',
|
||
'unit/cli/daemon_command_catch2_test.cpp',
|
||
'unit/cli/data_dir_resolution_catch2_test.cpp',
|
||
'unit/cli/download_command_catch2_test.cpp',
|
||
'unit/cli/doctor_command_catch2_test.cpp',
|
||
'unit/cli/dr_command_catch2_test.cpp',
|
||
'unit/cli/error_hints_catch2_test.cpp',
|
||
'unit/cli/graph_helpers_catch2_test.cpp',
|
||
'unit/cli/grep_command_path_tree_catch2_test.cpp',
|
||
'unit/cli/init_command_catch2_test.cpp',
|
||
'unit/cli/model_command_catch2_test.cpp',
|
||
'unit/cli/plugin_command_catch2_test.cpp',
|
||
'unit/cli/pipeline_stage_render_catch2_test.cpp',
|
||
'unit/cli/prompt_util_catch2_test.cpp',
|
||
'unit/cli/recommendation_util_catch2_test.cpp',
|
||
'unit/cli/repair_command_catch2_test.cpp',
|
||
'unit/cli/session_command_catch2_test.cpp',
|
||
'unit/cli/stream_heuristics_catch2_test.cpp',
|
||
'unit/cli/update_command_catch2_test.cpp',
|
||
'unit/cli/time_parser_catch2_test.cpp',
|
||
),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Vector Test Suites(Catch2) - requires enable - vector - tests
|
||
#Migrated from GTest as part of yams - 3s4 / yams - 1d4
|
||
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||
if get_option('enable-vector-tests')
|
||
catch2_vector_submodule_exe = executable('catch2_vector_submodule',
|
||
files(
|
||
'unit/vector/document_chunker_catch2_test.cpp',
|
||
'unit/vector/embedding_genai_selection_catch2_test.cpp',
|
||
'unit/vector/embedding_service_synthetic_catch2_test.cpp',
|
||
'unit/vector/hnsw_index_catch2_test.cpp',
|
||
'unit/vector/hnsw_persistence_catchup_catch2_test.cpp',
|
||
'unit/vector/multi_dimension_hnsw_catch2_test.cpp',
|
||
'unit/vector/sqlite_vec_backend_comprehensive_catch2_test.cpp',
|
||
'unit/vector/sqlite_vec_c_api_smoke_catch2_test.cpp',
|
||
'unit/vector/vector_dimension_validation_catch2_test.cpp',
|
||
'unit/vector/vector_smoke_catch2_test.cpp',
|
||
'unit/vector/turboquant_mse_catch2_test.cpp',
|
||
'unit/vector/turboquant_inner_product_catch2_test.cpp',
|
||
'unit/vector/turboquant_math_test.cpp',
|
||
'unit/vector/turboquant_asymmetric_score_catch2_test.cpp',
|
||
'unit/vector/turboquant_integration_catch2_test.cpp',
|
||
'unit/vector/turboquant_storage_catch2_test.cpp',
|
||
'unit/vector/turboquant_packed_reranker_catch2_test.cpp',
|
||
'unit/vector/compressed_ann_catch2_test.cpp',
|
||
),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
endif
|
||
|
||
#Tokenizer Tests(Catch2) - HuggingFaceTokenizer WordPiece, Unigram, special token injection
|
||
#Always - on : uses synthetic tokenizer.json files, no model downloads or sqlite - vec required.
|
||
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||
catch2_tokenizer_exe = executable('catch2_tokenizer',
|
||
files(
|
||
'unit/vector/tokenizer_catch2_test.cpp',
|
||
),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#API Test Suites(Catch2) - content store API tests
|
||
#Migrated from GTest as part of yams - 3s4 / api
|
||
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||
catch2_api_submodule_exe = executable('catch2_api_submodule',
|
||
files(
|
||
'unit/api/content_store_catch2_test.cpp',
|
||
),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Downloader Test Suites(Catch2) - download manager, resume store, CAS helpers
|
||
#Migrated from GTest as part of yams - 3s4 / downloader
|
||
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||
catch2_downloader_submodule_exe = executable('catch2_downloader_submodule',
|
||
files(
|
||
'unit/downloader/downloader_catch2_test.cpp',
|
||
),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Resolve Test Suites(Catch2) - resolver, backend implementations
|
||
#Migrated from GTest as part of yams - 3s4 / resolve
|
||
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||
catch2_resolve_submodule_exe = executable('catch2_resolve_submodule',
|
||
files(
|
||
'unit/resolve/resolver_catch2_test.cpp',
|
||
),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Manifest Test Suites(Catch2) - manifest manager, serialization, reconstruction
|
||
#Migrated from GTest as part of yams - 3s4 / yams - 1jm
|
||
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||
catch2_manifest_submodule_exe = executable('catch2_manifest_submodule',
|
||
files(
|
||
'unit/manifest/manifest_catch2_test.cpp',
|
||
),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Repair Test Suites(Catch2) - embedding repair scan
|
||
#Migrated from GTest as part of yams - 3s4 / yams - 1jm
|
||
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||
catch2_repair_submodule_exe = executable('catch2_repair_submodule',
|
||
files(
|
||
'unit/repair/embedding_repair_scan_catch2_test.cpp',
|
||
),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Versioning Test Suites(Catch2) - document versioning, indexer
|
||
#Migrated from GTest as part of yams - 3s4 / yams - 1jm
|
||
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||
catch2_versioning_submodule_exe = executable('catch2_versioning_submodule',
|
||
files(
|
||
'unit/versioning_document_indexer_catch2_test.cpp',
|
||
),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Metadata Test Suites(4 executables)
|
||
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||
|
||
catch2_metadata_retrieval_exe = executable('catch2_metadata_retrieval',
|
||
files('unit/app/services/retrieval_schema_validation_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Removed : catch2_metadata_search(search_metadata_interface_test.cpp) - HybridSearchEngine specific
|
||
|
||
catch2_metadata_symbol_exe = executable('catch2_metadata_symbol',
|
||
files('unit/metadata/symbol_metadata_schema_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
catch2_metadata_migration_exe = executable('catch2_metadata_migration',
|
||
files('unit/metadata/migration_validation_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Metadata Unit Tests(Catch2) - concepts, database, query_helpers, sql, value_variant
|
||
#Migrated from GTest as part of yams - 3s4 / yams - aqc
|
||
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||
catch2_metadata_unit_exe = executable('catch2_metadata_unit',
|
||
files('unit/metadata/metadata_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Connection Pool Tests(Catch2) - pool maintenance, waiting guard
|
||
#Migrated from GTest as part of yams - 3s4 / yams - aqc
|
||
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||
catch2_connection_pool_exe = executable('catch2_connection_pool',
|
||
files('unit/metadata/connection_pool_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#KG Store Tests(Catch2) - knowledge graph store operations
|
||
#Migrated from GTest as part of yams - 3s4 / yams - aqc
|
||
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||
catch2_kg_store_exe = executable('catch2_kg_store',
|
||
files(
|
||
'unit/metadata/kg_store_catch2_test.cpp',
|
||
'unit/metadata/kg_relation_summary_catch2_test.cpp',
|
||
),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Database Tests(Catch2) - database operations, connection pool, migrations
|
||
#Migrated from GTest as part of yams - 3s4 / yams - aqc
|
||
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||
catch2_database_exe = executable('catch2_database',
|
||
files('unit/metadata/database_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#FTS5 Tests(Catch2) - FTS5 support detection and fallback
|
||
#Migrated from GTest as part of yams - 3s4 / yams - aqc
|
||
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||
catch2_fts5_exe = executable('catch2_fts5',
|
||
files(
|
||
'unit/metadata/fts5_catch2_test.cpp',
|
||
'unit/metadata/fts5_query_sanitizer_catch2_test.cpp',
|
||
),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Tree Builder Tests(Catch2) - tree node operations and directory tree building
|
||
#Migrated from GTest as part of yams - 3s4 / yams - aqc
|
||
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||
catch2_tree_builder_exe = executable('catch2_tree_builder',
|
||
files('unit/metadata/tree_builder_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Tree Differ Tests(Catch2) - tree diffing operations
|
||
#Migrated from GTest as part of yams - 3s4 / yams - aqc
|
||
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||
catch2_tree_differ_exe = executable('catch2_tree_differ',
|
||
files('unit/metadata/tree_differ_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Path Tree Delete Tests(Catch2) - path tree removal operations
|
||
#Migrated from GTest as part of yams - 3s4 / yams - aqc
|
||
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||
catch2_path_tree_delete_exe = executable('catch2_path_tree_delete',
|
||
files('unit/metadata/path_tree_delete_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Session Isolation Tests(Catch2) - session - isolated memory operations
|
||
#Migrated from GTest as part of yams - 3s4 / yams - aqc
|
||
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||
catch2_session_isolation_exe = executable('catch2_session_isolation',
|
||
files('unit/metadata/session_isolation_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Metadata Repository Tests(Catch2) - repository operations
|
||
#Migrated from GTest as part of yams - 3s4 / yams - aqc
|
||
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||
catch2_metadata_repository_exe = executable('catch2_metadata_repository',
|
||
files('unit/metadata/metadata_repository_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Metadata Repository Cache Tests(Catch2) - cache operations
|
||
#Migrated from GTest as part of yams - 3s4 / yams - aqc
|
||
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||
catch2_metadata_repository_cache_exe = executable('catch2_metadata_repository_cache',
|
||
files('unit/metadata/metadata_repository_cache_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Fuzzy Index Prioritization Tests(Catch2) - fuzzy index scoring
|
||
#Migrated from GTest as part of yams - 3s4 / yams - aqc
|
||
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||
catch2_fuzzy_index_prioritization_exe = executable('catch2_fuzzy_index_prioritization',
|
||
files('unit/metadata/fuzzy_index_prioritization_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#KG Store Alias and Entities Tests(Catch2) - KG alias and entity operations
|
||
#Migrated from GTest as part of yams - 3s4 / yams - aqc
|
||
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||
catch2_kg_store_alias_entities_exe = executable('catch2_kg_store_alias_entities',
|
||
files('unit/metadata/kg_store_alias_and_entities_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#FTS Query Spec Integration Tests(Catch2) - FTS search integration
|
||
#Migrated from GTest as part of yams - 3s4 / yams - aqc
|
||
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||
catch2_fts_queryspec_integration_exe = executable('catch2_fts_queryspec_integration',
|
||
files('unit/metadata/fts_queryspec_integration_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Tags Query Spec Integration Tests(Catch2) - tags query integration
|
||
#Migrated from GTest as part of yams - 3s4 / yams - aqc
|
||
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||
catch2_tags_queryspec_integration_exe = executable('catch2_tags_queryspec_integration',
|
||
files('unit/metadata/tags_queryspec_integration_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Query Helpers Integration Tests(Catch2) - query helper integration
|
||
#Migrated from GTest as part of yams - 3s4 / yams - aqc
|
||
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||
catch2_query_helpers_integration_exe = executable('catch2_query_helpers_integration',
|
||
files('unit/metadata/query_helpers_integration_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Metadata Schema Tests(Catch2) - comprehensive schema, CRUD, FTS, migrations
|
||
#Migrated from GTest as part of yams - 3s4 / yams - aqc
|
||
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||
catch2_metadata_schema_exe = executable('catch2_metadata_schema',
|
||
files('unit/metadata/metadata_schema_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#FTS5 Failure Scenarios Tests(Catch2) - FTS5 edge cases and failure modes
|
||
#Migrated from GTest as part of yams - 3s4 / yams - aqc
|
||
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||
catch2_fts5_failure_scenarios_exe = executable('catch2_fts5_failure_scenarios',
|
||
files('unit/metadata/fts5_failure_scenarios_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Corpus Stats Tests(Catch2) - corpus statistics for adaptive search tuning
|
||
#Phase 1 of Epic yams - 7ez4 : Adaptive Search Engine Tuning via Corpus - Aware FSM
|
||
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||
catch2_corpus_stats_exe = executable('catch2_corpus_stats',
|
||
files('unit/metadata/corpus_stats_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Repository Foundation Tests(Catch2) - entity_traits, result_helpers, crud_ops
|
||
#Phase 1 of ADR - 0004 : MetadataRepository Refactor with Templates and Metaprogramming
|
||
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||
catch2_repository_foundation_exe = executable('catch2_repository_foundation',
|
||
files('unit/metadata/repository_foundation_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Core tests(minimal dependencies - no daemon)
|
||
core_test_deps = [
|
||
dependency('spdlog'),
|
||
dependency('yams_core'),
|
||
]
|
||
|
||
core_cpp23_features_exe = executable('core_cpp23_features',
|
||
files('unit/core/cpp23_features_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + core_test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
core_magic_numbers_exe = executable('core_magic_numbers',
|
||
files('unit/core/magic_numbers_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + core_test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
core_uuid_exe = executable('core_uuid',
|
||
files('unit/core/uuid_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + core_test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
detection_exe = executable('detection',
|
||
files(
|
||
'unit/detection/command_integration_test.cpp',
|
||
'unit/detection/detection_test_helpers.h',
|
||
'unit/detection/file_type_detector_test.cpp',
|
||
'unit/detection/file_type_graceful_fallback_test.cpp',
|
||
),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Plugins tests(Catch2 - migrated from GTest)
|
||
plugins_catch2_exe = executable('plugins_catch2',
|
||
files(
|
||
'unit/plugins/plugin_installer_test.cpp',
|
||
'unit/plugins/plugin_repo_client_test.cpp',
|
||
'unit/plugins/onnx_request_test.cpp',
|
||
'unit/plugins/symbol_extractor_query_test.cpp',
|
||
'unit/plugins/symbol_extractor_validation_test.cpp',
|
||
),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Integrity tests(Catch2 - migrated from GTest)
|
||
integrity_test_deps = [
|
||
dependency('spdlog'),
|
||
dependency('yams_core'),
|
||
dependency('yams_crypto'),
|
||
dependency('yams_integrity'),
|
||
dependency('yams_storage_engine'),
|
||
dependency('yams_reference_counter'),
|
||
dependency('yams_metadata'),
|
||
dependency('yams_search'),
|
||
dependency('yams_daemon'),
|
||
]
|
||
|
||
integrity_catch2_exe = executable('integrity_catch2',
|
||
files(
|
||
'unit/integrity/chunk_validator_test.cpp',
|
||
'unit/integrity/integrity_verifier_simple_test.cpp',
|
||
'unit/integrity/repair_manager_test.cpp',
|
||
'unit/integrity/verification_monitor_test.cpp',
|
||
'unit/integrity/verification_scheduler_test.cpp',
|
||
),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + integrity_test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Content tests(depends on content, extraction, detection modules)
|
||
content_test_deps = [
|
||
dependency('spdlog'),
|
||
dependency('yams_core'),
|
||
dependency('yams_content'),
|
||
dependency('yams_extraction'),
|
||
dependency('yams_detection'),
|
||
dependency('sqlite3'),
|
||
]
|
||
|
||
content_handlers_exe = executable('content_handlers',
|
||
files('unit/content/content_handlers_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + content_test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Archive content handler tests(formatToString, ProcessingStats, helper functions, canHandle)
|
||
archive_content_handler_exe = executable('archive_content_handler',
|
||
files('unit/content/archive_content_handler_catch2_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + content_test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
html_extractor_robust_exe = executable('html_extractor_robust',
|
||
files('unit/extraction/html_extractor_robust_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + content_test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Text extraction to FTS5 pipeline test(detection->extraction->indexing->search)
|
||
text_extraction_fts5_pipeline_exe = executable('text_extraction_fts5_pipeline',
|
||
files('unit/extraction/text_extraction_fts5_pipeline_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + content_test_deps + [dependency('yams_metadata')],
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Plugin process tests(external plugin infrastructure)
|
||
plugin_process_test_deps = [
|
||
dependency('spdlog'),
|
||
dependency('yams_core'),
|
||
dependency('yams_extraction'),
|
||
dependency('nlohmann_json'),
|
||
]
|
||
|
||
plugin_process_exe = executable('plugin_process',
|
||
files('unit/extraction/plugin_process_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + plugin_process_test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
plugin_process_minimal_exe = executable('plugin_process_minimal',
|
||
files('unit/extraction/plugin_process_minimal_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + plugin_process_test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
plugin_process_launcher_exe = executable('plugin_process_launcher',
|
||
files('unit/extraction/plugin_process_launcher_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + plugin_process_test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
jsonrpc_client_exe = executable('jsonrpc_client',
|
||
files('unit/extraction/jsonrpc_client_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + plugin_process_test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
external_plugin_extractor_exe = executable('external_plugin_extractor',
|
||
files('unit/extraction/external_plugin_extractor_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + plugin_process_test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Chunking tests(depends on chunking module)
|
||
chunking_test_deps = [
|
||
dependency('spdlog'),
|
||
dependency('yams_core'),
|
||
dependency('yams_chunking'),
|
||
dependency('yams_crypto'),
|
||
]
|
||
|
||
chunking_exe = executable('chunking',
|
||
files('unit/chunking/chunking_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + chunking_test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Crypto tests(depends on crypto module)
|
||
crypto_test_deps = [
|
||
dependency('spdlog'),
|
||
dependency('yams_core'),
|
||
dependency('yams_crypto'),
|
||
]
|
||
|
||
crypto_exe = executable('crypto',
|
||
files('unit/crypto/crypto_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + crypto_test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
grep_service_exe = executable('grep_service',
|
||
files('unit/app/services/grep_service_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
indexing_service_exe = executable('indexing_service',
|
||
files('unit/app/services/indexing_service_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
document_service_exe = executable('document_service',
|
||
files('unit/app/services/document_service_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
service_utilities_exe = executable('service_utilities',
|
||
files('unit/app/services/service_utilities_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
simd_memmem_exe = executable('simd_memmem',
|
||
files('unit/app/services/simd_memmem_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
grep_regex_exe = executable('grep_regex',
|
||
files('unit/app/services/grep_regex_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
literal_extractor_exe = executable('literal_extractor',
|
||
files('unit/app/services/literal_extractor_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
search_test_deps = [
|
||
dependency('spdlog'),
|
||
dependency('yams_core'),
|
||
dependency('yams_search'),
|
||
dependency('yams_vector'),
|
||
dependency('yams_metadata'),
|
||
dependency('yams_app_services'),
|
||
dependency('yams_api'),
|
||
boost_dep,
|
||
]
|
||
|
||
#Re - enabled with mock - based tests disabled, placeholder integration test added
|
||
#TODO PBI - 071 : Implement full integration tests with real components
|
||
hybrid_search_exe = executable('hybrid_search',
|
||
files('unit/search/hybrid_search_comprehensive_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + search_test_deps + [
|
||
dependency('yams_daemon'),
|
||
dependency('yams_daemon_client'),
|
||
],
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Corpus Stats Search Integration Tests(Catch2)
|
||
#Phase 1 of Epic yams - 7ez4 : Validates corpus stats collection from real document store
|
||
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||
corpus_stats_search_integration_exe = executable('corpus_stats_search_integration',
|
||
files('unit/search/corpus_stats_search_integration_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + search_test_deps + [
|
||
dependency('yams_daemon'),
|
||
dependency('yams_daemon_client'),
|
||
],
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Reranker Integration Tests(Catch2)
|
||
#Tests IReranker interface, ModelProviderRerankerAdapter, and reranker config
|
||
reranker_integration_exe = executable('reranker_integration',
|
||
files('unit/search/reranker_integration_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep] + search_test_deps + [
|
||
dependency('yams_daemon'),
|
||
],
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
|
||
#Ghidra plugin integration test(PBI - 075)
|
||
#Tests plugin spawning and JSON - RPC communication without requiring Ghidra installed
|
||
if host_machine.system() != 'windows'
|
||
ghidra_plugin_exe = executable('ghidra_plugin_communication',
|
||
files('integration/ghidra_plugin_communication_test.cpp'),
|
||
include_directories: incs,
|
||
dependencies: [catch2_dep, catch2_main_dep, dependency('nlohmann_json'), dependency('spdlog')],
|
||
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
|
||
build_rpath: ':'.join(_test_rpaths),
|
||
install: false,
|
||
)
|
||
endif
|
||
|
||
#Test Registrations
|
||
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||
|
||
#Metadata tests
|
||
test('metadata_retrieval_schema', catch2_metadata_retrieval_exe,
|
||
suite: ['catch2', 'unit', 'metadata', 'retrieval'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
#Removed : metadata_search test - HybridSearchEngine specific
|
||
|
||
test('metadata_symbol_schema', catch2_metadata_symbol_exe,
|
||
suite: ['catch2', 'unit', 'metadata', 'symbol'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120
|
||
)
|
||
|
||
test('metadata_migration_validation', catch2_metadata_migration_exe,
|
||
suite: ['catch2', 'unit', 'metadata', 'migration'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120
|
||
)
|
||
|
||
test('metadata_unit', catch2_metadata_unit_exe,
|
||
suite: ['catch2', 'unit', 'metadata', 'yams-metadata'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120
|
||
)
|
||
|
||
test('connection_pool', catch2_connection_pool_exe,
|
||
suite: ['catch2', 'unit', 'metadata', 'connection_pool'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120
|
||
)
|
||
|
||
test('kg_store', catch2_kg_store_exe,
|
||
suite: ['catch2', 'unit', 'metadata', 'kg'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120
|
||
)
|
||
|
||
test('database', catch2_database_exe,
|
||
suite: ['catch2', 'unit', 'metadata', 'database'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120
|
||
)
|
||
|
||
test('fts5', catch2_fts5_exe,
|
||
suite: ['catch2', 'unit', 'metadata', 'fts5'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
test('tree_builder', catch2_tree_builder_exe,
|
||
suite: ['catch2', 'unit', 'metadata', 'tree_builder'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120
|
||
)
|
||
|
||
test('tree_differ', catch2_tree_differ_exe,
|
||
suite: ['catch2', 'unit', 'metadata', 'tree_differ'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120
|
||
)
|
||
|
||
test('path_tree_delete', catch2_path_tree_delete_exe,
|
||
suite: ['catch2', 'unit', 'metadata', 'path_tree'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120
|
||
)
|
||
|
||
test('session_isolation', catch2_session_isolation_exe,
|
||
suite: ['catch2', 'unit', 'metadata', 'session'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120
|
||
)
|
||
|
||
test('metadata_repository', catch2_metadata_repository_exe,
|
||
suite: ['catch2', 'unit', 'metadata', 'repository'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 180
|
||
)
|
||
|
||
test('metadata_repository_cache', catch2_metadata_repository_cache_exe,
|
||
suite: ['catch2', 'unit', 'metadata', 'cache'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
test('fuzzy_index_prioritization', catch2_fuzzy_index_prioritization_exe,
|
||
suite: ['catch2', 'unit', 'metadata', 'fuzzy'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
test('kg_store_alias_entities', catch2_kg_store_alias_entities_exe,
|
||
suite: ['catch2', 'unit', 'metadata', 'kg'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120
|
||
)
|
||
|
||
test('fts_queryspec_integration', catch2_fts_queryspec_integration_exe,
|
||
suite: ['catch2', 'unit', 'metadata', 'fts'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
test('tags_queryspec_integration', catch2_tags_queryspec_integration_exe,
|
||
suite: ['catch2', 'unit', 'metadata', 'tags'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
test('query_helpers_integration', catch2_query_helpers_integration_exe,
|
||
suite: ['catch2', 'unit', 'metadata', 'query_helpers'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
test('metadata_schema', catch2_metadata_schema_exe,
|
||
suite: ['catch2', 'unit', 'metadata', 'schema'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 300 # Comprehensive tests including performance metrics
|
||
)
|
||
|
||
test('fts5_failure_scenarios', catch2_fts5_failure_scenarios_exe,
|
||
suite: ['catch2', 'unit', 'metadata', 'fts5', 'failure'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 180 # Includes concurrent and large content tests
|
||
)
|
||
|
||
test('corpus_stats', catch2_corpus_stats_exe,
|
||
suite: ['catch2', 'unit', 'metadata', 'corpus_stats'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120
|
||
)
|
||
|
||
test('repository_foundation', catch2_repository_foundation_exe,
|
||
suite: ['catch2', 'unit', 'metadata', 'repository', 'foundation'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 180
|
||
)
|
||
|
||
#Core tests
|
||
test('core_cpp23_features', core_cpp23_features_exe,
|
||
suite: ['catch2', 'unit', 'core', 'cpp23'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
test('core_magic_numbers', core_magic_numbers_exe,
|
||
suite: ['catch2', 'unit', 'core', 'magic'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
test('core_uuid', core_uuid_exe,
|
||
suite: ['catch2', 'unit', 'core', 'uuid'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
test('detection', detection_exe,
|
||
suite: ['catch2', 'unit', 'detection'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120
|
||
)
|
||
|
||
test('plugins_catch2', plugins_catch2_exe,
|
||
suite: ['catch2', 'unit', 'plugins'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120
|
||
)
|
||
|
||
test('integrity_catch2', integrity_catch2_exe,
|
||
suite: ['catch2', 'unit', 'integrity'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120
|
||
)
|
||
|
||
#Content tests
|
||
test('content_handlers', content_handlers_exe,
|
||
suite: ['catch2', 'unit', 'content', 'handlers'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
test('archive_content_handler', archive_content_handler_exe,
|
||
suite: ['catch2', 'unit', 'content', 'archive'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
test('html_extractor_robust', html_extractor_robust_exe,
|
||
suite: ['catch2', 'unit', 'extraction', 'html'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120 # Allow longer timeout for large file tests
|
||
)
|
||
|
||
test('text_extraction_fts5_pipeline', text_extraction_fts5_pipeline_exe,
|
||
suite: ['catch2', 'unit', 'extraction', 'pipeline', 'fts5'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
test('plugin_process', plugin_process_exe,
|
||
suite: ['catch2', 'unit', 'extraction', 'plugin'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120
|
||
)
|
||
|
||
test('plugin_process_minimal', plugin_process_minimal_exe,
|
||
suite: ['catch2', 'unit', 'extraction', 'plugin', 'debug'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120,
|
||
is_parallel: false
|
||
)
|
||
|
||
test('plugin_process_launcher', plugin_process_launcher_exe,
|
||
suite: ['catch2', 'unit', 'extraction', 'plugin', 'launcher'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path, 'YAMS_SOURCE_DIR': meson.project_source_root() },
|
||
timeout: host_machine.system() == 'windows' ? 180 : 120,
|
||
#PyInstaller process tests have resource contention when run in parallel
|
||
is_parallel: false
|
||
)
|
||
|
||
test('jsonrpc_client', jsonrpc_client_exe,
|
||
suite: ['catch2', 'unit', 'extraction', 'jsonrpc'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
test('external_plugin_extractor', external_plugin_extractor_exe,
|
||
suite: ['catch2', 'unit', 'extraction', 'plugin'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
#Chunking tests
|
||
test('chunking', chunking_exe,
|
||
suite: ['catch2', 'unit', 'chunking'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
#Crypto tests
|
||
test('crypto', crypto_exe,
|
||
suite: ['catch2', 'unit', 'crypto'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
#Service tests
|
||
test('grep_service', grep_service_exe,
|
||
suite: ['catch2', 'unit', 'services', 'grep'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120
|
||
)
|
||
|
||
test('indexing_service', indexing_service_exe,
|
||
suite: ['catch2', 'unit', 'services', 'indexing'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 180
|
||
)
|
||
|
||
test('document_service', document_service_exe,
|
||
suite: ['catch2', 'unit', 'services', 'document'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 180
|
||
)
|
||
|
||
test('service_utilities', service_utilities_exe,
|
||
suite: ['catch2', 'unit', 'services', 'utilities'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60,
|
||
is_parallel: false
|
||
)
|
||
|
||
test('simd_memmem', simd_memmem_exe,
|
||
suite: ['catch2', 'unit', 'services', 'simd'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
test('grep_regex', grep_regex_exe,
|
||
suite: ['catch2', 'unit', 'services', 'grep'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
test('literal_extractor', literal_extractor_exe,
|
||
suite: ['catch2', 'unit', 'services', 'literal'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
#Search tests
|
||
test('hybrid_search', hybrid_search_exe,
|
||
suite: ['catch2', 'unit', 'search', 'hybrid'],
|
||
env: {
|
||
'LD_LIBRARY_PATH': _test_env_ld_library_path,
|
||
'YAMS_DISABLE_VECTORS': '1',
|
||
},
|
||
timeout: 120
|
||
)
|
||
|
||
test('corpus_stats_search_integration', corpus_stats_search_integration_exe,
|
||
suite: ['catch2', 'integration', 'search', 'corpus_stats'],
|
||
env: {
|
||
'LD_LIBRARY_PATH': _test_env_ld_library_path,
|
||
'YAMS_DISABLE_VECTORS': '1',
|
||
},
|
||
timeout: 180
|
||
)
|
||
|
||
test('reranker_integration', reranker_integration_exe,
|
||
suite: ['catch2', 'unit', 'search', 'reranker'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
#Plugin integration tests
|
||
if host_machine.system() != 'windows'
|
||
test('ghidra_plugin_communication', ghidra_plugin_exe,
|
||
suite: ['catch2', 'integration', 'plugin', 'ghidra'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path, 'YAMS_SOURCE_DIR': meson.project_source_root() },
|
||
timeout: 30,
|
||
is_parallel: false
|
||
)
|
||
endif
|
||
|
||
#Daemon tests
|
||
test('daemon_fsm_suite', catch2_daemon_fsm_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'fsm'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60,
|
||
is_parallel: false
|
||
)
|
||
|
||
daemon_metrics_timeout = (get_option('enable-tsan') or get_option('enable-asan')) ? 180 : 60
|
||
|
||
test('daemon_metrics_status', catch2_daemon_metrics_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'metrics', 'status'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: daemon_metrics_timeout,
|
||
is_parallel: false
|
||
)
|
||
|
||
test('daemon_components', catch2_daemon_components_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'components'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60,
|
||
is_parallel: false
|
||
)
|
||
|
||
test('repair_service', catch2_repair_service_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'repair', 'stuck-docs'],
|
||
env: {
|
||
'LD_LIBRARY_PATH': _test_env_ld_library_path,
|
||
'YAMS_TEST_SAFE_SINGLE_INSTANCE': '1',
|
||
'YAMS_SQLITE_MINIMAL_PRAGMAS': '1',
|
||
'YAMS_SQLITE_BUSY_TIMEOUT_MS': '1000',
|
||
'YAMS_SQLITE_VEC_SKIP_INIT': '1',
|
||
'YAMS_DISABLE_VECTORS': '1',
|
||
'YAMS_DISABLE_VECTOR_DB': '1',
|
||
'YAMS_SKIP_MODEL_LOADING': '1',
|
||
'YAMS_TESTING': '1',
|
||
},
|
||
timeout: 120,
|
||
is_parallel: false
|
||
)
|
||
|
||
test('daemon_protocol', catch2_daemon_protocol_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'protocol'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60,
|
||
is_parallel: false
|
||
)
|
||
|
||
test('daemon_background_processing', catch2_daemon_background_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'background'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120
|
||
)
|
||
|
||
test('daemon_graph_component', catch2_daemon_graph_component_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'graph', 'pbi-009'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60,
|
||
is_parallel: false
|
||
)
|
||
|
||
test('daemon_component_submodule', catch2_daemon_component_submodule_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'components', 'yams-zns'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120
|
||
)
|
||
|
||
test('gradient_limiter', catch2_gradient_limiter_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'gradient'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
test('work_coordinator', catch2_work_coordinator_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'work-coordinator'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
test('post_ingest_queue_unit', catch2_post_ingest_queue_unit_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'post-ingest'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
test('metrics_consistency', catch2_metrics_consistency_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'metrics'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
test('search_service', catch2_search_service_exe,
|
||
suite: ['catch2', 'unit', 'services', 'search'],
|
||
env: {
|
||
'LD_LIBRARY_PATH': _test_env_ld_library_path,
|
||
'YAMS_TEST_SAFE_SINGLE_INSTANCE': '1',
|
||
'YAMS_SQLITE_MINIMAL_PRAGMAS': '1',
|
||
'YAMS_SQLITE_BUSY_TIMEOUT_MS': '1000',
|
||
'YAMS_SQLITE_VEC_SKIP_INIT': '1',
|
||
'YAMS_DISABLE_VECTORS': '1',
|
||
'YAMS_TESTING': '1',
|
||
},
|
||
timeout: 180,
|
||
is_parallel: false
|
||
)
|
||
|
||
test('fts5_stress', catch2_fts5_stress_exe,
|
||
suite: ['catch2', 'stress', 'metadata', 'fts5'],
|
||
args: ['--allow-running-no-tests'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 300,
|
||
is_parallel: false
|
||
)
|
||
|
||
test('daemon_plugin_harness', catch2_daemon_plugin_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'plugin'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60,
|
||
is_parallel: false
|
||
)
|
||
|
||
if onnx_dep.found()
|
||
#Reranker session test - uses mock mode by default, enabling quick CI runs
|
||
test('daemon_reranker_session', catch2_daemon_reranker_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'reranker'],
|
||
env: {
|
||
'LD_LIBRARY_PATH': _test_env_ld_library_path,
|
||
'YAMS_TEST_MODE': '1', # Enable mock mode for CI
|
||
},
|
||
timeout: 60,
|
||
is_parallel: true
|
||
)
|
||
endif
|
||
|
||
if onnx_dep.found()
|
||
test('daemon_onnx_provider_config', catch2_daemon_onnx_provider_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'onnx'],
|
||
env: {
|
||
'LD_LIBRARY_PATH': _test_env_ld_library_path,
|
||
'YAMS_TEST_MODE': '1',
|
||
},
|
||
timeout: 60,
|
||
is_parallel: true
|
||
)
|
||
|
||
test('gpu_provider_coreml', catch2_gpu_provider_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'gpu'],
|
||
env: {
|
||
'LD_LIBRARY_PATH': _test_env_ld_library_path,
|
||
},
|
||
timeout: 30,
|
||
is_parallel: true
|
||
)
|
||
endif
|
||
|
||
test('plugin_infrastructure', catch2_plugin_infrastructure_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'plugin', 'infrastructure'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60,
|
||
is_parallel: false
|
||
)
|
||
|
||
test('external_plugin_host', catch2_external_plugin_host_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'plugin', 'external'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60,
|
||
is_parallel: false
|
||
)
|
||
|
||
test('extractor_adapter', catch2_extractor_adapter_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'extractor'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
test('repair_scheduling_adapter', catch2_repair_scheduling_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'repair', 'yams-3s4'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120
|
||
)
|
||
|
||
test('service_manager', catch2_service_manager_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'service_manager', 'yams-3s4'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120
|
||
)
|
||
|
||
test('streaming_processor', catch2_streaming_processor_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'streaming', 'yams-3s4'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
test('in_process_transport', catch2_in_process_transport_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'streaming', 'inprocess'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
test('sandbox_detection', catch2_sandbox_detection_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'sandbox'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
test('multiplex_client', catch2_multiplex_client_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'multiplex', 'yams-3s4'],
|
||
args: ['--allow-running-no-tests'], # All tests have [.requires_daemon] tag
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
test('entity_graph_service', catch2_entity_graph_service_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'yams-3s4'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120
|
||
)
|
||
|
||
#These tests use ServiceManager / WorkCoordinator which have resource contention
|
||
#when run in parallel with other daemon tests - run sequentially
|
||
test('service_manager_shutdown', catch2_service_manager_shutdown_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'service_manager', 'yams-3s4'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120,
|
||
is_parallel: false
|
||
)
|
||
|
||
test('service_manager_degraded', catch2_service_manager_degraded_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'service_manager', 'yams-3s4'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120,
|
||
is_parallel: false
|
||
)
|
||
|
||
test('repair_binary_filter', catch2_repair_binary_filter_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'repair', 'yams-3s4'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120,
|
||
is_parallel: false
|
||
)
|
||
|
||
test('abi_model_provider_dim', catch2_abi_model_provider_dim_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'yams-3s4'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
test('embedding_recovery', catch2_embedding_recovery_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'yams-3s4'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120,
|
||
is_parallel: false
|
||
)
|
||
|
||
test('request_io_edge', catch2_request_io_edge_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'yams-3s4'],
|
||
args: ['--allow-running-no-tests'], # Placeholder tests - all skipped
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120,
|
||
is_parallel: false
|
||
)
|
||
|
||
test('daemon_warm_bench', catch2_daemon_warm_bench_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'bench', 'yams-3s4'],
|
||
args: ['--allow-running-no-tests'], # Bench only runs when YAMS_BENCH_FAST=1
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120
|
||
)
|
||
|
||
test('request_lifetime', catch2_request_lifetime_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'yams-3s4'],
|
||
args: ['--allow-running-no-tests'], # Skips when streaming disabled
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120,
|
||
is_parallel: false
|
||
)
|
||
|
||
test('writer_drain_cleanup', catch2_writer_drain_cleanup_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'ipc', 'mux'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60,
|
||
is_parallel: false
|
||
)
|
||
|
||
test('asio_connection_pool', catch2_asio_connection_pool_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'connection-pool'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120,
|
||
is_parallel: false,
|
||
#Test skips on Windows(Unix domain sockets not supported)
|
||
should_fail: host_machine.system() == 'windows'
|
||
)
|
||
|
||
test('asio_transport_exhaustion', catch2_asio_transport_exhaustion_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'transport', 'max-inflight'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120,
|
||
is_parallel: false,
|
||
#Test skips on Windows(Unix domain sockets not supported)
|
||
should_fail: host_machine.system() == 'windows'
|
||
)
|
||
|
||
test('asio_transport_inflight_close_ipc_prefix', catch2_asio_transport_inflight_close_ipc_prefix_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'transport', 'ipc'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120,
|
||
is_parallel: false,
|
||
#Test skips on Windows(Unix domain sockets not supported)
|
||
should_fail: host_machine.system() == 'windows'
|
||
)
|
||
|
||
test('daemon', catch2_daemon_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'yams-3s4'],
|
||
env: {
|
||
'LD_LIBRARY_PATH': _test_env_ld_library_path,
|
||
#Disable ABI plugins to avoid TSAN + ONNX memory pressure causing SIGKILL
|
||
'YAMS_DISABLE_ABI_PLUGINS': '1',
|
||
},
|
||
timeout: 120,
|
||
#Test skips on Windows(Unix domain sockets not supported)
|
||
should_fail: host_machine.system() == 'windows'
|
||
)
|
||
|
||
test('tune_advisor_threshold', catch2_tune_advisor_threshold_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'tune', 'advisor'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120
|
||
)
|
||
|
||
test('tuning_allocation', catch2_tuning_allocation_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'tune', 'allocation'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120
|
||
)
|
||
|
||
test('tuning_reconciliation', catch2_tuning_reconciliation_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'tune', 'reconciliation'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120
|
||
)
|
||
|
||
test('post_ingest_dynamic_cap_recovery', catch2_post_ingest_dynamic_cap_recovery_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'tune', 'post-ingest'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
test('resource_governance', catch2_resource_governance_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'governance'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
test('timing_audit', catch2_timing_audit_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'timing-audit'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120
|
||
)
|
||
|
||
test('dynamic_cap_sentinel', catch2_dynamic_cap_sentinel_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'tune', 'dynamic-cap'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
test('idle_zero_concurrency', catch2_idle_zero_concurrency_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'tune', 'idle'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
test('health_check_isolation', catch2_health_check_isolation_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'state', 'health-check'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
test('tuning_loop_wakeup', catch2_tuning_loop_wakeup_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'tune', 'wakeup'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
if onnx_dep.found()
|
||
test('onnx_model_pool', catch2_onnx_model_pool_exe,
|
||
suite: ['catch2', 'unit', 'daemon', 'onnx', 'pool'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120,
|
||
)
|
||
endif
|
||
|
||
test('cli_init_command', catch2_cli_init_command_exe,
|
||
suite: ['catch2', 'unit', 'cli', 'init'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120,
|
||
is_parallel: false
|
||
)
|
||
|
||
test('storage_backend', catch2_storage_backend_exe,
|
||
suite: ['catch2', 'unit', 'storage', 'backend'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120
|
||
)
|
||
|
||
test('storage_submodule', catch2_storage_submodule_exe,
|
||
suite: ['catch2', 'unit', 'storage', 'yams-8b9'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 300
|
||
)
|
||
|
||
test('wal_entry', catch2_wal_entry_exe,
|
||
suite: ['catch2', 'unit', 'wal'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
test('wal_submodule', catch2_wal_submodule_exe,
|
||
suite: ['catch2', 'unit', 'wal'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 120
|
||
)
|
||
|
||
test('search_submodule', catch2_search_submodule_exe,
|
||
suite: ['catch2', 'unit', 'search', 'yams-1yq'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 180
|
||
)
|
||
|
||
#SearchTuner FSM tests(Phase 2 of Epic yams - 7ez4)
|
||
test('search_tuner', catch2_search_tuner_exe,
|
||
suite: ['catch2', 'unit', 'search', 'tuner', 'yams-7ez4'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
#InternalBenchmark tests(Phase 3 of Epic yams - 7ez4)
|
||
test('internal_benchmark', catch2_internal_benchmark_exe,
|
||
suite: ['catch2', 'unit', 'search', 'benchmark', 'yams-7ez4'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
heavy_submodule_timeout = (get_option('enable-tsan') or get_option('enable-asan')) ? 600 : 300
|
||
|
||
test('compression_submodule', catch2_compression_submodule_exe,
|
||
suite: ['catch2', 'unit', 'compression', 'yams-pmf'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: heavy_submodule_timeout
|
||
)
|
||
|
||
test('mcp_submodule', catch2_mcp_submodule_exe,
|
||
suite: ['catch2', 'unit', 'mcp', 'yams-84g'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 180
|
||
)
|
||
|
||
#CLI submodule tests - all tests pass but Windows has a cleanup crash(0xC0000005)
|
||
#during process exit due to global destructor issues with daemon client state.
|
||
#Using should_fail : true until the cleanup issue is fixed.
|
||
test('cli_submodule', catch2_cli_submodule_exe,
|
||
suite: ['catch2', 'unit', 'cli', 'yams-cli'],
|
||
env: {
|
||
'LD_LIBRARY_PATH': _test_env_ld_library_path,
|
||
'TSAN_OPTIONS': _test_tsan_options,
|
||
},
|
||
timeout: 300, # Tests take ~200s
|
||
should_fail: host_machine.system() == 'windows'
|
||
)
|
||
|
||
#Vector test suite(requires enable - vector - tests)
|
||
#Migrated from GTest as part of yams - 3s4 / yams - 1d4
|
||
if get_option('enable-vector-tests')
|
||
test('vector_submodule', catch2_vector_submodule_exe,
|
||
suite: ['catch2', 'unit', 'vector', 'yams-1d4'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: heavy_submodule_timeout
|
||
)
|
||
endif
|
||
|
||
#API submodule tests(content store, metadata API)
|
||
#Migrated from GTest as part of yams - 3s4 / api
|
||
test('api_submodule', catch2_api_submodule_exe,
|
||
suite: ['catch2', 'unit', 'api', 'yams-api'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 180
|
||
)
|
||
|
||
#Tokenizer tests(WordPiece, Unigram, special token injection)
|
||
test('tokenizer', catch2_tokenizer_exe,
|
||
suite: ['catch2', 'unit', 'vector', 'yams-tokenizer'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 60
|
||
)
|
||
|
||
#Downloader submodule tests(download manager, resume, CAS)
|
||
#Migrated from GTest as part of yams - 3s4 / downloader
|
||
test('downloader_submodule', catch2_downloader_submodule_exe,
|
||
suite: ['catch2', 'unit', 'downloader', 'yams-downloader'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 180
|
||
)
|
||
|
||
#Resolve submodule tests(resolver, backends)
|
||
#Migrated from GTest as part of yams - 3s4 / resolve
|
||
test('resolve_submodule', catch2_resolve_submodule_exe,
|
||
suite: ['catch2', 'unit', 'resolve', 'yams-resolve'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 180
|
||
)
|
||
|
||
#Manifest submodule tests(manifest manager, serialization, reconstruction)
|
||
#Migrated from GTest as part of yams - 3s4 / yams - 1jm
|
||
test('manifest_submodule', catch2_manifest_submodule_exe,
|
||
suite: ['catch2', 'unit', 'manifest', 'yams-manifest'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 180
|
||
)
|
||
|
||
#Repair submodule tests(embedding repair scan)
|
||
#Migrated from GTest as part of yams - 3s4 / yams - 1jm
|
||
#Note : --allow - running - no - tests needed because tests skip when YAMS_DISABLE_VECTORS = 1
|
||
test('repair_submodule', catch2_repair_submodule_exe,
|
||
suite: ['catch2', 'unit', 'repair', 'yams-repair'],
|
||
args: ['--allow-running-no-tests'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 180
|
||
)
|
||
|
||
#Versioning submodule tests(document versioning, indexer)
|
||
#Migrated from GTest as part of yams - 3s4 / yams - 1jm
|
||
test('versioning_submodule', catch2_versioning_submodule_exe,
|
||
suite: ['catch2', 'unit', 'versioning', 'yams-versioning'],
|
||
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
|
||
timeout: 180
|
||
)
|
||
endif
|