[v5] app/test: fix build when ring PMD is disabled

Message ID 20191223065305.18434-1-reshma.pattan@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Thomas Monjalon
Headers
Series [v5] app/test: fix build when ring PMD is disabled |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-testing success Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/travis-robot success Travis build: passed
ci/Intel-compilation success Compilation OK

Commit Message

Pattan, Reshma Dec. 23, 2019, 6:53 a.m. UTC
  Some unit tests has dependency on RING PMD,
so this patch is trying to fix those and other
closely related issues.

1)pdump, latency, bitrate, ring PMD and test_event_eth_tx_adapter
unit tests are dependent on ring PMD, so compile those
tests only when ring PMD is enabled else ignore.

2)get rid of make file error which was added by bond unit test
for ring PMD disabled case which is not necessary.

3)Tx adapter UT is dependent on RING PMD, but it was
observed that it was missing from the run in meson
build, so added it. TX adapter UT uses 'sw event and
'null' pmd drivers, so for shared builds the drivers .so
path has to be passed to the test args of meson UT run.

Fixes: 086eb64db3 ("test/pdump: add unit test for pdump library")
Fixes: fdeb30fa71 ("test/bitrate: add unit tests for bitrate library")
Fixes: 1e3676a06e ("test/latency: add unit tests for latencystats library")
Fixes: 46cf97e4bb ("eventdev: add test for eth Tx adapter")
Fixes: d23e09e0ef ("app/test: link with ring pmd when needed")

CC: stable@dpdk.org
CC: Nikhil Rao <nikhil.rao@intel.com>
CC: Chas Williams <chas3@att.com>
CC: Bruce Richardson <bruce.richardson@intel.com>
CC: Stephen Hemminger <stephen@networkplumber.org>

Reported-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
---
v5: remove extra blank line.
v4: fix event_eth_tx_adapter_autotest for shared build
as reported by travis-ci
https://travis-ci.com/ovsrobot/dpdk/jobs/249598391
v3: add missing test event_eth_tx_adapter_autotest.
Add link bonding mode4 test to drivers test.
v2: fix comments of v1 and combine the patches 1/2 and 2/2 of v1
---
 app/test/Makefile    | 16 +++++-----------
 app/test/meson.build | 36 ++++++++++++++++++++++--------------
 app/test/process.h   |  8 ++++++++
 app/test/test.c      |  2 ++
 4 files changed, 37 insertions(+), 25 deletions(-)
  

Comments

Thomas Monjalon Jan. 19, 2020, 9:50 p.m. UTC | #1
Someone to review please?

23/12/2019 07:53, Reshma Pattan:
> Some unit tests has dependency on RING PMD,
> so this patch is trying to fix those and other
> closely related issues.
> 
> 1)pdump, latency, bitrate, ring PMD and test_event_eth_tx_adapter
> unit tests are dependent on ring PMD, so compile those
> tests only when ring PMD is enabled else ignore.
> 
> 2)get rid of make file error which was added by bond unit test
> for ring PMD disabled case which is not necessary.
> 
> 3)Tx adapter UT is dependent on RING PMD, but it was
> observed that it was missing from the run in meson
> build, so added it. TX adapter UT uses 'sw event and
> 'null' pmd drivers, so for shared builds the drivers .so
> path has to be passed to the test args of meson UT run.
> 
> Fixes: 086eb64db3 ("test/pdump: add unit test for pdump library")
> Fixes: fdeb30fa71 ("test/bitrate: add unit tests for bitrate library")
> Fixes: 1e3676a06e ("test/latency: add unit tests for latencystats library")
> Fixes: 46cf97e4bb ("eventdev: add test for eth Tx adapter")
> Fixes: d23e09e0ef ("app/test: link with ring pmd when needed")
> 
> CC: stable@dpdk.org
> CC: Nikhil Rao <nikhil.rao@intel.com>
> CC: Chas Williams <chas3@att.com>
> CC: Bruce Richardson <bruce.richardson@intel.com>
> CC: Stephen Hemminger <stephen@networkplumber.org>
> 
> Reported-by: Stephen Hemminger <stephen@networkplumber.org>
> Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
> ---
> v5: remove extra blank line.
> v4: fix event_eth_tx_adapter_autotest for shared build
> as reported by travis-ci
> https://travis-ci.com/ovsrobot/dpdk/jobs/249598391
> v3: add missing test event_eth_tx_adapter_autotest.
> Add link bonding mode4 test to drivers test.
> v2: fix comments of v1 and combine the patches 1/2 and 2/2 of v1
> ---
>  app/test/Makefile    | 16 +++++-----------
>  app/test/meson.build | 36 ++++++++++++++++++++++--------------
>  app/test/process.h   |  8 ++++++++
>  app/test/test.c      |  2 ++
>  4 files changed, 37 insertions(+), 25 deletions(-)
  
