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 'test.c', 11 'test_acl.c', 12 'test_alarm.c', 13 'test_atomic.c', 14 'test_barrier.c', 15 'test_bpf.c', 16 'test_byteorder.c', 17 'test_cmdline.c', 18 'test_cmdline_cirbuf.c', 19 'test_cmdline_etheraddr.c', 20 'test_cmdline_ipaddr.c', 21 'test_cmdline_lib.c', 22 'test_cmdline_num.c', 23 'test_cmdline_portlist.c', 24 'test_cmdline_string.c', 25 'test_common.c', 26 'test_cpuflags.c', 27 'test_crc.c', 28 'test_cryptodev.c', 29 'test_cryptodev_asym.c', 30 'test_cryptodev_blockcipher.c', 31 'test_cryptodev_security_pdcp.c', 32 'test_cycles.c', 33 'test_debug.c', 34 'test_distributor.c', 35 'test_distributor_perf.c', 36 'test_eal_flags.c', 37 'test_eal_fs.c', 38 'test_efd.c', 39 'test_efd_perf.c', 40 'test_errno.c', 41 'test_event_crypto_adapter.c', 42 'test_event_eth_rx_adapter.c', 43 'test_event_ring.c', 44 'test_event_timer_adapter.c', 45 'test_eventdev.c', 46 'test_external_mem.c', 47 'test_fbarray.c', 48 'test_fib.c', 49 'test_fib_perf.c', 50 'test_fib6.c', 51 'test_fib6_perf.c', 52 'test_func_reentrancy.c', 53 'test_flow_classify.c', 54 'test_hash.c', 55 'test_hash_functions.c', 56 'test_hash_multiwriter.c', 57 'test_hash_readwrite.c', 58 'test_hash_perf.c', 59 'test_hash_readwrite_lf_perf.c', 60 'test_interrupts.c', 61 'test_ipsec.c', 62 'test_ipsec_sad.c', 63 'test_kni.c', 64 'test_kvargs.c', 65 'test_link_bonding.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_per_lcore.c', 87 'test_pmd_perf.c', 88 'test_power.c', 89 'test_power_cpufreq.c', 90 'test_power_kvm_vm.c', 91 'test_prefetch.c', 92 'test_rand_perf.c', 93 'test_rawdev.c', 94 'test_rcu_qsbr.c', 95 'test_rcu_qsbr_perf.c', 96 'test_reciprocal_division.c', 97 'test_reciprocal_division_perf.c', 98 'test_red.c', 99 'test_reorder.c', 100 'test_rib.c', 101 'test_rib6.c', 102 'test_ring.c', 103 'test_ring_mpmc_stress.c', 104 'test_ring_hts_stress.c', 105 'test_ring_peek_stress.c', 106 'test_ring_perf.c', 107 'test_ring_rts_stress.c', 108 'test_ring_stress.c', 109 'test_rwlock.c', 110 'test_sched.c', 111 'test_security.c', 112 'test_service_cores.c', 113 'test_spinlock.c', 114 'test_stack.c', 115 'test_stack_perf.c', 116 'test_string_fns.c', 117 'test_table.c', 118 'test_table_acl.c', 119 'test_table_combined.c', 120 'test_table_pipeline.c', 121 'test_table_ports.c', 122 'test_table_tables.c', 123 'test_tailq.c', 124 'test_thash.c', 125 'test_timer.c', 126 'test_timer_perf.c', 127 'test_timer_racecond.c', 128 'test_timer_secondary.c', 129 'test_ticketlock.c', 130 'test_trace.c', 131 'test_trace_register.c', 132 'test_trace_perf.c', 133 'test_version.c', 134 'virtual_pmd.c' 135) 136 137test_deps = ['acl', 138 'bitratestats', 139 'bpf', 140 'cfgfile', 141 'cmdline', 142 'cryptodev', 143 'distributor', 144 'efd', 145 'ethdev', 146 'eventdev', 147 'fib', 148 'flow_classify', 149 'hash', 150 'ipsec', 151 'latencystats', 152 'lpm', 153 'member', 154 'metrics', 155 'pipeline', 156 'port', 157 'rawdev', 158 'rcu', 159 'reorder', 160 'rib', 161 'ring', 162 'security', 163 'stack', 164 'timer' 165] 166 167# Each test is marked with flag true/false 168# to indicate whether it can run in no-huge mode. 169fast_tests = [ 170 ['acl_autotest', true], 171 ['alarm_autotest', false], 172 ['atomic_autotest', false], 173 ['byteorder_autotest', true], 174 ['cmdline_autotest', true], 175 ['common_autotest', true], 176 ['cpuflags_autotest', true], 177 ['cycles_autotest', true], 178 ['debug_autotest', true], 179 ['eal_flags_c_opt_autotest', false], 180 ['eal_flags_master_opt_autotest', false], 181 ['eal_flags_n_opt_autotest', false], 182 ['eal_flags_hpet_autotest', false], 183 ['eal_flags_no_huge_autotest', false], 184 ['eal_flags_w_opt_autotest', false], 185 ['eal_flags_b_opt_autotest', false], 186 ['eal_flags_vdev_opt_autotest', false], 187 ['eal_flags_r_opt_autotest', false], 188 ['eal_flags_mem_autotest', false], 189 ['eal_flags_file_prefix_autotest', false], 190 ['eal_flags_misc_autotest', false], 191 ['eal_fs_autotest', true], 192 ['errno_autotest', true], 193 ['event_ring_autotest', true], 194 ['fib_autotest', true], 195 ['fib6_autotest', true], 196 ['func_reentrancy_autotest', false], 197 ['flow_classify_autotest', false], 198 ['hash_autotest', true], 199 ['interrupt_autotest', true], 200 ['logs_autotest', true], 201 ['lpm_autotest', true], 202 ['lpm6_autotest', true], 203 ['malloc_autotest', false], 204 ['mbuf_autotest', false], 205 ['mcslock_autotest', false], 206 ['memcpy_autotest', true], 207 ['memory_autotest', false], 208 ['mempool_autotest', false], 209 ['memzone_autotest', false], 210 ['meter_autotest', true], 211 ['multiprocess_autotest', false], 212 ['per_lcore_autotest', true], 213 ['prefetch_autotest', true], 214 ['rcu_qsbr_autotest', true], 215 ['red_autotest', true], 216 ['rib_autotest', true], 217 ['rib6_autotest', true], 218 ['ring_autotest', true], 219 ['rwlock_test1_autotest', true], 220 ['rwlock_rda_autotest', true], 221 ['rwlock_rds_wrm_autotest', true], 222 ['rwlock_rde_wro_autotest', true], 223 ['sched_autotest', true], 224 ['security_autotest', false], 225 ['spinlock_autotest', true], 226 ['stack_autotest', false], 227 ['stack_lf_autotest', false], 228 ['string_autotest', true], 229 ['table_autotest', true], 230 ['tailq_autotest', true], 231 ['timer_autotest', false], 232 ['user_delay_us', true], 233 ['version_autotest', true], 234 ['crc_autotest', true], 235 ['delay_us_sleep_autotest', true], 236 ['distributor_autotest', false], 237 ['eventdev_common_autotest', true], 238 ['fbarray_autotest', true], 239 ['hash_readwrite_func_autotest', false], 240 ['ipsec_autotest', true], 241 ['kni_autotest', false], 242 ['kvargs_autotest', true], 243 ['member_autotest', true], 244 ['metrics_autotest', true], 245 ['power_cpufreq_autotest', false], 246 ['power_autotest', true], 247 ['power_kvm_vm_autotest', false], 248 ['reorder_autotest', true], 249 ['service_autotest', true], 250 ['thash_autotest', true], 251 ['trace_autotest', true], 252] 253 254perf_test_names = [ 255 'ring_perf_autotest', 256 'mempool_perf_autotest', 257 'memcpy_perf_autotest', 258 'hash_perf_autotest', 259 'timer_perf_autotest', 260 'reciprocal_division', 261 'reciprocal_division_perf', 262 'lpm_perf_autotest', 263 'rib_slow_autotest', 264 'fib_slow_autotest', 265 'fib_perf_autotest', 266 'red_all', 267 'barrier_autotest', 268 'hash_multiwriter_autotest', 269 'timer_racecond_autotest', 270 'efd_autotest', 271 'hash_functions_autotest', 272 'member_perf_autotest', 273 'efd_perf_autotest', 274 'lpm6_perf_autotest', 275 'rib6_slow_autotest', 276 'fib6_slow_autotest', 277 'fib6_perf_autotest', 278 'rcu_qsbr_perf_autotest', 279 'red_perf', 280 'distributor_perf_autotest', 281 'pmd_perf_autotest', 282 'stack_perf_autotest', 283 'stack_lf_perf_autotest', 284 'rand_perf_autotest', 285 'hash_readwrite_perf_autotest', 286 'hash_readwrite_lf_perf_autotest', 287 'trace_perf_autotest', 288] 289 290driver_test_names = [ 291 'cryptodev_aesni_mb_autotest', 292 'cryptodev_aesni_gcm_autotest', 293 'cryptodev_dpaa_sec_autotest', 294 'cryptodev_dpaa2_sec_autotest', 295 'cryptodev_null_autotest', 296 'cryptodev_octeontx2_autotest', 297 'cryptodev_openssl_autotest', 298 'cryptodev_openssl_asym_autotest', 299 'cryptodev_qat_autotest', 300 'cryptodev_sw_armv8_autotest', 301 'cryptodev_sw_kasumi_autotest', 302 'cryptodev_sw_mvsam_autotest', 303 'cryptodev_sw_snow3g_autotest', 304 'cryptodev_sw_zuc_autotest', 305 'eventdev_selftest_octeontx', 306 'eventdev_selftest_sw', 307 'link_bonding_autotest', 308 'link_bonding_rssconf_autotest', 309 'rawdev_autotest', 310] 311 312dump_test_names = [ 313 'dump_struct_sizes', 314 'dump_mempool', 315 'dump_malloc_stats', 316 'dump_devargs', 317 'dump_log_types', 318 'dump_ring', 319 'dump_physmem', 320 'dump_memzone', 321] 322 323# The following linkages are an exception to allow running the 324# unit tests without requiring that the developer install the 325# DPDK libraries. Explicit linkage of drivers (plugin libraries) 326# in applications should not be used. 327if dpdk_conf.has('RTE_LIBRTE_RING_MEMPOOL') 328 test_deps += 'mempool_ring' 329endif 330if dpdk_conf.has('RTE_LIBRTE_STACK_MEMPOOL') 331 test_deps += 'mempool_stack' 332endif 333if dpdk_conf.has('RTE_LIBRTE_SKELETON_EVENTDEV_PMD') 334 test_deps += 'pmd_skeleton_event' 335endif 336 337# The following linkages of drivers are required because 338# they are used via a driver-specific API. 339if dpdk_conf.has('RTE_LIBRTE_BOND_PMD') 340 test_deps += 'pmd_bond' 341endif 342if dpdk_conf.has('RTE_LIBRTE_RING_PMD') 343 test_deps += 'pmd_ring' 344 test_sources += 'test_pmd_ring_perf.c' 345 test_sources += 'test_pmd_ring.c' 346 test_sources += 'test_event_eth_tx_adapter.c' 347 test_sources += 'test_bitratestats.c' 348 test_sources += 'test_latencystats.c' 349 test_sources += 'test_link_bonding_mode4.c' 350 test_sources += 'sample_packet_forward.c' 351 test_sources += 'test_pdump.c' 352 fast_tests += [['ring_pmd_autotest', true]] 353 perf_test_names += 'ring_pmd_perf_autotest' 354 fast_tests += [['event_eth_tx_adapter_autotest', false]] 355 fast_tests += [['bitratestats_autotest', true]] 356 fast_tests += [['latencystats_autotest', true]] 357 driver_test_names += 'link_bonding_mode4_autotest' 358 fast_tests += [['pdump_autotest', true]] 359endif 360 361if dpdk_conf.has('RTE_LIBRTE_POWER') 362 test_deps += 'power' 363endif 364if dpdk_conf.has('RTE_LIBRTE_KNI') 365 test_deps += 'kni' 366endif 367if dpdk_conf.has('RTE_LIBRTE_PDUMP') 368 test_deps += 'pdump' 369endif 370 371if cc.has_argument('-Wno-format-truncation') 372 cflags += '-Wno-format-truncation' 373endif 374 375# specify -D_GNU_SOURCE unconditionally 376cflags += '-D_GNU_SOURCE' 377 378test_dep_objs = [] 379if dpdk_conf.has('RTE_LIBRTE_COMPRESSDEV') 380 compress_test_dep = dependency('zlib', required: false) 381 if compress_test_dep.found() 382 test_dep_objs += compress_test_dep 383 test_sources += 'test_compressdev.c' 384 test_deps += 'compressdev' 385 fast_tests += [['compressdev_autotest', false]] 386 endif 387endif 388 389if dpdk_conf.has('RTE_LIBRTE_PMD_CRYPTO_SCHEDULER') 390 driver_test_names += 'cryptodev_scheduler_autotest' 391endif 392 393foreach d:test_deps 394 def_lib = get_option('default_library') 395 test_dep_objs += get_variable(def_lib + '_rte_' + d) 396endforeach 397test_dep_objs += cc.find_library('execinfo', required: false) 398 399link_libs = [] 400if get_option('default_library') == 'static' 401 link_libs = dpdk_drivers 402endif 403 404dpdk_test = executable('dpdk-test', 405 test_sources, 406 link_whole: link_libs, 407 dependencies: test_dep_objs, 408 c_args: cflags, 409 install_rpath: driver_install_path, 410 install: true) 411 412has_hugepage = run_command('has-hugepage.sh').stdout().strip() != '0' 413message('hugepage availability: @0@'.format(has_hugepage)) 414 415# some perf tests (eg: memcpy perf autotest)take very long 416# to complete, so timeout to 10 minutes 417timeout_seconds = 600 418timeout_seconds_fast = 10 419 420get_coremask = find_program('get-coremask.sh') 421num_cores_arg = '-l ' + run_command(get_coremask).stdout().strip() 422 423default_test_args = [num_cores_arg] 424 425foreach arg : fast_tests 426 test_args = default_test_args 427 run_test = true 428 if not has_hugepage 429 if arg[1] 430 test_args += ['--no-huge', '-m', '2048'] 431 else 432 run_test = false 433 endif 434 endif 435 436 if (get_option('default_library') == 'shared' and 437 arg[0] == 'event_eth_tx_adapter_autotest') 438 foreach drv:dpdk_drivers 439 test_args += ['-d', drv.full_path().split('.a')[0] + '.so'] 440 endforeach 441 endif 442 if is_linux 443 test_args += ['--file-prefix=@0@'.format(arg[0])] 444 endif 445 446 if run_test 447 test(arg[0], dpdk_test, 448 env : ['DPDK_TEST=' + arg[0]], 449 args : test_args, 450 timeout : timeout_seconds_fast, 451 is_parallel : false, 452 suite : 'fast-tests') 453 endif 454endforeach 455 456foreach arg : perf_test_names 457 test(arg, dpdk_test, 458 env : ['DPDK_TEST=' + arg], 459 args : default_test_args, 460 timeout : timeout_seconds, 461 is_parallel : false, 462 suite : 'perf-tests') 463endforeach 464 465foreach arg : driver_test_names 466 test(arg, dpdk_test, 467 env : ['DPDK_TEST=' + arg], 468 args : default_test_args, 469 timeout : timeout_seconds, 470 is_parallel : false, 471 suite : 'driver-tests') 472endforeach 473 474foreach arg : dump_test_names 475 test(arg, dpdk_test, 476 env : ['DPDK_TEST=' + arg], 477 args : default_test_args, 478 timeout : timeout_seconds, 479 is_parallel : false, 480 suite : 'debug-tests') 481endforeach 482