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