# ############################################################################# # Copyright (c) 2018-present Dima Krasner # lzutao # All rights reserved. # # This source code is licensed under both the BSD-style license (found in the # LICENSE file in the root directory of this source tree) and the GPLv2 (found # in the COPYING file in the root directory of this source tree). # ############################################################################# zstd_rootdir = '../../..' tests_supported_oses = [os_linux, 'gnu/kfreebsd', os_darwin, 'gnu', 'openbsd', os_freebsd, 'netbsd', 'dragonfly', os_sun] # ============================================================================= # Test flags # ============================================================================= FUZZER_FLAGS = ['--no-big-tests'] FUZZERTEST = '-T200s' ZSTREAM_TESTTIME = '-T90s' DECODECORPUS_TESTTIME = '-T30' ZSTDRTTEST = ['--test-large-data'] # ============================================================================= # Executables # ============================================================================= test_includes = [ include_directories(join_paths(zstd_rootdir, 'programs')) ] datagen_sources = [join_paths(zstd_rootdir, 'programs/datagen.c'), join_paths(zstd_rootdir, 'tests/datagencli.c')] datagen = executable('datagen', datagen_sources, c_args: [ '-DNDEBUG' ], include_directories: test_includes, dependencies: libzstd_dep, install: false) fullbench_sources = [join_paths(zstd_rootdir, 'programs/datagen.c'), join_paths(zstd_rootdir, 'programs/util.c'), join_paths(zstd_rootdir, 'programs/timefn.c'), join_paths(zstd_rootdir, 'programs/benchfn.c'), join_paths(zstd_rootdir, 'programs/benchzstd.c'), join_paths(zstd_rootdir, 'tests/fullbench.c')] fullbench = executable('fullbench', fullbench_sources, include_directories: test_includes, dependencies: libzstd_dep, install: false) fuzzer_sources = [join_paths(zstd_rootdir, 'programs/datagen.c'), join_paths(zstd_rootdir, 'programs/util.c'), join_paths(zstd_rootdir, 'programs/timefn.c'), join_paths(zstd_rootdir, 'tests/fuzzer.c')] fuzzer = executable('fuzzer', fuzzer_sources, include_directories: test_includes, dependencies: libzstd_dep, install: false) zbufftest_sources = [join_paths(zstd_rootdir, 'programs/datagen.c'), join_paths(zstd_rootdir, 'programs/util.c'), join_paths(zstd_rootdir, 'programs/timefn.c'), join_paths(zstd_rootdir, 'tests/zbufftest.c')] zbufftest = executable('zbufftest', zbufftest_sources, c_args: ['-Wno-deprecated-declarations'], include_directories: test_includes, dependencies: libzstd_dep, install: false) zstreamtest_sources = [join_paths(zstd_rootdir, 'programs/datagen.c'), join_paths(zstd_rootdir, 'programs/util.c'), join_paths(zstd_rootdir, 'programs/timefn.c'), join_paths(zstd_rootdir, 'tests/seqgen.c'), join_paths(zstd_rootdir, 'tests/zstreamtest.c')] zstreamtest = executable('zstreamtest', zstreamtest_sources, include_directories: test_includes, dependencies: libzstd_dep, install: false) paramgrill_sources = [join_paths(zstd_rootdir, 'programs/benchfn.c'), join_paths(zstd_rootdir, 'programs/timefn.c'), join_paths(zstd_rootdir, 'programs/benchzstd.c'), join_paths(zstd_rootdir, 'programs/datagen.c'), join_paths(zstd_rootdir, 'programs/util.c'), join_paths(zstd_rootdir, 'tests/paramgrill.c')] paramgrill = executable('paramgrill', paramgrill_sources, include_directories: test_includes, dependencies: [ libzstd_dep, libm_dep ], install: false) roundTripCrash_sources = [join_paths(zstd_rootdir, 'tests/roundTripCrash.c')] roundTripCrash = executable('roundTripCrash', roundTripCrash_sources, dependencies: [ libzstd_dep ], install: false) longmatch_sources = [join_paths(zstd_rootdir, 'tests/longmatch.c')] longmatch = executable('longmatch', longmatch_sources, dependencies: [ libzstd_dep ], install: false) invalidDictionaries_sources = [join_paths(zstd_rootdir, 'tests/invalidDictionaries.c')] invalidDictionaries = executable('invalidDictionaries', invalidDictionaries_sources, dependencies: [ libzstd_dep ], install: false) if 0 < legacy_level and legacy_level <= 4 legacy_sources = [join_paths(zstd_rootdir, 'tests/legacy.c')] legacy = executable('legacy', legacy_sources, # Use -Dlegacy_level build option to control it #c_args: '-DZSTD_LEGACY_SUPPORT=4', dependencies: [ libzstd_dep ], install: false) endif decodecorpus_sources = [join_paths(zstd_rootdir, 'programs/util.c'), join_paths(zstd_rootdir, 'programs/timefn.c'), join_paths(zstd_rootdir, 'tests/decodecorpus.c')] decodecorpus = executable('decodecorpus', decodecorpus_sources, include_directories: test_includes, dependencies: [ libzstd_dep, libm_dep ], install: false) symbols_sources = [join_paths(zstd_rootdir, 'tests/symbols.c')] symbols = executable('symbols', symbols_sources, include_directories: test_includes, c_args: host_machine_os == os_windows ? '-DZSTD_DLL_IMPORT=1' : [], dependencies: [ libzstd_dep ], install: false) poolTests_sources = [join_paths(zstd_rootdir, 'programs/util.c'), join_paths(zstd_rootdir, 'programs/timefn.c'), join_paths(zstd_rootdir, 'tests/poolTests.c'), join_paths(zstd_rootdir, 'lib/common/pool.c'), join_paths(zstd_rootdir, 'lib/common/threading.c'), join_paths(zstd_rootdir, 'lib/common/zstd_common.c'), join_paths(zstd_rootdir, 'lib/common/error_private.c')] poolTests = executable('poolTests', poolTests_sources, include_directories: test_includes, dependencies: [ libzstd_dep, thread_dep ], install: false) checkTag_sources = [join_paths(zstd_rootdir, 'tests/checkTag.c')] checkTag = executable('checkTag', checkTag_sources, dependencies: [ libzstd_dep ], install: false) # ============================================================================= # Tests (Use "meson test --list" to list all tests) # ============================================================================= if tests_supported_oses.contains(host_machine_os) valgrind_prog = find_program('valgrind', ['/usr/bin/valgrind'], required: true) valgrindTest_py = files('valgrindTest.py') test('valgrindTest', valgrindTest_py, args: [valgrind_prog.path(), zstd, datagen, fuzzer, fullbench], depends: [zstd, datagen, fuzzer, fullbench], timeout: 600) # Timeout should work on HDD drive endif if host_machine_os != os_windows playTests_sh = find_program(join_paths(zstd_rootdir, 'tests/playTests.sh'), required: true) test('test-zstd', playTests_sh, args: ZSTDRTTEST, env: ['ZSTD=' + zstd.full_path()], depends: [datagen], workdir: meson.current_build_dir(), timeout: 2800) # Timeout should work on HDD drive endif test('test-fullbench-1', fullbench, args: ['-i1'], depends: [datagen], timeout: 60) test('test-fullbench-2', fullbench, args: ['-i1', '-P0'], depends: [datagen], timeout: 60) if use_zlib test('test-fuzzer', fuzzer, args: ['-v', FUZZERTEST] + FUZZER_FLAGS, timeout: 480) endif test('test-zbuff', zbufftest, args: [ZSTREAM_TESTTIME], timeout: 120) test('test-zstream-1', zstreamtest, args: ['-v', ZSTREAM_TESTTIME] + FUZZER_FLAGS, timeout: 240) test('test-zstream-2', zstreamtest, args: ['-mt', '-t1', ZSTREAM_TESTTIME] + FUZZER_FLAGS, timeout: 120) test('test-zstream-3', zstreamtest, args: ['--newapi', '-t1', ZSTREAM_TESTTIME] + FUZZER_FLAGS, timeout: 120) test('test-longmatch', longmatch, timeout: 36) test('test-invalidDictionaries', invalidDictionaries) # should be fast test('test-symbols', symbols) # should be fast if 0 < legacy_level and legacy_level <= 4 test('test-legacy', legacy) # should be fast endif test('test-decodecorpus', decodecorpus, args: ['-t', DECODECORPUS_TESTTIME], timeout: 60) test('test-poolTests', poolTests) # should be fast