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 401get_coremask = find_program('get-coremask.sh') 402num_cores_arg = '-l ' + run_command(get_coremask).stdout().strip() 403 404test_args = [num_cores_arg] 405foreach arg : fast_test_names 406 if host_machine.system() == 'linux' 407 test(arg, dpdk_test, 408 env : ['DPDK_TEST=' + arg], 409 args : test_args + 410 ['--file-prefix=@0@'.format(arg)], 411 timeout : timeout_seconds_fast, 412 is_parallel : false, 413 suite : 'fast-tests') 414 else 415 test(arg, dpdk_test, 416 env : ['DPDK_TEST=' + arg], 417 args : test_args, 418 timeout : timeout_seconds_fast, 419 is_parallel : false, 420 suite : 'fast-tests') 421 endif 422endforeach 423 424foreach arg : perf_test_names 425 test(arg, dpdk_test, 426 env : ['DPDK_TEST=' + arg], 427 args : test_args, 428 timeout : timeout_seconds, 429 is_parallel : false, 430 suite : 'perf-tests') 431endforeach 432 433foreach arg : driver_test_names 434 test(arg, dpdk_test, 435 env : ['DPDK_TEST=' + arg], 436 args : test_args, 437 timeout : timeout_seconds, 438 is_parallel : false, 439 suite : 'driver-tests') 440endforeach 441 442foreach arg : dump_test_names 443 test(arg, dpdk_test, 444 env : ['DPDK_TEST=' + arg], 445 args : test_args, 446 timeout : timeout_seconds, 447 is_parallel : false, 448 suite : 'debug-tests') 449endforeach 450