Rao, Nikhil Jan. 20, 2020, 9:55 a.m. UTC | #2
> -----Original Message-----
> From: Thomas Monjalon <thomas@monjalon.net>
> Sent: Monday, January 20, 2020 3:20 AM
> To: dev@dpdk.org
> Cc: stable@dpdk.org; Rao, Nikhil <nikhil.rao@intel.com>; Chas Williams
> <chas3@att.com>; Richardson, Bruce <bruce.richardson@intel.com>;
> Stephen Hemminger <stephen@networkplumber.org>; Pattan, Reshma
> <reshma.pattan@intel.com>
> Subject: Re: [dpdk-dev] [PATCH v5] app/test: fix build when ring PMD is
> disabled
> 
> Someone to review please?
> 
> 23/12/2019 07:53, Reshma Pattan:
> > Some unit tests has dependency on RING PMD, so this patch is trying to
> > fix those and other closely related issues.
> >
> > 1)pdump, latency, bitrate, ring PMD and test_event_eth_tx_adapter unit
> > tests are dependent on ring PMD, so compile those tests only when ring
> > PMD is enabled else ignore.
> >
> > 2)get rid of make file error which was added by bond unit test for
> > ring PMD disabled case which is not necessary.
> >
> > 3)Tx adapter UT is dependent on RING PMD, but it was observed that it
> > was missing from the run in meson build, so added it. TX adapter UT
> > uses 'sw event and 'null' pmd drivers, so for shared builds the
> > drivers .so path has to be passed to the test args of meson UT run.
> >
> > Fixes: 086eb64db3 ("test/pdump: add unit test for pdump library")
> > Fixes: fdeb30fa71 ("test/bitrate: add unit tests for bitrate library")
> > Fixes: 1e3676a06e ("test/latency: add unit tests for latencystats
> > library")
> > Fixes: 46cf97e4bb ("eventdev: add test for eth Tx adapter")
> > Fixes: d23e09e0ef ("app/test: link with ring pmd when needed")
> >
> > CC: stable@dpdk.org
> > CC: Nikhil Rao <nikhil.rao@intel.com>
> > CC: Chas Williams <chas3@att.com>
> > CC: Bruce Richardson <bruce.richardson@intel.com>
> > CC: Stephen Hemminger <stephen@networkplumber.org>
> >
> > Reported-by: Stephen Hemminger <stephen@networkplumber.org>
> > Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
> > ---
> > v5: remove extra blank line.
> > v4: fix event_eth_tx_adapter_autotest for shared build as reported by
> > travis-ci
> > https://travis-ci.com/ovsrobot/dpdk/jobs/249598391
> > v3: add missing test event_eth_tx_adapter_autotest.
> > Add link bonding mode4 test to drivers test.
> > v2: fix comments of v1 and combine the patches 1/2 and 2/2 of v1
> > ---
> >  app/test/Makefile    | 16 +++++-----------
> >  app/test/meson.build | 36 ++++++++++++++++++++++--------------
> >  app/test/process.h   |  8 ++++++++
> >  app/test/test.c      |  2 ++
> >  4 files changed, 37 insertions(+), 25 deletions(-)
> 
> 
> 

For the fixes related to event_eth_tx_adapter_autotest
Tested-by: Nikhil Rao <nikhil.rao@intel.com>
  
Bruce Richardson Jan. 20, 2020, 5:36 p.m. UTC | #3
On Mon, Dec 23, 2019 at 06:53:05AM +0000, Reshma Pattan wrote:
> Some unit tests has dependency on RING PMD,
> so this patch is trying to fix those and other
> closely related issues.
> 
> 1)pdump, latency, bitrate, ring PMD and test_event_eth_tx_adapter
> unit tests are dependent on ring PMD, so compile those
> tests only when ring PMD is enabled else ignore.
> 
> 2)get rid of make file error which was added by bond unit test
> for ring PMD disabled case which is not necessary.
> 
> 3)Tx adapter UT is dependent on RING PMD, but it was
> observed that it was missing from the run in meson
> build, so added it. TX adapter UT uses 'sw event and
> 'null' pmd drivers, so for shared builds the drivers .so
> path has to be passed to the test args of meson UT run.
> 
> Fixes: 086eb64db3 ("test/pdump: add unit test for pdump library")
> Fixes: fdeb30fa71 ("test/bitrate: add unit tests for bitrate library")
> Fixes: 1e3676a06e ("test/latency: add unit tests for latencystats library")
> Fixes: 46cf97e4bb ("eventdev: add test for eth Tx adapter")
> Fixes: d23e09e0ef ("app/test: link with ring pmd when needed")
> 
> CC: stable@dpdk.org
> CC: Nikhil Rao <nikhil.rao@intel.com>
> CC: Chas Williams <chas3@att.com>
> CC: Bruce Richardson <bruce.richardson@intel.com>
> CC: Stephen Hemminger <stephen@networkplumber.org>
> 
> Reported-by: Stephen Hemminger <stephen@networkplumber.org>
> Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
> ---
> v5: remove extra blank line.
> v4: fix event_eth_tx_adapter_autotest for shared build
> as reported by travis-ci
> https://travis-ci.com/ovsrobot/dpdk/jobs/249598391
> v3: add missing test event_eth_tx_adapter_autotest.
> Add link bonding mode4 test to drivers test.
> v2: fix comments of v1 and combine the patches 1/2 and 2/2 of v1
> ---

