From 3d20ffe6ddb1d3ff65bf38ca8663f1500ffb2956 Mon Sep 17 00:00:00 2001
From: Hari Kumar Vemula <hari.kumarx.vemula@intel.com>
Date: Fri, 18 Jan 2019 17:40:44 +0000
Subject: [PATCH] test: reorder test cases in meson

Categorize testcases into suites:
- test cases that runs quickly
- performance test cases
- test cases that depend on specific drivers
- logging or dump related test cases

Signed-off-by: Hari Kumar Vemula <hari.kumarx.vemula@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 test/test/meson.build | 299 +++++++++++++++++++++++++-----------------
 1 file changed, 179 insertions(+), 120 deletions(-)

diff --git a/test/test/meson.build b/test/test/meson.build
index 045d7c8dec..05e5ddeb09 100644
--- a/test/test/meson.build
+++ b/test/test/meson.build
@@ -135,116 +135,139 @@ test_deps = ['acl',
 	'timer'
 ]
 
-test_names = [
-	'acl_autotest',
-	'alarm_autotest',
-	'atomic_autotest',
-	'barrier_autotest',
-	'bitratestats_autotest',
-	'byteorder_autotest',
-	'cmdline_autotest',
-	'common_autotest',
-	'cpuflags_autotest',
-	'crc_autotest',
-	'cryptodev_qat_autotest',
-	'cryptodev_aesni_mb_autotest',
-	'cryptodev_openssl_autotest',
-	'cryptodev_openssl_asym_autotest',
-	'cryptodev_aesni_gcm_autotest',
-	'cryptodev_null_autotest',
-	'cryptodev_sw_snow3g_autotest',
-	'cryptodev_sw_kasumi_autotest',
-	'cryptodev_sw_zuc_autotest',
-	'cryptodev_sw_armv8_autotest',
-	'cryptodev_sw_mvsam_autotest',
-	'cryptodev_dpaa2_sec_autotest',
-	'cryptodev_dpaa_sec_autotest',
-	'cryptodev_octeontx_autotest',
-	'cycles_autotest',
-	'debug_autotest',
-	'delay_us_sleep_autotest',
-	'devargs_autotest',
-	'distributor_autotest',
-	'distributor_perf_autotest',
-	'eal_flags_autotest',
-	'eal_fs_autotest',
-	'efd_autotest',
-	'efd_perf_autotest',
-	'errno_autotest',
-	'event_crypto_adapter_autotest',
-	'event_eth_rx_adapter_autotest',
-	'event_eth_rx_intr_adapter_autotest',
-	'event_ring_autotest',
-	'event_eth_tx_adapter_autotest',
-	'event_timer_adapter_autotest',
-	'eventdev_common_autotest',
-	'eventdev_octeontx_autotest',
-	'eventdev_sw_autotest',
-	'external_mem_autotest',
-	'fbarray_autotest',
-	'func_reentrancy_autotest',
-	'flow_classify_autotest',
-	'hash_autotest',
-	'hash_functions_autotest',
-	'hash_multiwriter_autotest',
-	'hash_perf_autotest',
-	'hash_readwrite_autotest',
-	'hash_readwrite_lf_autotest',
-	'interrupt_autotest',
-	'ipsec_autotest',
-	'kni_autotest',
-	'kvargs_autotest',
-	'latencystats_autotest',
-	'link_bonding_autotest',
-	'link_bonding_mode4_autotest',
-	'logs_autotest',
-	'lpm6_autotest',
-	'lpm6_perf_autotest',
-	'lpm_autotest',
-	'lpm_perf_autotest',
-	'malloc_autotest',
-	'mbuf_autotest',
-	'member_autotest',
-	'member_perf_autotest',
-	'memcpy_autotest',
-	'memcpy_perf_autotest',
-	'memory_autotest',
-	'mempool_autotest',
-	'mempool_perf_autotest',
-	'memzone_autotest',
-	'meter_autotest',
-	'metrics_autotest',
-	'multiprocess_autotest',
-	'pdump_autotest',
-	'per_lcore_autotest',
-	'pmd_perf_autotest',
-	'power_acpi_cpufreq_autotest',
-	'power_autotest',
-	'power_kvm_vm_autotest',
-	'prefetch_autotest',
-	'reciprocal_division',
-	'reciprocal_division_perf',
-	'red_all',
-	'red_autotest',
-	'red_perf',
-	'reorder_autotest',
-	'ring_autotest',
-	'ring_perf_autotest',
-	'ring_pmd_autotest',
-	'ring_pmd_perf_autotest',
-	'rwlock_autotest',
-	'sched_autotest',
-	'service_autotest',
-	'spinlock_autotest',
-	'string_autotest',
-	'table_autotest',
-	'tailq_autotest',
-	'thash_autotest',
-	'timer_autotest',
-	'timer_perf__autotest',
-	'timer_racecond_autotest',
-	'user_delay_us',
-	'version_autotest',
+# All test cases in fast_parallel_test_names list are parallel
+fast_parallel_test_names = [
+        'acl_autotest',
+        'alarm_autotest',
+        'atomic_autotest',
+        'byteorder_autotest',
+        'cmdline_autotest',
+        'common_autotest',
+        'cpuflags_autotest',
+        'cycles_autotest',
+        'debug_autotest',
+        'eal_flags_autotest',
+        'eal_fs_autotest',
+        'errno_autotest',
+        'event_ring_autotest',
+        'func_reentrancy_autotest',
+        'flow_classify_autotest',
+        'hash_autotest',
+        'interrupt_autotest',
+        'logs_autotest',
+        'lpm_autotest',
+        'lpm6_autotest',
+        'malloc_autotest',
+        'mbuf_autotest',
+        'memcpy_autotest',
+        'memory_autotest',
+        'mempool_autotest',
+        'memzone_autotest',
+        'meter_autotest',
+        'multiprocess_autotest',
+        'per_lcore_autotest',
+        'prefetch_autotest',
+        'red_autotest',
+        'ring_autotest',
+        'ring_pmd_autotest',
+        'rwlock_autotest',
+        'sched_autotest',
+        'spinlock_autotest',
+        'string_autotest',
+        'table_autotest',
+        'tailq_autotest',
+        'timer_autotest',
+        'user_delay_us',
+        'version_autotest',
+]
+
+# All test cases in fast_non_parallel_test_names list are non-parallel
+fast_non_parallel_test_names = [
+        'bitratestats_autotest',
+        'cryptodev_sw_armv8_autotest',
+        'crc_autotest',
+        'cryptodev_openssl_asym_autotest',
+        'cryptodev_sw_mvsam_autotest',
+        'delay_us_sleep_autotest',
+        'devargs_autotest',
+        'distributor_autotest',
+        'eventdev_common_autotest',
+        'eventdev_octeontx_autotest',
+        'eventdev_sw_autotest',
+        'fbarray_autotest',
+        'hash_readwrite_autotest',
+        'hash_readwrite_lf_autotest',
+        'hash_scaling_autotest',
+        'ipsec_autotest',
+        'kni_autotest',
+        'kvargs_autotest',
+        'latencystats_autotest',
+        'member_autotest',
+        'metrics_autotest',
+        'pdump_autotest',
+        'power_acpi_cpufreq_autotest',
+        'power_autotest',
+        'power_kvm_vm_autotest',
+        'reorder_autotest',
+        'service_autotest',
+        'thash_autotest',
+]
+
+# All test cases in perf_test_names list are non-parallel
+perf_test_names = [
+        'ring_perf_autotest',
+        'mempool_perf_autotest',
+        'memcpy_perf_autotest',
+        'hash_perf_autotest',
+        'timer_perf_autotest',
+        'reciprocal_division',
+        'reciprocal_division_perf',
+        'lpm_perf_autotest',
+        'red_all',
+        'barrier_autotest',
+        'hash_multiwriter_autotest',
+        'timer_racecond_autotest',
+        'efd_autotest',
+        'hash_functions_autotest',
+        'eventdev_selftest_sw',
+        'member_perf_autotest',
+        'efd_perf_autotest',
+        'lpm6_perf_autotest',
+        'red_perf',
+        'distributor_perf_autotest',
+        'ring_pmd_perf_autotest',
+        'pmd_perf_autotest',
+]
+
+# All test cases in driver_test_names list are non-parallel
+driver_test_names = [
+        'link_bonding_autotest',
+        'link_bonding_mode4_autotest',
+        'link_bonding_rssconf_autotest',
+        'cryptodev_sw_mrvl_autotest',
+        'cryptodev_dpaa2_sec_autotest',
+        'cryptodev_dpaa_sec_autotest',
+        'cryptodev_qat_autotest',
+        'cryptodev_aesni_mb_autotest',
+        'cryptodev_openssl_autotest',
+        'cryptodev_scheduler_autotest',
+        'cryptodev_aesni_gcm_autotest',
+        'cryptodev_null_autotest',
+        'cryptodev_sw_snow3g_autotest',
+        'cryptodev_sw_kasumi_autotest',
+        'cryptodev_sw_zuc_autotest',
+]
+
+# All test cases in dump_test_names list are non-parallel
+dump_test_names = [
+        'dump_struct_sizes',
+        'dump_mempool',
+        'dump_malloc_stats',
+        'dump_devargs',
+        'dump_log_types',
+        'dump_ring',
+        'dump_physmem',
+        'dump_memzone',
 ]
 
 if dpdk_conf.has('RTE_LIBRTE_PDUMP')
@@ -278,12 +301,14 @@ endif
 default_cflags += '-D_GNU_SOURCE'
 
 test_dep_objs = []
-compress_test_dep = dependency('zlib', required: false)
-if compress_test_dep.found()
-	test_dep_objs += compress_test_dep
-	test_sources += 'test_compressdev.c'
-	test_deps += 'compressdev'
-	test_names += 'compressdev_autotest'
+if dpdk_conf.has('RTE_LIBRTE_COMPRESSDEV')
+	compress_test_dep = dependency('zlib', required: false)
+	if compress_test_dep.found()
+		test_dep_objs += compress_test_dep
+		test_sources += 'test_compressdev.c'
+		test_deps += 'compressdev'
+		fast_non_parallel_test_names += 'compressdev_autotest'
+	endif
 endif
 
 foreach d:test_deps
@@ -309,11 +334,45 @@ if get_option('tests')
 	# some perf tests (eg: memcpy perf autotest)take very long
 	# to complete, so timeout to 10 minutes
 	timeout_seconds = 600
+	timeout_seconds_fast = 10
+
+	foreach arg : fast_parallel_test_names
+		test(arg, dpdk_test,
+			env : ['DPDK_TEST=' + arg],
+			args : ['-c f','-n 4', '--file-prefix=@0@'.format(arg)],
+			timeout : timeout_seconds_fast,
+			suite : 'fast-tests')
+	endforeach
+
+	foreach arg : fast_non_parallel_test_names
+		test(arg, dpdk_test,
+			env : ['DPDK_TEST=' + arg],
+			timeout : timeout_seconds_fast,
+			is_parallel : false,
+			suite : 'fast-tests')
+	endforeach
+
+	foreach arg : perf_test_names
+		test(arg, dpdk_test,
+		env : ['DPDK_TEST=' + arg],
+		timeout : timeout_seconds,
+		is_parallel : false,
+		suite : 'perf-tests')
+	endforeach
+
+	foreach arg : driver_test_names
+		test(arg, dpdk_test,
+			env : ['DPDK_TEST=' + arg],
+			timeout : timeout_seconds,
+			is_parallel : false,
+			suite : 'driver-tests')
+	endforeach
 
-	foreach t:test_names
-		test(t, dpdk_test,
-			env : ['DPDK_TEST='+t],
+	foreach arg : dump_test_names
+		test(arg, dpdk_test,
+			env : ['DPDK_TEST=' + arg],
 			timeout : timeout_seconds,
-			is_parallel : false)
+			is_parallel : false,
+			suite : 'debug-tests')
 	endforeach
 endif
-- 
2.39.5