test/threads: add unit test
[dpdk.git] / app / test / meson.build
index c3bc6c4..15591ce 100644 (file)
@@ -1,12 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-if is_windows
-    build = false
-    reason = 'not supported on Windows'
-    subdir_done()
-endif
-
 if not get_option('tests')
     subdir_done()
 endif
@@ -87,6 +81,7 @@ test_sources = files(
         'test_lpm6_perf.c',
         'test_lpm_perf.c',
         'test_malloc.c',
+        'test_malloc_perf.c',
         'test_mbuf.c',
         'test_member.c',
         'test_member_perf.c',
@@ -138,6 +133,7 @@ test_sources = files(
         'test_tailq.c',
         'test_thash.c',
         'test_thash_perf.c',
+        'test_threads.c',
         'test_timer.c',
         'test_timer_perf.c',
         'test_timer_racecond.c',
@@ -154,96 +150,98 @@ test_deps = enabled_libs
 # as well as libs, the pci and vdev bus drivers are needed for a lot of tests
 test_deps += ['bus_pci', 'bus_vdev']
 
-# Each test is marked with flag true/false
-# to indicate whether it can run in no-huge mode.
+# Each test is marked with flags:
+# - the first flag indicates whether the test can run in no-huge mode,
+# - the second flag indicates whether the test can run with ASan enabled,
 fast_tests = [
-        ['acl_autotest', true],
-        ['atomic_autotest', false],
-        ['bitmap_autotest', true],
-        ['bpf_autotest', true],
-        ['bpf_convert_autotest', true],
-        ['bitops_autotest', true],
-        ['byteorder_autotest', true],
-        ['cksum_autotest', true],
-        ['cmdline_autotest', true],
-        ['common_autotest', true],
-        ['cpuflags_autotest', true],
-        ['debug_autotest', true],
-        ['devargs_autotest', true],
-        ['eal_flags_c_opt_autotest', false],
-        ['eal_flags_main_opt_autotest', false],
-        ['eal_flags_n_opt_autotest', false],
-        ['eal_flags_hpet_autotest', false],
-        ['eal_flags_no_huge_autotest', false],
-        ['eal_flags_a_opt_autotest', false],
-        ['eal_flags_b_opt_autotest', false],
-        ['eal_flags_vdev_opt_autotest', false],
-        ['eal_flags_r_opt_autotest', false],
-        ['eal_flags_mem_autotest', false],
-        ['eal_flags_file_prefix_autotest', false],
-        ['eal_flags_misc_autotest', false],
-        ['eal_fs_autotest', true],
-        ['errno_autotest', true],
-        ['ethdev_link_status', true],
-        ['event_ring_autotest', true],
-        ['fib_autotest', true],
-        ['fib6_autotest', true],
-        ['func_reentrancy_autotest', false],
-        ['hash_autotest', true],
-        ['interrupt_autotest', true],
-        ['ipfrag_autotest', false],
-        ['lcores_autotest', true],
-        ['logs_autotest', true],
-        ['lpm_autotest', true],
-        ['lpm6_autotest', true],
-        ['malloc_autotest', false],
-        ['mbuf_autotest', false],
-        ['mcslock_autotest', false],
-        ['memcpy_autotest', true],
-        ['memory_autotest', false],
-        ['mempool_autotest', false],
-        ['memzone_autotest', false],
-        ['meter_autotest', true],
-        ['multiprocess_autotest', false],
-        ['per_lcore_autotest', true],
-        ['pflock_autotest', true],
-        ['prefetch_autotest', true],
-        ['rcu_qsbr_autotest', true],
-        ['pie_autotest', true],
-        ['rib_autotest', true],
-        ['rib6_autotest', true],
-        ['ring_autotest', true],
-        ['rwlock_test1_autotest', true],
-        ['rwlock_rda_autotest', true],
-        ['rwlock_rds_wrm_autotest', true],
-        ['rwlock_rde_wro_autotest', true],
-        ['sched_autotest', true],
-        ['security_autotest', false],
-        ['spinlock_autotest', true],
-        ['stack_autotest', false],
-        ['stack_lf_autotest', false],
-        ['string_autotest', true],
-        ['tailq_autotest', true],
-        ['ticketlock_autotest', true],
-        ['timer_autotest', false],
-        ['user_delay_us', true],
-        ['version_autotest', true],
-        ['crc_autotest', true],
-        ['distributor_autotest', false],
-        ['eventdev_common_autotest', true],
-        ['fbarray_autotest', true],
-        ['hash_readwrite_func_autotest', false],
-        ['ipsec_autotest', true],
-        ['kni_autotest', false],
-        ['kvargs_autotest', true],
-        ['member_autotest', true],
-        ['power_cpufreq_autotest', false],
-        ['power_autotest', true],
-        ['power_kvm_vm_autotest', false],
-        ['reorder_autotest', true],
-        ['service_autotest', true],
-        ['thash_autotest', true],
-        ['trace_autotest', true],
+        ['acl_autotest', true, true],
+        ['atomic_autotest', false, true],
+        ['bitmap_autotest', true, true],
+        ['bpf_autotest', true, true],
+        ['bpf_convert_autotest', true, true],
+        ['bitops_autotest', true, true],
+        ['byteorder_autotest', true, true],
+        ['cksum_autotest', true, true],
+        ['cmdline_autotest', true, true],
+        ['common_autotest', true, true],
+        ['cpuflags_autotest', true, true],
+        ['debug_autotest', true, true],
+        ['devargs_autotest', true, true],
+        ['eal_flags_c_opt_autotest', false, false],
+        ['eal_flags_main_opt_autotest', false, false],
+        ['eal_flags_n_opt_autotest', false, false],
+        ['eal_flags_hpet_autotest', false, false],
+        ['eal_flags_no_huge_autotest', false, false],
+        ['eal_flags_a_opt_autotest', false, false],
+        ['eal_flags_b_opt_autotest', false, false],
+        ['eal_flags_vdev_opt_autotest', false, false],
+        ['eal_flags_r_opt_autotest', false, false],
+        ['eal_flags_mem_autotest', false, false],
+        ['eal_flags_file_prefix_autotest', false, false],
+        ['eal_flags_misc_autotest', false, false],
+        ['eal_fs_autotest', true, true],
+        ['errno_autotest', true, true],
+        ['ethdev_link_status', true, true],
+        ['event_ring_autotest', true, true],
+        ['fib_autotest', true, true],
+        ['fib6_autotest', true, true],
+        ['func_reentrancy_autotest', false, true],
+        ['hash_autotest', true, true],
+        ['interrupt_autotest', true, true],
+        ['ipfrag_autotest', false, true],
+        ['lcores_autotest', true, true],
+        ['logs_autotest', true, true],
+        ['lpm_autotest', true, true],
+        ['lpm6_autotest', true, true],
+        ['malloc_autotest', false, true],
+        ['mbuf_autotest', false, true],
+        ['mcslock_autotest', false, true],
+        ['memcpy_autotest', true, true],
+        ['memory_autotest', false, true],
+        ['mempool_autotest', false, true],
+        ['memzone_autotest', false, true],
+        ['meter_autotest', true, true],
+        ['multiprocess_autotest', false, false],
+        ['per_lcore_autotest', true, true],
+        ['pflock_autotest', true, true],
+        ['prefetch_autotest', true, true],
+        ['rcu_qsbr_autotest', true, true],
+        ['pie_autotest', true, true],
+        ['rib_autotest', true, true],
+        ['rib6_autotest', true, true],
+        ['ring_autotest', true, true],
+        ['rwlock_test1_autotest', true, true],
+        ['rwlock_rda_autotest', true, true],
+        ['rwlock_rds_wrm_autotest', true, true],
+        ['rwlock_rde_wro_autotest', true, true],
+        ['sched_autotest', true, true],
+        ['security_autotest', false, true],
+        ['spinlock_autotest', true, true],
+        ['stack_autotest', false, true],
+        ['stack_lf_autotest', false, true],
+        ['string_autotest', true, true],
+        ['tailq_autotest', true, true],
+        ['ticketlock_autotest', true, true],
+        ['timer_autotest', false, true],
+        ['user_delay_us', true, true],
+        ['version_autotest', true, true],
+        ['crc_autotest', true, true],
+        ['distributor_autotest', false, true],
+        ['eventdev_common_autotest', true, true],
+        ['fbarray_autotest', true, true],
+        ['hash_readwrite_func_autotest', false, true],
+        ['ipsec_autotest', true, true],
+        ['kni_autotest', false, true],
+        ['kvargs_autotest', true, true],
+        ['member_autotest', true, true],
+        ['power_cpufreq_autotest', false, true],
+        ['power_autotest', true, true],
+        ['power_kvm_vm_autotest', false, true],
+        ['reorder_autotest', true, true],
+        ['service_autotest', true, true],
+        ['thash_autotest', true, true],
+        ['threads_autotest', true, true],
+        ['trace_autotest', true, true],
 ]
 
 # Tests known to have issues or which don't belong in other tests lists.
@@ -256,6 +254,7 @@ extra_test_names = [
 
 perf_test_names = [
         'ring_perf_autotest',
+        'malloc_perf_autotest',
         'mempool_perf_autotest',
         'memcpy_perf_autotest',
         'hash_perf_autotest',
@@ -294,38 +293,44 @@ perf_test_names = [
         'thash_perf_autotest',
 ]
 
-driver_test_names = [
-        'cryptodev_aesni_mb_autotest',
-        'cryptodev_aesni_gcm_autotest',
-        'cryptodev_cn9k_autotest',
-        'cryptodev_cn10k_autotest',
-        'cryptodev_dpaa_sec_autotest',
-        'cryptodev_dpaa2_sec_autotest',
-        'cryptodev_null_autotest',
-        'cryptodev_openssl_autotest',
-        'cryptodev_openssl_asym_autotest',
-        'cryptodev_qat_autotest',
-        'cryptodev_sw_armv8_autotest',
-        'cryptodev_sw_kasumi_autotest',
-        'cryptodev_sw_mvsam_autotest',
-        'cryptodev_sw_snow3g_autotest',
-        'cryptodev_sw_zuc_autotest',
-        'dmadev_autotest',
-        'eventdev_selftest_octeontx',
-        'eventdev_selftest_sw',
-        'rawdev_autotest',
-]
+driver_test_names = []
 
-dump_test_names = [
-        'dump_struct_sizes',
-        'dump_mempool',
-        'dump_malloc_stats',
-        'dump_devargs',
-        'dump_log_types',
-        'dump_ring',
-        'dump_physmem',
-        'dump_memzone',
-]
+dump_test_names = []
+
+if not is_windows
+    driver_test_names += [
+            'cryptodev_aesni_mb_autotest',
+            'cryptodev_aesni_gcm_autotest',
+            'cryptodev_cn9k_autotest',
+            'cryptodev_cn10k_autotest',
+            'cryptodev_dpaa_sec_autotest',
+            'cryptodev_dpaa2_sec_autotest',
+            'cryptodev_null_autotest',
+            'cryptodev_openssl_autotest',
+            'cryptodev_openssl_asym_autotest',
+            'cryptodev_qat_autotest',
+            'cryptodev_sw_armv8_autotest',
+            'cryptodev_sw_kasumi_autotest',
+            'cryptodev_sw_mvsam_autotest',
+            'cryptodev_sw_snow3g_autotest',
+            'cryptodev_sw_zuc_autotest',
+            'dmadev_autotest',
+            'eventdev_selftest_octeontx',
+            'eventdev_selftest_sw',
+            'rawdev_autotest',
+    ]
+
+    dump_test_names += [
+            'dump_struct_sizes',
+            'dump_mempool',
+            'dump_malloc_stats',
+            'dump_devargs',
+            'dump_log_types',
+            'dump_ring',
+            'dump_physmem',
+            'dump_memzone',
+    ]
+endif
 
 # The following linkages are an exception to allow running the
 # unit tests without requiring that the developer install the
@@ -343,15 +348,16 @@ endif
 
 if dpdk_conf.has('RTE_LIB_FLOW_CLASSIFY')
     test_sources += 'test_flow_classify.c'
-    fast_tests += [['flow_classify_autotest', false]]
+    fast_tests += [['flow_classify_autotest', false, true]]
 endif
 if dpdk_conf.has('RTE_LIB_METRICS')
     test_sources += ['test_metrics.c']
-    fast_tests += [['metrics_autotest', true]]
+    fast_tests += [['metrics_autotest', true, true]]
 endif
-if dpdk_conf.has('RTE_LIB_TELEMETRY')
+if not is_windows and dpdk_conf.has('RTE_LIB_TELEMETRY')
     test_sources += ['test_telemetry_json.c', 'test_telemetry_data.c']
-    fast_tests += [['telemetry_json_autotest', true], ['telemetry_data_autotest', true]]
+    fast_tests += [['telemetry_json_autotest', true, true]]
+    fast_tests += [['telemetry_data_autotest', true, true]]
 endif
 if dpdk_conf.has('RTE_LIB_PIPELINE')
 # pipeline lib depends on port and table libs, so those must be present
@@ -364,7 +370,7 @@ if dpdk_conf.has('RTE_LIB_PIPELINE')
             'test_table_ports.c',
             'test_table_tables.c',
     ]
-    fast_tests += [['table_autotest', true]]
+    fast_tests += [['table_autotest', true, true]]
 endif
 
 # The following linkages of drivers are required because
@@ -384,26 +390,26 @@ if dpdk_conf.has('RTE_NET_RING')
     test_sources += 'test_pmd_ring.c'
     test_sources += 'test_event_eth_tx_adapter.c'
     test_sources += 'sample_packet_forward.c'
-    fast_tests += [['ring_pmd_autotest', true]]
+    fast_tests += [['ring_pmd_autotest', true, true]]
     perf_test_names += 'ring_pmd_perf_autotest'
-    fast_tests += [['event_eth_tx_adapter_autotest', false]]
+    fast_tests += [['event_eth_tx_adapter_autotest', false, true]]
     if dpdk_conf.has('RTE_LIB_BITRATESTATS')
         test_sources += 'test_bitratestats.c'
-        fast_tests += [['bitratestats_autotest', true]]
+        fast_tests += [['bitratestats_autotest', true, true]]
     endif
     if dpdk_conf.has('RTE_LIB_LATENCYSTATS')
         test_sources += 'test_latencystats.c'
-        fast_tests += [['latencystats_autotest', true]]
+        fast_tests += [['latencystats_autotest', true, true]]
     endif
     if dpdk_conf.has('RTE_LIB_PDUMP')
         test_sources += 'test_pdump.c'
-        fast_tests += [['pdump_autotest', true]]
+        fast_tests += [['pdump_autotest', true, false]]
     endif
 endif
 if dpdk_conf.has('RTE_NET_NULL')
     test_deps += 'net_null'
     test_sources += 'test_vdev.c'
-    fast_tests += [['vdev_autotest', true]]
+    fast_tests += [['vdev_autotest', true, true]]
 endif
 
 if dpdk_conf.has('RTE_HAS_LIBPCAP')
@@ -429,7 +435,7 @@ if dpdk_conf.has('RTE_LIB_COMPRESSDEV')
     if compress_test_dep.found()
         test_dep_objs += compress_test_dep
         test_sources += 'test_compressdev.c'
-        fast_tests += [['compressdev_autotest', false]]
+        fast_tests += [['compressdev_autotest', false, true]]
     endif
 endif
 
@@ -476,6 +482,12 @@ foreach arg : fast_tests
         endif
     endif
 
+    if get_option('b_sanitize') == 'address' or get_option('b_sanitize') == 'address,undefined'
+        if not arg[2]
+            run_test = false
+        endif
+    endif
+
     if (get_option('default_library') == 'shared' and
         arg[0] == 'event_eth_tx_adapter_autotest')
         foreach drv:dpdk_drivers