xref: /aosp_15_r20/external/zstd/build/meson/tests/meson.build (revision 01826a4963a0d8a59bc3812d29bdf0fb76416722)
1*01826a49SYabin Cui# #############################################################################
2*01826a49SYabin Cui# Copyright (c) 2018-present     Dima Krasner <[email protected]>
3*01826a49SYabin Cui#                                lzutao <taolzu(at)gmail.com>
4*01826a49SYabin Cui# All rights reserved.
5*01826a49SYabin Cui#
6*01826a49SYabin Cui# This source code is licensed under both the BSD-style license (found in the
7*01826a49SYabin Cui# LICENSE file in the root directory of this source tree) and the GPLv2 (found
8*01826a49SYabin Cui# in the COPYING file in the root directory of this source tree).
9*01826a49SYabin Cui# #############################################################################
10*01826a49SYabin Cui
11*01826a49SYabin Cuizstd_rootdir = '../../..'
12*01826a49SYabin Cui
13*01826a49SYabin Cuitests_supported_oses = [os_linux, 'gnu/kfreebsd', os_darwin, 'gnu', 'openbsd',
14*01826a49SYabin Cui  os_freebsd, 'netbsd', 'dragonfly', os_sun]
15*01826a49SYabin Cui
16*01826a49SYabin Cui# =============================================================================
17*01826a49SYabin Cui# Test flags
18*01826a49SYabin Cui# =============================================================================
19*01826a49SYabin Cui
20*01826a49SYabin CuiFUZZER_FLAGS = ['--no-big-tests']
21*01826a49SYabin CuiFUZZERTEST = '-T200s'
22*01826a49SYabin CuiZSTREAM_TESTTIME = '-T90s'
23*01826a49SYabin CuiDECODECORPUS_TESTTIME = '-T30'
24*01826a49SYabin Cui
25*01826a49SYabin Cui# =============================================================================
26*01826a49SYabin Cui# Executables
27*01826a49SYabin Cui# =============================================================================
28*01826a49SYabin Cui
29*01826a49SYabin Cuitest_includes = [ include_directories(join_paths(zstd_rootdir, 'programs')) ]
30*01826a49SYabin Cui
31*01826a49SYabin Cuitestcommon_sources = [join_paths(zstd_rootdir, 'programs/datagen.c'),
32*01826a49SYabin Cui  join_paths(zstd_rootdir, 'programs/lorem.c'),
33*01826a49SYabin Cui  join_paths(zstd_rootdir, 'programs/util.c'),
34*01826a49SYabin Cui  join_paths(zstd_rootdir, 'programs/timefn.c'),
35*01826a49SYabin Cui  join_paths(zstd_rootdir, 'programs/benchfn.c'),
36*01826a49SYabin Cui  join_paths(zstd_rootdir, 'programs/benchzstd.c')]
37*01826a49SYabin Cui
38*01826a49SYabin Cuitestcommon = static_library('testcommon',
39*01826a49SYabin Cui  testcommon_sources,
40*01826a49SYabin Cui  # needed due to use of private symbol + -fvisibility=hidden
41*01826a49SYabin Cui  link_with: libzstd_static)
42*01826a49SYabin Cui
43*01826a49SYabin Cuitestcommon_dep = declare_dependency(link_with: testcommon,
44*01826a49SYabin Cui  dependencies: libzstd_deps,
45*01826a49SYabin Cui  include_directories: libzstd_includes)
46*01826a49SYabin Cui
47*01826a49SYabin Cuidatagen_sources = [join_paths(zstd_rootdir, 'tests/datagencli.c'),
48*01826a49SYabin Cui  join_paths(zstd_rootdir, 'tests/loremOut.c')]
49*01826a49SYabin Cuidatagen = executable('datagen',
50*01826a49SYabin Cui  datagen_sources,
51*01826a49SYabin Cui  c_args: [ '-DNDEBUG' ],
52*01826a49SYabin Cui  include_directories: test_includes,
53*01826a49SYabin Cui  dependencies: testcommon_dep,
54*01826a49SYabin Cui  install: false)
55*01826a49SYabin Cui
56*01826a49SYabin Cuifullbench_sources = [join_paths(zstd_rootdir, 'tests/fullbench.c')]
57*01826a49SYabin Cuifullbench = executable('fullbench',
58*01826a49SYabin Cui  fullbench_sources,
59*01826a49SYabin Cui  include_directories: test_includes,
60*01826a49SYabin Cui  dependencies: testcommon_dep,
61*01826a49SYabin Cui  install: false)
62*01826a49SYabin Cui
63*01826a49SYabin Cuifuzzer_sources = [join_paths(zstd_rootdir, 'tests/fuzzer.c')]
64*01826a49SYabin Cuifuzzer = executable('fuzzer',
65*01826a49SYabin Cui  fuzzer_sources,
66*01826a49SYabin Cui  include_directories: test_includes,
67*01826a49SYabin Cui  dependencies: [ testcommon_dep, thread_dep ],
68*01826a49SYabin Cui  install: false)
69*01826a49SYabin Cui
70*01826a49SYabin Cuizstreamtest_sources = [
71*01826a49SYabin Cui  join_paths(zstd_rootdir, 'tests/seqgen.c'),
72*01826a49SYabin Cui  join_paths(zstd_rootdir, 'tests/zstreamtest.c'),
73*01826a49SYabin Cui  join_paths(zstd_rootdir, 'tests/external_matchfinder.c')]
74*01826a49SYabin Cuizstreamtest = executable('zstreamtest',
75*01826a49SYabin Cui  zstreamtest_sources,
76*01826a49SYabin Cui  include_directories: test_includes,
77*01826a49SYabin Cui  dependencies: testcommon_dep,
78*01826a49SYabin Cui  install: false)
79*01826a49SYabin Cui
80*01826a49SYabin Cuiparamgrill_sources = [join_paths(zstd_rootdir, 'tests/paramgrill.c')]
81*01826a49SYabin Cuiparamgrill = executable('paramgrill',
82*01826a49SYabin Cui  paramgrill_sources,
83*01826a49SYabin Cui  include_directories: test_includes,
84*01826a49SYabin Cui  dependencies: [ testcommon_dep, libm_dep ],
85*01826a49SYabin Cui  install: false)
86*01826a49SYabin Cui
87*01826a49SYabin CuiroundTripCrash_sources = [join_paths(zstd_rootdir, 'tests/roundTripCrash.c')]
88*01826a49SYabin CuiroundTripCrash = executable('roundTripCrash',
89*01826a49SYabin Cui  roundTripCrash_sources,
90*01826a49SYabin Cui  dependencies: [ testcommon_dep ],
91*01826a49SYabin Cui  install: false)
92*01826a49SYabin Cui
93*01826a49SYabin Cuilongmatch_sources = [join_paths(zstd_rootdir, 'tests/longmatch.c')]
94*01826a49SYabin Cuilongmatch = executable('longmatch',
95*01826a49SYabin Cui  longmatch_sources,
96*01826a49SYabin Cui  dependencies: [ libzstd_dep ],
97*01826a49SYabin Cui  install: false)
98*01826a49SYabin Cui
99*01826a49SYabin CuiinvalidDictionaries_sources = [join_paths(zstd_rootdir, 'tests/invalidDictionaries.c')]
100*01826a49SYabin CuiinvalidDictionaries = executable('invalidDictionaries',
101*01826a49SYabin Cui  invalidDictionaries_sources,
102*01826a49SYabin Cui  dependencies: [ libzstd_dep ],
103*01826a49SYabin Cui  install: false)
104*01826a49SYabin Cui
105*01826a49SYabin Cuiif 0 < legacy_level and legacy_level <= 4
106*01826a49SYabin Cui  legacy_sources = [join_paths(zstd_rootdir, 'tests/legacy.c')]
107*01826a49SYabin Cui  legacy = executable('legacy',
108*01826a49SYabin Cui    legacy_sources,
109*01826a49SYabin Cui    # Use -Dlegacy_level build option to control it
110*01826a49SYabin Cui    #c_args: '-DZSTD_LEGACY_SUPPORT=4',
111*01826a49SYabin Cui    dependencies: [ libzstd_dep ],
112*01826a49SYabin Cui    install: false)
113*01826a49SYabin Cuiendif
114*01826a49SYabin Cui
115*01826a49SYabin Cuidecodecorpus_sources = [join_paths(zstd_rootdir, 'tests/decodecorpus.c')]
116*01826a49SYabin Cuidecodecorpus = executable('decodecorpus',
117*01826a49SYabin Cui  decodecorpus_sources,
118*01826a49SYabin Cui  include_directories: test_includes,
119*01826a49SYabin Cui  dependencies: [ testcommon_dep, libm_dep ],
120*01826a49SYabin Cui  install: false)
121*01826a49SYabin Cui
122*01826a49SYabin CuipoolTests_sources = [join_paths(zstd_rootdir, 'tests/poolTests.c')]
123*01826a49SYabin CuipoolTests = executable('poolTests',
124*01826a49SYabin Cui  poolTests_sources,
125*01826a49SYabin Cui  include_directories: test_includes,
126*01826a49SYabin Cui  dependencies: [ testcommon_dep, thread_dep ],
127*01826a49SYabin Cui  install: false)
128*01826a49SYabin Cui
129*01826a49SYabin CuicheckTag_sources = [join_paths(zstd_rootdir, 'tests/checkTag.c')]
130*01826a49SYabin CuicheckTag = executable('checkTag',
131*01826a49SYabin Cui  checkTag_sources,
132*01826a49SYabin Cui  dependencies: [ libzstd_dep ],
133*01826a49SYabin Cui  install: false)
134*01826a49SYabin Cui
135*01826a49SYabin Cui# =============================================================================
136*01826a49SYabin Cui# Tests (Use "meson test --list" to list all tests)
137*01826a49SYabin Cui# =============================================================================
138*01826a49SYabin Cui
139*01826a49SYabin Cuiif tests_supported_oses.contains(host_machine_os)
140*01826a49SYabin Cui  valgrind_prog = find_program('valgrind', ['/usr/bin/valgrind'], required: false)
141*01826a49SYabin Cui  valgrindTest_py = files('valgrindTest.py')
142*01826a49SYabin Cui  if valgrind_prog.found()
143*01826a49SYabin Cui    test('valgrindTest',
144*01826a49SYabin Cui      valgrindTest_py,
145*01826a49SYabin Cui      args: [valgrind_prog.path(), zstd, datagen, fuzzer, fullbench],
146*01826a49SYabin Cui      depends: [zstd, datagen, fuzzer, fullbench],
147*01826a49SYabin Cui      timeout: 600) # Timeout should work on HDD drive
148*01826a49SYabin Cui  endif
149*01826a49SYabin Cuiendif
150*01826a49SYabin Cui
151*01826a49SYabin Cuiif host_machine_os != os_windows
152*01826a49SYabin Cui  playTests_sh = find_program(join_paths(zstd_rootdir, 'tests/playTests.sh'), required: true)
153*01826a49SYabin Cui
154*01826a49SYabin Cui  # add slow tests only if the meson version is new enough to support
155*01826a49SYabin Cui  # test setups with default-excluded suites
156*01826a49SYabin Cui  if meson.version().version_compare('>=0.57.0')
157*01826a49SYabin Cui    matrix = {'fast': [], 'slow': ['--test-large-data']}
158*01826a49SYabin Cui  else
159*01826a49SYabin Cui    matrix = {'fast': []}
160*01826a49SYabin Cui  endif
161*01826a49SYabin Cui
162*01826a49SYabin Cui  foreach suite, opt: matrix
163*01826a49SYabin Cui    test('test-zstd-'+suite,
164*01826a49SYabin Cui      playTests_sh,
165*01826a49SYabin Cui      args: opt,
166*01826a49SYabin Cui      env: ['ZSTD_BIN=' + zstd.full_path(), 'DATAGEN_BIN=./datagen'],
167*01826a49SYabin Cui      depends: [datagen, zstd],
168*01826a49SYabin Cui      suite: suite,
169*01826a49SYabin Cui      workdir: meson.current_build_dir(),
170*01826a49SYabin Cui      timeout: 2800) # Timeout should work on HDD drive
171*01826a49SYabin Cui  endforeach
172*01826a49SYabin Cuiendif
173*01826a49SYabin Cui
174*01826a49SYabin Cuitest('test-fullbench-1',
175*01826a49SYabin Cui  fullbench,
176*01826a49SYabin Cui  args: ['-i1'],
177*01826a49SYabin Cui  depends: [datagen],
178*01826a49SYabin Cui  timeout: 60)
179*01826a49SYabin Cuitest('test-fullbench-2',
180*01826a49SYabin Cui  fullbench,
181*01826a49SYabin Cui  args: ['-i1', '-P0'],
182*01826a49SYabin Cui  depends: [datagen],
183*01826a49SYabin Cui  timeout: 60)
184*01826a49SYabin Cui
185*01826a49SYabin Cuiif use_zlib
186*01826a49SYabin Cui  test('test-fuzzer',
187*01826a49SYabin Cui    fuzzer,
188*01826a49SYabin Cui    args: ['-v', FUZZERTEST] + FUZZER_FLAGS,
189*01826a49SYabin Cui    timeout: 480)
190*01826a49SYabin Cuiendif
191*01826a49SYabin Cui
192*01826a49SYabin Cuitest('test-zstream-1',
193*01826a49SYabin Cui  zstreamtest,
194*01826a49SYabin Cui  args: ['-v', ZSTREAM_TESTTIME] + FUZZER_FLAGS,
195*01826a49SYabin Cui  timeout: 240)
196*01826a49SYabin Cuitest('test-zstream-3',
197*01826a49SYabin Cui  zstreamtest,
198*01826a49SYabin Cui  args: ['--newapi', '-t1', ZSTREAM_TESTTIME] + FUZZER_FLAGS,
199*01826a49SYabin Cui  timeout: 120)
200*01826a49SYabin Cuitest('test-longmatch', longmatch, timeout: 36)
201*01826a49SYabin Cuitest('test-invalidDictionaries', invalidDictionaries) # should be fast
202*01826a49SYabin Cuiif 0 < legacy_level and legacy_level <= 4
203*01826a49SYabin Cui  test('test-legacy', legacy) # should be fast
204*01826a49SYabin Cuiendif
205*01826a49SYabin Cuitest('test-decodecorpus',
206*01826a49SYabin Cui  decodecorpus,
207*01826a49SYabin Cui  args: ['-t', DECODECORPUS_TESTTIME],
208*01826a49SYabin Cui  timeout: 60)
209*01826a49SYabin Cuitest('test-poolTests', poolTests) # should be fast
210*01826a49SYabin Cui
211*01826a49SYabin Cuiif meson.version().version_compare('>=0.57.0')
212*01826a49SYabin Cui  add_test_setup('fast',
213*01826a49SYabin Cui    is_default: true,
214*01826a49SYabin Cui    exclude_suites: ['slow'])
215*01826a49SYabin Cui  add_test_setup('slow',
216*01826a49SYabin Cui    exclude_suites: ['fast'])
217*01826a49SYabin Cuiendif
218