1# SPDX-License-Identifier: BSD-3-Clause 2# Copyright(c) 2017 Intel Corporation 3 4if not get_option('tests') 5 subdir_done() 6endif 7 8test_sources = files('commands.c', 9 'packet_burst_generator.c', 10 'sample_packet_forward.c', 11 'test.c', 12 'test_acl.c', 13 'test_alarm.c', 14 'test_atomic.c', 15 'test_barrier.c', 16 'test_bitratestats.c', 17 'test_bpf.c', 18 'test_byteorder.c', 19 'test_cmdline.c', 20 'test_cmdline_cirbuf.c', 21 'test_cmdline_etheraddr.c', 22 'test_cmdline_ipaddr.c', 23 'test_cmdline_lib.c', 24 'test_cmdline_num.c', 25 'test_cmdline_portlist.c', 26 'test_cmdline_string.c', 27 'test_common.c', 28 'test_cpuflags.c', 29 'test_crc.c', 30 'test_cryptodev.c', 31 'test_cryptodev_asym.c', 32 'test_cryptodev_blockcipher.c', 33 'test_cryptodev_security_pdcp.c', 34 'test_cycles.c', 35 'test_debug.c', 36 'test_distributor.c', 37 'test_distributor_perf.c', 38 'test_eal_flags.c', 39 'test_eal_fs.c', 40 'test_efd.c', 41 'test_efd_perf.c', 42 'test_errno.c', 43 'test_event_crypto_adapter.c', 44 'test_event_eth_rx_adapter.c', 45 'test_event_ring.c', 46 'test_event_eth_tx_adapter.c', 47 'test_event_timer_adapter.c', 48 'test_eventdev.c', 49 'test_external_mem.c', 50 'test_fbarray.c', 51 'test_func_reentrancy.c', 52 'test_flow_classify.c', 53 'test_hash.c', 54 'test_hash_functions.c', 55 'test_hash_multiwriter.c', 56 'test_hash_readwrite.c', 57 'test_hash_perf.c', 58 'test_hash_readwrite_lf.c', 59 'test_interrupts.c', 60 'test_ipsec.c', 61 'test_kni.c', 62 'test_kvargs.c', 63 'test_latencystats.c', 64 'test_link_bonding.c', 65 'test_link_bonding_mode4.c', 66 'test_link_bonding_rssconf.c', 67 'test_logs.c', 68 'test_lpm.c', 69 'test_lpm6.c', 70 'test_lpm6_perf.c', 71 'test_lpm_perf.c', 72 'test_malloc.c', 73 'test_mbuf.c', 74 'test_member.c', 75 'test_member_perf.c', 76 'test_memcpy.c', 77 'test_memcpy_perf.c', 78 'test_memory.c', 79 'test_mempool.c', 80 'test_mempool_perf.c', 81 'test_memzone.c', 82 'test_meter.c', 83 'test_metrics.c', 84 'test_mcslock.c', 85 'test_mp_secondary.c', 86 'test_pdump.c', 87 'test_per_lcore.c', 88 'test_pmd_perf.c', 89 'test_pmd_ring.c', 90 'test_pmd_ring_perf.c', 91 'test_power.c', 92 'test_power_cpufreq.c', 93 'test_power_kvm_vm.c', 94 'test_prefetch.c', 95 'test_rand_perf.c', 96 'test_rawdev.c', 97 'test_rcu_qsbr.c', 98 'test_rcu_qsbr_perf.c', 99 'test_reciprocal_division.c', 100 'test_reciprocal_division_perf.c', 101 'test_red.c', 102 'test_reorder.c', 103 'test_ring.c', 104 'test_ring_perf.c', 105 'test_rwlock.c', 106 'test_sched.c', 107 'test_service_cores.c', 108 'test_spinlock.c', 109 'test_stack.c', 110 'test_stack_perf.c', 111 'test_string_fns.c', 112 'test_table.c', 113 'test_table_acl.c', 114 'test_table_combined.c', 115 'test_table_pipeline.c', 116 'test_table_ports.c', 117 'test_table_tables.c', 118 'test_tailq.c', 119 'test_thash.c', 120 'test_timer.c', 121 'test_timer_perf.c', 122 'test_timer_racecond.c', 123 'test_timer_secondary.c', 124 'test_ticketlock.c', 125 'test_version.c', 126 'virtual_pmd.c' 127) 128 129test_deps = ['acl', 130 'bitratestats', 131 'bpf', 132 'cfgfile', 133 'cmdline', 134 'cryptodev', 135 'distributor', 136 'efd', 137 'ethdev', 138 'eventdev', 139 'flow_classify', 140 'hash', 141 'ipsec', 142 'latencystats', 143 'lpm', 144 'member', 145 'metrics', 146 'pipeline', 147 'port', 148 'rawdev', 149 'rcu', 150 'reorder', 151 'ring', 152 'stack', 153 'timer' 154] 155 156fast_test_names = [ 157 'acl_autotest', 158 'alarm_autotest', 159 'atomic_autotest', 160 'byteorder_autotest', 161 'cmdline_autotest', 162 'common_autotest', 163 'cpuflags_autotest', 164 'cycles_autotest', 165 'debug_autotest', 166 'eal_flags_c_opt_autotest', 167 'eal_flags_master_opt_autotest', 168 'eal_flags_n_opt_autotest', 169 'eal_flags_hpet_autotest', 170 'eal_flags_no_huge_autotest', 171 'eal_flags_w_opt_autotest', 172 'eal_flags_b_opt_autotest', 173 'eal_flags_vdev_opt_autotest', 174 'eal_flags_r_opt_autotest', 175 'eal_flags_mem_autotest', 176 'eal_flags_file_prefix_autotest', 177 'eal_flags_misc_autotest', 178 'eal_fs_autotest', 179 'errno_autotest', 180 'event_ring_autotest', 181 'func_reentrancy_autotest', 182 'flow_classify_autotest', 183 'hash_autotest', 184 'interrupt_autotest', 185 'logs_autotest', 186 'lpm_autotest', 187 'lpm6_autotest', 188 'malloc_autotest', 189 'mbuf_autotest', 190 'mcslock_autotest', 191 'memcpy_autotest', 192 'memory_autotest', 193 'mempool_autotest', 194 'memzone_autotest', 195 'meter_autotest', 196 'multiprocess_autotest', 197 'per_lcore_autotest', 198 'prefetch_autotest', 199 'rcu_qsbr_autotest', 200 'red_autotest', 201 'ring_autotest', 202 'ring_pmd_autotest', 203 'rwlock_test1_autotest', 204 'rwlock_rda_autotest', 205 'rwlock_rds_wrm_autotest', 206 'rwlock_rde_wro_autotest', 207 'sched_autotest', 208 'spinlock_autotest', 209 'stack_autotest', 210 'stack_lf_autotest', 211 'string_autotest', 212 'table_autotest', 213 'tailq_autotest', 214 'timer_autotest', 215 'user_delay_us', 216 'version_autotest', 217 'bitratestats_autotest', 218 'crc_autotest', 219 'delay_us_sleep_autotest', 220 'distributor_autotest', 221 'eventdev_common_autotest', 222 'fbarray_autotest', 223 'hash_readwrite_autotest', 224 'hash_readwrite_lf_autotest', 225 'ipsec_autotest', 226 'kni_autotest', 227 'kvargs_autotest', 228 'latencystats_autotest', 229 'member_autotest', 230 'metrics_autotest', 231 'pdump_autotest', 232 'power_cpufreq_autotest', 233 'power_autotest', 234 'power_kvm_vm_autotest', 235 'reorder_autotest', 236 'service_autotest', 237 'thash_autotest', 238] 239 240perf_test_names = [ 241 'ring_perf_autotest', 242 'mempool_perf_autotest', 243 'memcpy_perf_autotest', 244 'hash_perf_autotest', 245 'timer_perf_autotest', 246 'reciprocal_division', 247 'reciprocal_division_perf', 248 'lpm_perf_autotest', 249 'red_all', 250 'barrier_autotest', 251 'hash_multiwriter_autotest', 252 'timer_racecond_autotest', 253 'efd_autotest', 254 'hash_functions_autotest', 255 'member_perf_autotest', 256 'efd_perf_autotest', 257 'lpm6_perf_autotest', 258 'rcu_qsbr_perf_autotest', 259 'red_perf', 260 'distributor_perf_autotest', 261 'ring_pmd_perf_autotest', 262 'pmd_perf_autotest', 263 'stack_perf_autotest', 264 'stack_lf_perf_autotest', 265 'rand_perf_autotest', 266] 267 268driver_test_names = [ 269 'cryptodev_aesni_mb_autotest', 270 'cryptodev_aesni_gcm_autotest', 271 'cryptodev_dpaa_sec_autotest', 272 'cryptodev_dpaa2_sec_autotest', 273 'cryptodev_null_autotest', 274 'cryptodev_openssl_autotest', 275 'cryptodev_openssl_asym_autotest', 276 'cryptodev_qat_autotest', 277 'cryptodev_sw_armv8_autotest', 278 'cryptodev_sw_kasumi_autotest', 279 'cryptodev_sw_mvsam_autotest', 280 'cryptodev_sw_snow3g_autotest', 281 'cryptodev_sw_zuc_autotest', 282 'eventdev_selftest_octeontx', 283 'eventdev_selftest_sw', 284 'link_bonding_autotest', 285 'link_bonding_mode4_autotest', 286 'link_bonding_rssconf_autotest', 287 'rawdev_autotest', 288] 289 290dump_test_names = [ 291 'dump_struct_sizes', 292 'dump_mempool', 293 'dump_malloc_stats', 294 'dump_devargs', 295 'dump_log_types', 296 'dump_ring', 297 'dump_physmem', 298 'dump_memzone', 299] 300 301# The following linkages are an exception to allow running the 302# unit tests without requiring that the developer install the 303# DPDK libraries. Explicit linkage of drivers (plugin libraries) 304# in applications should not be used. 305if dpdk_conf.has('RTE_LIBRTE_RING_MEMPOOL') 306 test_deps += 'mempool_ring' 307endif 308if dpdk_conf.has('RTE_LIBRTE_STACK_MEMPOOL') 309 test_deps += 'mempool_stack' 310endif 311if dpdk_conf.has('RTE_LIBRTE_SKELETON_EVENTDEV_PMD') 312 test_deps += 'pmd_skeleton_event' 313endif 314 315# The following linkages of drivers are required because 316# they are used via a driver-specific API. 317if dpdk_conf.has('RTE_LIBRTE_BOND_PMD') 318 test_deps += 'pmd_bond' 319endif 320if dpdk_conf.has('RTE_LIBRTE_RING_PMD') 321 test_deps += 'pmd_ring' 322endif 323 324if dpdk_conf.has('RTE_LIBRTE_POWER') 325 test_deps += 'power' 326endif 327if dpdk_conf.has('RTE_LIBRTE_KNI') 328 test_deps += 'kni' 329endif 330if dpdk_conf.has('RTE_LIBRTE_PDUMP') 331 test_deps += 'pdump' 332endif 333 334cflags = machine_args 335if cc.has_argument('-Wno-format-truncation') 336 cflags += '-Wno-format-truncation' 337endif 338 339# specify -D_GNU_SOURCE unconditionally 340cflags += '-D_GNU_SOURCE' 341 342test_dep_objs = [] 343if dpdk_conf.has('RTE_LIBRTE_COMPRESSDEV') 344 compress_test_dep = dependency('zlib', required: false) 345 if compress_test_dep.found() 346 test_dep_objs += compress_test_dep 347 test_sources += 'test_compressdev.c' 348 test_deps += 'compressdev' 349 fast_test_names += 'compressdev_autotest' 350 endif 351endif 352 353if dpdk_conf.has('RTE_LIBRTE_PMD_CRYPTO_SCHEDULER') 354 driver_test_names += 'cryptodev_scheduler_autotest' 355endif 356 357foreach d:test_deps 358 def_lib = get_option('default_library') 359 test_dep_objs += get_variable(def_lib + '_rte_' + d) 360endforeach 361test_dep_objs += cc.find_library('execinfo', required: false) 362 363link_libs = [] 364if get_option('default_library') == 'static' 365 link_libs = dpdk_drivers 366endif 367 368dpdk_test = executable('dpdk-test', 369 test_sources, 370 link_whole: link_libs, 371 dependencies: test_dep_objs, 372 c_args: [cflags, '-DALLOW_EXPERIMENTAL_API'], 373 install_rpath: driver_install_path, 374 install: true) 375 376# some perf tests (eg: memcpy perf autotest)take very long 377# to complete, so timeout to 10 minutes 378timeout_seconds = 600 379timeout_seconds_fast = 10 380 381# Retrieve the number of CPU cores, defaulting to 4. 382num_cores = '0-3' 383if host_machine.system() == 'linux' 384 num_cores = run_command('cat', 385 '/sys/devices/system/cpu/present' 386 ).stdout().strip() 387elif host_machine.system() == 'freebsd' 388 snum_cores = run_command('/sbin/sysctl', '-n', 389 'hw.ncpu').stdout().strip() 390 inum_cores = snum_cores.to_int() - 1 391 num_cores = '0-@0@'.format(inum_cores) 392endif 393 394num_cores_arg = '-l ' + num_cores 395 396test_args = [num_cores_arg] 397foreach arg : fast_test_names 398 if host_machine.system() == 'linux' 399 test(arg, dpdk_test, 400 env : ['DPDK_TEST=' + arg], 401 args : test_args + 402 ['--file-prefix=@0@'.format(arg)], 403 timeout : timeout_seconds_fast, 404 is_parallel : false, 405 suite : 'fast-tests') 406 else 407 test(arg, dpdk_test, 408 env : ['DPDK_TEST=' + arg], 409 args : test_args, 410 timeout : timeout_seconds_fast, 411 is_parallel : false, 412 suite : 'fast-tests') 413 endif 414endforeach 415 416foreach arg : perf_test_names 417 test(arg, dpdk_test, 418 env : ['DPDK_TEST=' + arg], 419 args : test_args, 420 timeout : timeout_seconds, 421 is_parallel : false, 422 suite : 'perf-tests') 423endforeach 424 425foreach arg : driver_test_names 426 test(arg, dpdk_test, 427 env : ['DPDK_TEST=' + arg], 428 args : test_args, 429 timeout : timeout_seconds, 430 is_parallel : false, 431 suite : 'driver-tests') 432endforeach 433 434foreach arg : dump_test_names 435 test(arg, dpdk_test, 436 env : ['DPDK_TEST=' + arg], 437 args : test_args, 438 timeout : timeout_seconds, 439 is_parallel : false, 440 suite : 'debug-tests') 441endforeach 442 443