From: Amit Gupta Date: Mon, 3 Feb 2020 19:49:08 +0000 (-0600) Subject: test/hash: split into shorter subtests X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=f6208425eb7860372ceeebeb2c4636edcfeee79b;p=dpdk.git test/hash: split into shorter subtests hash_readwrite test was taking too much time to complete in Travis. Test is split into functional and perf test. perf test is being moved under perf testsuites in meson. Signed-off-by: Amit Gupta Acked-by: Yipeng Wang Signed-off-by: Honnappa Nagarahalli --- diff --git a/app/test/autotest_data.py b/app/test/autotest_data.py index 6deb97bcc1..71db4b3f67 100644 --- a/app/test/autotest_data.py +++ b/app/test/autotest_data.py @@ -664,8 +664,14 @@ non_parallel_test_list = [ "Report": None, }, { - "Name": "Hash read-write concurrency autotest", - "Command": "hash_readwrite_autotest", + "Name": "Hash read-write concurrency functional autotest", + "Command": "hash_readwrite_func_autotest", + "Func": default_autotest, + "Report": None, + }, + { + "Name": "Hash read-write concurrency perf autotest", + "Command": "hash_readwrite_perf_autotest", "Func": default_autotest, "Report": None, }, diff --git a/app/test/meson.build b/app/test/meson.build index 22b0cefaa3..08c0ecb3fb 100644 --- a/app/test/meson.build +++ b/app/test/meson.build @@ -233,7 +233,7 @@ fast_test_names = [ 'distributor_autotest', 'eventdev_common_autotest', 'fbarray_autotest', - 'hash_readwrite_autotest', + 'hash_readwrite_func_autotest', 'hash_readwrite_lf_autotest', 'ipsec_autotest', 'kni_autotest', @@ -282,6 +282,7 @@ perf_test_names = [ 'stack_perf_autotest', 'stack_lf_perf_autotest', 'rand_perf_autotest', + 'hash_readwrite_perf_autotest', ] driver_test_names = [ diff --git a/app/test/test_hash_readwrite.c b/app/test/test_hash_readwrite.c index 615767fb60..635ed5a9f6 100644 --- a/app/test/test_hash_readwrite.c +++ b/app/test/test_hash_readwrite.c @@ -606,7 +606,7 @@ err: } static int -test_hash_readwrite_main(void) +test_hash_rw_perf_main(void) { /* * Variables used to choose different tests. @@ -615,7 +615,7 @@ test_hash_readwrite_main(void) * than writer threads. This is to timing either reader threads or * writer threads for performance numbers. */ - int use_htm, use_ext, reader_faster; + int use_htm, reader_faster; unsigned int i = 0, core_id = 0; if (rte_lcore_count() < 3) { @@ -637,14 +637,6 @@ test_hash_readwrite_main(void) printf("Test read-write with Hardware transactional memory\n"); use_htm = 1; - use_ext = 0; - - if (test_hash_readwrite_functional(use_ext, use_htm) < 0) - return -1; - - use_ext = 1; - if (test_hash_readwrite_functional(use_ext, use_htm) < 0) - return -1; reader_faster = 1; if (test_hash_readwrite_perf(&htm_results, use_htm, @@ -662,13 +654,6 @@ test_hash_readwrite_main(void) printf("Test read-write without Hardware transactional memory\n"); use_htm = 0; - use_ext = 0; - if (test_hash_readwrite_functional(use_ext, use_htm) < 0) - return -1; - - use_ext = 1; - if (test_hash_readwrite_functional(use_ext, use_htm) < 0) - return -1; reader_faster = 1; if (test_hash_readwrite_perf(&non_htm_results, use_htm, @@ -705,4 +690,64 @@ test_hash_readwrite_main(void) return 0; } -REGISTER_TEST_COMMAND(hash_readwrite_autotest, test_hash_readwrite_main); +static int +test_hash_rw_func_main(void) +{ + /* + * Variables used to choose different tests. + * use_htm indicates if hardware transactional memory should be used. + * reader_faster indicates if the reader threads should finish earlier + * than writer threads. This is to timing either reader threads or + * writer threads for performance numbers. + */ + int use_htm, use_ext; + unsigned int i = 0, core_id = 0; + + if (rte_lcore_count() < 3) { + printf("Not enough cores for hash_readwrite_autotest, expecting at least 3\n"); + return TEST_SKIPPED; + } + + RTE_LCORE_FOREACH_SLAVE(core_id) { + slave_core_ids[i] = core_id; + i++; + } + + setlocale(LC_NUMERIC, ""); + + if (rte_tm_supported()) { + printf("Hardware transactional memory (lock elision) " + "is supported\n"); + + printf("Test read-write with Hardware transactional memory\n"); + + use_htm = 1; + use_ext = 0; + + if (test_hash_readwrite_functional(use_ext, use_htm) < 0) + return -1; + + use_ext = 1; + if (test_hash_readwrite_functional(use_ext, use_htm) < 0) + return -1; + + } else { + printf("Hardware transactional memory (lock elision) " + "is NOT supported\n"); + } + + printf("Test read-write without Hardware transactional memory\n"); + use_htm = 0; + use_ext = 0; + if (test_hash_readwrite_functional(use_ext, use_htm) < 0) + return -1; + + use_ext = 1; + if (test_hash_readwrite_functional(use_ext, use_htm) < 0) + return -1; + + return 0; +} + +REGISTER_TEST_COMMAND(hash_readwrite_func_autotest, test_hash_rw_func_main); +REGISTER_TEST_COMMAND(hash_readwrite_perf_autotest, test_hash_rw_perf_main);