Confirmed build now works with disable_drivers=net/ring

Tested-by: Bruce Richardson <bruce.richardson@intel.com>

Unfortunately, other parts fail if other drivers are similarly disabled,
but that is for another patchset (and probably release!) to fix.
  
Thomas Monjalon Feb. 16, 2020, 6:10 p.m. UTC | #4
20/01/2020 18:36, Bruce Richardson:
> On Mon, Dec 23, 2019 at 06:53:05AM +0000, Reshma Pattan wrote:
> > Some unit tests has dependency on RING PMD,
> > so this patch is trying to fix those and other
> > closely related issues.
> > 
> > 1)pdump, latency, bitrate, ring PMD and test_event_eth_tx_adapter
> > unit tests are dependent on ring PMD, so compile those
> > tests only when ring PMD is enabled else ignore.
> > 
> > 2)get rid of make file error which was added by bond unit test
> > for ring PMD disabled case which is not necessary.
> > 
> > 3)Tx adapter UT is dependent on RING PMD, but it was
> > observed that it was missing from the run in meson
> > build, so added it. TX adapter UT uses 'sw event and
> > 'null' pmd drivers, so for shared builds the drivers .so
> > path has to be passed to the test args of meson UT run.
> > 
> > Fixes: 086eb64db3 ("test/pdump: add unit test for pdump library")
> > Fixes: fdeb30fa71 ("test/bitrate: add unit tests for bitrate library")
> > Fixes: 1e3676a06e ("test/latency: add unit tests for latencystats library")
> > Fixes: 46cf97e4bb ("eventdev: add test for eth Tx adapter")
> > Fixes: d23e09e0ef ("app/test: link with ring pmd when needed")
> > 
> > CC: stable@dpdk.org
> > CC: Nikhil Rao <nikhil.rao@intel.com>
> > CC: Chas Williams <chas3@att.com>
> > CC: Bruce Richardson <bruce.richardson@intel.com>
> > CC: Stephen Hemminger <stephen@networkplumber.org>
> > 
> > Reported-by: Stephen Hemminger <stephen@networkplumber.org>
> > Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
> > ---
> > v5: remove extra blank line.
> > v4: fix event_eth_tx_adapter_autotest for shared build
> > as reported by travis-ci
> > https://travis-ci.com/ovsrobot/dpdk/jobs/249598391
> > v3: add missing test event_eth_tx_adapter_autotest.
> > Add link bonding mode4 test to drivers test.
> > v2: fix comments of v1 and combine the patches 1/2 and 2/2 of v1
> > ---
> 
> Confirmed build now works with disable_drivers=net/ring
> 
> Tested-by: Bruce Richardson <bruce.richardson@intel.com>

