tests: Run GObject performance tests under meson test

Pass arguments to them so that they take minimal time. This will not
produce useful performance profiling results, but will smoketest that
the tests still run, don’t crash, and therefore probably aren’t
bitrotting too badly.

This is useful because a fair amount of work has gone into these
performance tests, and they’re useful every few years to analyse and
compare GObject performance. We don’t want them to bitrot between uses.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
This commit is contained in:
Philip Withnall 2022-06-14 15:28:15 +01:00
parent 6747702d77
commit 6f435e40cd

View File

@ -1,13 +1,50 @@
common_c_args = test_cargs + ['-DGLIB_DISABLE_DEPRECATION_WARNINGS'] gobject_tests = {
common_deps = [libm, thread_dep, libglib_dep, libgobject_dep] 'performance' : { 'args' : [ '--seconds', '0' ] },
'performance-threaded' : { 'args' : [ '--seconds', '0' ] },
}
# Don't install these ones, and keep them out of 'meson test' because they take too long... # FIXME: put common bits of test environment() in one location
executable('performance', 'performance.c', test_env = environment()
c_args : common_c_args, test_env.set('G_TEST_SRCDIR', meson.current_source_dir())
dependencies : common_deps, test_env.set('G_TEST_BUILDDIR', meson.current_build_dir())
install : false) test_env.set('G_DEBUG', 'gc-friendly')
test_env.set('MALLOC_CHECK_', '2')
executable('performance-threaded', 'performance-threaded.c', test_deps = [libm, thread_dep, libglib_dep, libgobject_dep]
c_args : common_c_args, test_cargs = ['-DG_LOG_DOMAIN="GLib-GObject"', '-UG_DISABLE_ASSERT']
dependencies : common_deps,
install : false) foreach test_name, extra_args : gobject_tests
source = extra_args.get('source', test_name + '.c')
install = installed_tests_enabled and extra_args.get('install', true)
if install
test_conf = configuration_data()
test_conf.set('installed_tests_dir', installed_tests_execdir)
test_conf.set('program', test_name)
test_conf.set('env', '')
configure_file(
input: installed_tests_template_tap,
output: test_name + '.test',
install_dir: installed_tests_metadir,
configuration: test_conf,
)
endif
exe = executable(test_name, source,
c_args : test_cargs + extra_args.get('c_args', []),
dependencies : test_deps + extra_args.get('dependencies', []),
install_dir: installed_tests_execdir,
install: install,
)
suite = ['gobject', 'performance'] + extra_args.get('suite', [])
timeout = suite.contains('slow') ? test_timeout_slow : test_timeout
args = extra_args.get('args', [])
test(test_name, exe,
env : test_env,
timeout : timeout,
suite : suite,
args : args,
)
endforeach