Applied, thanks

> Unfortunately, other parts fail if other drivers are similarly disabled,
> but that is for another patchset (and probably release!) to fix.

Good to know we are far from retirement ;)
  

Patch

diff --git a/app/test/Makefile b/app/test/Makefile
index 57930c00b..1ee155009 100644
--- a/app/test/Makefile
+++ b/app/test/Makefile
@@ -151,8 +151,12 @@  SRCS-y += test_func_reentrancy.c
 
 SRCS-y += test_service_cores.c
 
+ifeq ($(CONFIG_RTE_LIBRTE_PMD_RING),y)
+SRCS-y += sample_packet_forward.c
 SRCS-$(CONFIG_RTE_LIBRTE_BITRATE) += test_bitratestats.c
 SRCS-$(CONFIG_RTE_LIBRTE_LATENCY_STATS) += test_latencystats.c
+SRCS-$(CONFIG_RTE_LIBRTE_PDUMP) += test_pdump.c
+endif
 
 SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) += test_cmdline.c
 SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) += test_cmdline_num.c
@@ -181,11 +185,8 @@  SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) += test_distributor_perf.c
 
 SRCS-$(CONFIG_RTE_LIBRTE_REORDER) += test_reorder.c
 
-SRCS-$(CONFIG_RTE_LIBRTE_PDUMP) += test_pdump.c
-
 SRCS-y += virtual_pmd.c
 SRCS-y += packet_burst_generator.c
-SRCS-y += sample_packet_forward.c
 SRCS-$(CONFIG_RTE_LIBRTE_ACL) += test_acl.c
 
 ifeq ($(CONFIG_RTE_LIBRTE_PMD_RING),y)
@@ -215,7 +216,7 @@  ifeq ($(CONFIG_RTE_LIBRTE_EVENTDEV),y)
 SRCS-y += test_eventdev.c
 SRCS-y += test_event_ring.c
 SRCS-y += test_event_eth_rx_adapter.c
-SRCS-y += test_event_eth_tx_adapter.c
+SRCS-$(CONFIG_RTE_LIBRTE_PMD_RING) += test_event_eth_tx_adapter.c
 SRCS-y += test_event_timer_adapter.c
 SRCS-y += test_event_crypto_adapter.c
 endif
@@ -268,13 +269,6 @@  endif
 endif
 endif
 
-# Link against shared libraries when needed
-ifeq ($(CONFIG_RTE_LIBRTE_PMD_BOND),y)
-ifneq ($(CONFIG_RTE_LIBRTE_PMD_RING),y)
-$(error Link bonding tests require CONFIG_RTE_LIBRTE_PMD_RING=y)
-endif
-endif
-
 ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
 
 ifeq ($(CONFIG_RTE_LIBRTE_PMD_BOND),y)
diff --git a/app/test/meson.build b/app/test/meson.build
index fb49d804b..e38d97d51 100644
--- a/app/test/meson.build
+++ b/app/test/meson.build
@@ -7,13 +7,11 @@  endif
 
 test_sources = files('commands.c',
 	'packet_burst_generator.c',
-	'sample_packet_forward.c',
 	'test.c',
 	'test_acl.c',
 	'test_alarm.c',
 	'test_atomic.c',
 	'test_barrier.c',
-	'test_bitratestats.c',
 	'test_bpf.c',
 	'test_byteorder.c',
 	'test_cmdline.c',
@@ -43,7 +41,6 @@  test_sources = files('commands.c',
 	'test_event_crypto_adapter.c',
 	'test_event_eth_rx_adapter.c',
 	'test_event_ring.c',
-	'test_event_eth_tx_adapter.c',
 	'test_event_timer_adapter.c',
 	'test_eventdev.c',
 	'test_external_mem.c',
@@ -65,9 +62,7 @@  test_sources = files('commands.c',
 	'test_ipsec_sad.c',
 	'test_kni.c',
 	'test_kvargs.c',
-	'test_latencystats.c',
 	'test_link_bonding.c',
-	'test_link_bonding_mode4.c',
 	'test_link_bonding_rssconf.c',
 	'test_logs.c',
 	'test_lpm.c',
@@ -88,11 +83,8 @@  test_sources = files('commands.c',
 	'test_metrics.c',
 	'test_mcslock.c',
 	'test_mp_secondary.c',
-	'test_pdump.c',
 	'test_per_lcore.c',
 	'test_pmd_perf.c',
-	'test_pmd_ring.c',
-	'test_pmd_ring_perf.c',
 	'test_power.c',
 	'test_power_cpufreq.c',
 	'test_power_kvm_vm.c',
@@ -212,7 +204,6 @@  fast_test_names = [
         'rib_autotest',
         'rib6_autotest',
         'ring_autotest',
-        'ring_pmd_autotest',
         'rwlock_test1_autotest',
         'rwlock_rda_autotest',
         'rwlock_rds_wrm_autotest',
@@ -227,7 +218,6 @@  fast_test_names = [
         'timer_autotest',
         'user_delay_us',
         'version_autotest',
-        'bitratestats_autotest',
         'crc_autotest',
         'delay_us_sleep_autotest',
         'distributor_autotest',
@@ -238,10 +228,8 @@  fast_test_names = [
         'ipsec_autotest',
         'kni_autotest',
         'kvargs_autotest',
-        'latencystats_autotest',
         'member_autotest',
         'metrics_autotest',
-        'pdump_autotest',
         'power_cpufreq_autotest',
         'power_autotest',
         'power_kvm_vm_autotest',
@@ -277,7 +265,6 @@  perf_test_names = [
         'rcu_qsbr_perf_autotest',
         'red_perf',
         'distributor_perf_autotest',
-        'ring_pmd_perf_autotest',
         'pmd_perf_autotest',
         'stack_perf_autotest',
         'stack_lf_perf_autotest',
@@ -302,7 +289,6 @@  driver_test_names = [
         'eventdev_selftest_octeontx',
         'eventdev_selftest_sw',
         'link_bonding_autotest',
-        'link_bonding_mode4_autotest',
         'link_bonding_rssconf_autotest',
         'rawdev_autotest',
 ]
@@ -339,6 +325,21 @@  if dpdk_conf.has('RTE_LIBRTE_BOND_PMD')
 endif
 if dpdk_conf.has('RTE_LIBRTE_RING_PMD')
 	test_deps += 'pmd_ring'
+	test_sources += 'test_pmd_ring_perf.c'
+	test_sources += 'test_pmd_ring.c'
+	test_sources += 'test_event_eth_tx_adapter.c'
+	test_sources += 'test_bitratestats.c'
+	test_sources += 'test_latencystats.c'
+	test_sources += 'test_link_bonding_mode4.c'
+	test_sources += 'sample_packet_forward.c'
+	test_sources += 'test_pdump.c'
+	fast_test_names += 'ring_pmd_autotest'
+	perf_test_names += 'ring_pmd_perf_autotest'
+	fast_test_names += 'event_eth_tx_adapter_autotest'
+	fast_test_names += 'bitratestats_autotest'
+	fast_test_names += 'latencystats_autotest'
+	driver_test_names += 'link_bonding_mode4_autotest'
+	fast_test_names += 'pdump_autotest'
 endif
 
 if dpdk_conf.has('RTE_LIBRTE_POWER')
@@ -414,7 +415,14 @@  endif
 num_cores_arg = '-l ' + num_cores
 
 test_args = [num_cores_arg]
+
 foreach arg : fast_test_names
+	if (get_option('default_library') == 'shared' and
+		arg == 'event_eth_tx_adapter_autotest')
+		foreach drv:dpdk_drivers
+			test_args += ['-d', drv.full_path().split('.a')[0] + '.so']
+		endforeach
+	endif
 	if host_machine.system() == 'linux'
 		test(arg, dpdk_test,
 			  env : ['DPDK_TEST=' + arg],
diff --git a/app/test/process.h b/app/test/process.h
index 191d2796a..c3b378033 100644
--- a/app/test/process.h
+++ b/app/test/process.h
@@ -25,10 +25,12 @@ 
 #endif
 
 #ifdef RTE_LIBRTE_PDUMP
+#ifdef RTE_LIBRTE_RING_PMD
 #include <pthread.h>
 extern void *send_pkts(void *empty);
 extern uint16_t flag_for_send_pkts;
 #endif
+#endif
 
 /*
  * launches a second copy of the test process using the given argv parameters,
@@ -44,7 +46,9 @@  process_dup(const char *const argv[], int numargs, const char *env_value)
 	int i, status;
 	char path[32];
 #ifdef RTE_LIBRTE_PDUMP
+#ifdef RTE_LIBRTE_RING_PMD
 	pthread_t thread;
+#endif
 #endif
 
 	pid_t pid = fork();
@@ -121,17 +125,21 @@  process_dup(const char *const argv[], int numargs, const char *env_value)
 	}
 	/* parent process does a wait */
 #ifdef RTE_LIBRTE_PDUMP
+#ifdef RTE_LIBRTE_RING_PMD
 	if ((strcmp(env_value, "run_pdump_server_tests") == 0))
 		pthread_create(&thread, NULL, &send_pkts, NULL);
+#endif
 #endif
 
 	while (wait(&status) != pid)
 		;
 #ifdef RTE_LIBRTE_PDUMP
+#ifdef RTE_LIBRTE_RING_PMD
 	if ((strcmp(env_value, "run_pdump_server_tests") == 0)) {
 		flag_for_send_pkts = 0;
 		pthread_join(thread, NULL);
 	}
+#endif
 #endif
 	return status;
 }
diff --git a/app/test/test.c b/app/test/test.c
index cd7aaf645..d0826ca69 100644
--- a/app/test/test.c
+++ b/app/test/test.c
@@ -53,7 +53,9 @@  do_recursive_call(void)
 	} actions[] =  {
 			{ "run_secondary_instances", test_mp_secondary },
 #ifdef RTE_LIBRTE_PDUMP
+#ifdef RTE_LIBRTE_RING_PMD
 			{ "run_pdump_server_tests", test_pdump },
+#endif
 #endif
 			{ "test_missing_c_flag", no_action },
 			{ "test_master_lcore_flag", no_action },