All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC 17.05] test: move tests to separate folder
@ 2017-02-14 15:13 Ferruh Yigit
  2017-02-14 15:41 ` Bruce Richardson
                   ` (2 more replies)
  0 siblings, 3 replies; 34+ messages in thread
From: Ferruh Yigit @ 2017-02-14 15:13 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: dev, Ferruh Yigit

Tests are part of app folder and compiled with library every time.
Moving tests into a "test" folder which won't be compiled by default.
To compile tests, need to give explicit "make test" command.

"make test" was previously used to run tests, which renamed to
"make test_run" with this patch.

This makes default compilation ~30% faster,
[clang, make -j8, old]: real    1m04.355s
[clang, make -j8, new]: real    0m41.740s

For new case, test needs to built separately, which takes,
[clang, make -j8 test]: real    0m24.293s

The point is tests are not required always and by every one.

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 app/Makefile                                       |   4 ---
 mk/rte.sdkbuild.mk                                 |   4 +--
 mk/rte.sdkroot.mk                                  |   9 +++--
 mk/rte.sdktest.mk                                  |   8 ++---
 test/Makefile                                      |  39 +++++++++++++++++++++
 {app => test}/cmdline_test/Makefile                |   0
 {app => test}/cmdline_test/cmdline_test.c          |   0
 {app => test}/cmdline_test/cmdline_test.h          |   0
 {app => test}/cmdline_test/cmdline_test.py         |   0
 {app => test}/cmdline_test/cmdline_test_data.py    |   0
 {app => test}/cmdline_test/commands.c              |   0
 {app => test}/test-acl/Makefile                    |   0
 {app => test}/test-acl/main.c                      |   0
 {app => test}/test-pipeline/Makefile               |   0
 {app => test}/test-pipeline/config.c               |   0
 {app => test}/test-pipeline/init.c                 |   0
 {app => test}/test-pipeline/main.c                 |   0
 {app => test}/test-pipeline/main.h                 |   0
 {app => test}/test-pipeline/pipeline_acl.c         |   0
 {app => test}/test-pipeline/pipeline_hash.c        |   0
 {app => test}/test-pipeline/pipeline_lpm.c         |   0
 {app => test}/test-pipeline/pipeline_lpm_ipv6.c    |   0
 {app => test}/test-pipeline/pipeline_stub.c        |   0
 {app => test}/test-pipeline/runtime.c              |   0
 {app => test}/test/Makefile                        |   0
 {app => test}/test/autotest.py                     |   0
 {app => test}/test/autotest_data.py                |   0
 {app => test}/test/autotest_runner.py              |   0
 {app => test}/test/autotest_test_funcs.py          |   0
 {app => test}/test/commands.c                      |   0
 {app => test}/test/packet_burst_generator.c        |   0
 {app => test}/test/packet_burst_generator.h        |   0
 {app => test}/test/process.h                       |   0
 {app => test}/test/resource.c                      |   0
 {app => test}/test/resource.h                      |   0
 {app => test}/test/test.c                          |   0
 {app => test}/test/test.h                          |   0
 {app => test}/test/test_acl.c                      |   0
 {app => test}/test/test_acl.h                      |   0
 {app => test}/test/test_alarm.c                    |   0
 {app => test}/test/test_atomic.c                   |   0
 {app => test}/test/test_byteorder.c                |   0
 {app => test}/test/test_cmdline.c                  |   0
 {app => test}/test/test_cmdline.h                  |   0
 {app => test}/test/test_cmdline_cirbuf.c           |   0
 {app => test}/test/test_cmdline_etheraddr.c        |   0
 {app => test}/test/test_cmdline_ipaddr.c           |   0
 {app => test}/test/test_cmdline_lib.c              |   0
 {app => test}/test/test_cmdline_num.c              |   0
 {app => test}/test/test_cmdline_portlist.c         |   0
 {app => test}/test/test_cmdline_string.c           |   0
 {app => test}/test/test_common.c                   |   0
 {app => test}/test/test_cpuflags.c                 |   0
 {app => test}/test/test_cryptodev.c                |   0
 {app => test}/test/test_cryptodev.h                |   0
 .../test/test_cryptodev_aes_test_vectors.h         |   0
 {app => test}/test/test_cryptodev_blockcipher.c    |   0
 {app => test}/test/test_cryptodev_blockcipher.h    |   0
 .../test/test_cryptodev_des_test_vectors.h         |   0
 .../test/test_cryptodev_gcm_test_vectors.h         |   0
 .../test/test_cryptodev_hash_test_vectors.h        |   0
 .../test/test_cryptodev_hmac_test_vectors.h        |   0
 .../test/test_cryptodev_kasumi_hash_test_vectors.h |   0
 .../test/test_cryptodev_kasumi_test_vectors.h      |   0
 {app => test}/test/test_cryptodev_perf.c           |   0
 .../test/test_cryptodev_snow3g_hash_test_vectors.h |   0
 .../test/test_cryptodev_snow3g_test_vectors.h      |   0
 .../test/test_cryptodev_zuc_hash_test_vectors.h    |   0
 .../test/test_cryptodev_zuc_test_vectors.h         |   0
 {app => test}/test/test_cycles.c                   |   0
 {app => test}/test/test_debug.c                    |   0
 {app => test}/test/test_devargs.c                  |   0
 {app => test}/test/test_distributor.c              |   0
 {app => test}/test/test_distributor_perf.c         |   0
 {app => test}/test/test_eal_flags.c                |   0
 {app => test}/test/test_eal_fs.c                   |   0
 {app => test}/test/test_efd.c                      |   0
 {app => test}/test/test_efd_perf.c                 |   0
 {app => test}/test/test_errno.c                    |   0
 {app => test}/test/test_func_reentrancy.c          |   0
 {app => test}/test/test_hash.c                     |   0
 {app => test}/test/test_hash_functions.c           |   0
 {app => test}/test/test_hash_multiwriter.c         |   0
 {app => test}/test/test_hash_perf.c                |   0
 {app => test}/test/test_hash_scaling.c             |   0
 {app => test}/test/test_interrupts.c               |   0
 {app => test}/test/test_kni.c                      |   0
 {app => test}/test/test_kvargs.c                   |   0
 {app => test}/test/test_link_bonding.c             |   0
 {app => test}/test/test_link_bonding_mode4.c       |   0
 {app => test}/test/test_link_bonding_rssconf.c     |   0
 {app => test}/test/test_logs.c                     |   0
 {app => test}/test/test_lpm.c                      |   0
 {app => test}/test/test_lpm6.c                     |   0
 {app => test}/test/test_lpm6_data.h                |   0
 {app => test}/test/test_lpm6_perf.c                |   0
 {app => test}/test/test_lpm_perf.c                 |   0
 {app => test}/test/test_malloc.c                   |   0
 {app => test}/test/test_mbuf.c                     |   0
 {app => test}/test/test_memcpy.c                   |   0
 {app => test}/test/test_memcpy_perf.c              |   0
 {app => test}/test/test_memory.c                   |   0
 {app => test}/test/test_mempool.c                  |   0
 {app => test}/test/test_mempool_perf.c             |   0
 {app => test}/test/test_memzone.c                  |   0
 {app => test}/test/test_meter.c                    |   0
 {app => test}/test/test_mp_secondary.c             |   0
 {app => test}/test/test_pci.c                      |   0
 .../bus/pci/devices/0000:01:00.0/class             |   0
 .../bus/pci/devices/0000:01:00.0/config            | Bin
 .../devices/0000:01:00.0/consistent_dma_mask_bits  |   0
 .../bus/pci/devices/0000:01:00.0/device            |   0
 .../bus/pci/devices/0000:01:00.0/dma_mask_bits     |   0
 .../bus/pci/devices/0000:01:00.0/enable            |   0
 .../bus/pci/devices/0000:01:00.0/irq               |   0
 .../bus/pci/devices/0000:01:00.0/modalias          |   0
 .../bus/pci/devices/0000:01:00.0/msi_bus           |   0
 .../bus/pci/devices/0000:01:00.0/numa_node         |   0
 .../bus/pci/devices/0000:01:00.0/resource          |   0
 .../bus/pci/devices/0000:01:00.0/sriov_numvfs      |   0
 .../bus/pci/devices/0000:01:00.0/sriov_totalvfs    |   0
 .../bus/pci/devices/0000:01:00.0/subsystem_device  |   0
 .../bus/pci/devices/0000:01:00.0/subsystem_vendor  |   0
 .../bus/pci/devices/0000:01:00.0/uevent            |   0
 .../bus/pci/devices/0000:01:00.0/vendor            |   0
 .../bus/pci/devices/0000:01:02.0/class             |   0
 .../bus/pci/devices/0000:01:02.0/device            |   0
 .../bus/pci/devices/0000:01:02.0/resource          |   0
 .../bus/pci/devices/0000:01:02.0/subsystem_device  |   0
 .../bus/pci/devices/0000:01:02.0/subsystem_vendor  |   0
 .../bus/pci/devices/0000:01:02.0/vendor            |   0
 .../bus/pci/devices/0000:02:ab.0/class             |   0
 .../bus/pci/devices/0000:02:ab.0/device            |   0
 .../bus/pci/devices/0000:02:ab.0/resource          |   0
 .../bus/pci/devices/0000:02:ab.0/subsystem_device  |   0
 .../bus/pci/devices/0000:02:ab.0/subsystem_vendor  |   0
 .../bus/pci/devices/0000:02:ab.0/vendor            |   0
 {app => test}/test/test_per_lcore.c                |   0
 {app => test}/test/test_pmd_perf.c                 |   0
 {app => test}/test/test_pmd_ring.c                 |   0
 {app => test}/test/test_pmd_ring_perf.c            |   0
 {app => test}/test/test_power.c                    |   0
 {app => test}/test/test_power_acpi_cpufreq.c       |   0
 {app => test}/test/test_power_kvm_vm.c             |   0
 {app => test}/test/test_prefetch.c                 |   0
 {app => test}/test/test_red.c                      |   0
 {app => test}/test/test_reorder.c                  |   0
 {app => test}/test/test_resource.c                 |   0
 {app => test}/test/test_ring.c                     |   0
 {app => test}/test/test_ring_perf.c                |   0
 {app => test}/test/test_rwlock.c                   |   0
 {app => test}/test/test_sched.c                    |   0
 {app => test}/test/test_spinlock.c                 |   0
 {app => test}/test/test_string_fns.c               |   0
 {app => test}/test/test_table.c                    |   0
 {app => test}/test/test_table.h                    |   0
 {app => test}/test/test_table_acl.c                |   0
 {app => test}/test/test_table_acl.h                |   0
 {app => test}/test/test_table_combined.c           |   0
 {app => test}/test/test_table_combined.h           |   0
 {app => test}/test/test_table_pipeline.c           |   0
 {app => test}/test/test_table_pipeline.h           |   0
 {app => test}/test/test_table_ports.c              |   0
 {app => test}/test/test_table_ports.h              |   0
 {app => test}/test/test_table_tables.c             |   0
 {app => test}/test/test_table_tables.h             |   0
 {app => test}/test/test_tailq.c                    |   0
 {app => test}/test/test_thash.c                    |   0
 {app => test}/test/test_timer.c                    |   0
 {app => test}/test/test_timer_perf.c               |   0
 {app => test}/test/test_timer_racecond.c           |   0
 {app => test}/test/test_version.c                  |   0
 {app => test}/test/test_xmmt_ops.h                 |   0
 {app => test}/test/virtual_pmd.c                   |   0
 {app => test}/test/virtual_pmd.h                   |   0
 175 files changed, 52 insertions(+), 12 deletions(-)
 create mode 100644 test/Makefile
 rename {app => test}/cmdline_test/Makefile (100%)
 rename {app => test}/cmdline_test/cmdline_test.c (100%)
 rename {app => test}/cmdline_test/cmdline_test.h (100%)
 rename {app => test}/cmdline_test/cmdline_test.py (100%)
 rename {app => test}/cmdline_test/cmdline_test_data.py (100%)
 rename {app => test}/cmdline_test/commands.c (100%)
 rename {app => test}/test-acl/Makefile (100%)
 rename {app => test}/test-acl/main.c (100%)
 rename {app => test}/test-pipeline/Makefile (100%)
 rename {app => test}/test-pipeline/config.c (100%)
 rename {app => test}/test-pipeline/init.c (100%)
 rename {app => test}/test-pipeline/main.c (100%)
 rename {app => test}/test-pipeline/main.h (100%)
 rename {app => test}/test-pipeline/pipeline_acl.c (100%)
 rename {app => test}/test-pipeline/pipeline_hash.c (100%)
 rename {app => test}/test-pipeline/pipeline_lpm.c (100%)
 rename {app => test}/test-pipeline/pipeline_lpm_ipv6.c (100%)
 rename {app => test}/test-pipeline/pipeline_stub.c (100%)
 rename {app => test}/test-pipeline/runtime.c (100%)
 rename {app => test}/test/Makefile (100%)
 rename {app => test}/test/autotest.py (100%)
 rename {app => test}/test/autotest_data.py (100%)
 rename {app => test}/test/autotest_runner.py (100%)
 rename {app => test}/test/autotest_test_funcs.py (100%)
 rename {app => test}/test/commands.c (100%)
 rename {app => test}/test/packet_burst_generator.c (100%)
 rename {app => test}/test/packet_burst_generator.h (100%)
 rename {app => test}/test/process.h (100%)
 rename {app => test}/test/resource.c (100%)
 rename {app => test}/test/resource.h (100%)
 rename {app => test}/test/test.c (100%)
 rename {app => test}/test/test.h (100%)
 rename {app => test}/test/test_acl.c (100%)
 rename {app => test}/test/test_acl.h (100%)
 rename {app => test}/test/test_alarm.c (100%)
 rename {app => test}/test/test_atomic.c (100%)
 rename {app => test}/test/test_byteorder.c (100%)
 rename {app => test}/test/test_cmdline.c (100%)
 rename {app => test}/test/test_cmdline.h (100%)
 rename {app => test}/test/test_cmdline_cirbuf.c (100%)
 rename {app => test}/test/test_cmdline_etheraddr.c (100%)
 rename {app => test}/test/test_cmdline_ipaddr.c (100%)
 rename {app => test}/test/test_cmdline_lib.c (100%)
 rename {app => test}/test/test_cmdline_num.c (100%)
 rename {app => test}/test/test_cmdline_portlist.c (100%)
 rename {app => test}/test/test_cmdline_string.c (100%)
 rename {app => test}/test/test_common.c (100%)
 rename {app => test}/test/test_cpuflags.c (100%)
 rename {app => test}/test/test_cryptodev.c (100%)
 rename {app => test}/test/test_cryptodev.h (100%)
 rename {app => test}/test/test_cryptodev_aes_test_vectors.h (100%)
 rename {app => test}/test/test_cryptodev_blockcipher.c (100%)
 rename {app => test}/test/test_cryptodev_blockcipher.h (100%)
 rename {app => test}/test/test_cryptodev_des_test_vectors.h (100%)
 rename {app => test}/test/test_cryptodev_gcm_test_vectors.h (100%)
 rename {app => test}/test/test_cryptodev_hash_test_vectors.h (100%)
 rename {app => test}/test/test_cryptodev_hmac_test_vectors.h (100%)
 rename {app => test}/test/test_cryptodev_kasumi_hash_test_vectors.h (100%)
 rename {app => test}/test/test_cryptodev_kasumi_test_vectors.h (100%)
 rename {app => test}/test/test_cryptodev_perf.c (100%)
 rename {app => test}/test/test_cryptodev_snow3g_hash_test_vectors.h (100%)
 rename {app => test}/test/test_cryptodev_snow3g_test_vectors.h (100%)
 rename {app => test}/test/test_cryptodev_zuc_hash_test_vectors.h (100%)
 rename {app => test}/test/test_cryptodev_zuc_test_vectors.h (100%)
 rename {app => test}/test/test_cycles.c (100%)
 rename {app => test}/test/test_debug.c (100%)
 rename {app => test}/test/test_devargs.c (100%)
 rename {app => test}/test/test_distributor.c (100%)
 rename {app => test}/test/test_distributor_perf.c (100%)
 rename {app => test}/test/test_eal_flags.c (100%)
 rename {app => test}/test/test_eal_fs.c (100%)
 rename {app => test}/test/test_efd.c (100%)
 rename {app => test}/test/test_efd_perf.c (100%)
 rename {app => test}/test/test_errno.c (100%)
 rename {app => test}/test/test_func_reentrancy.c (100%)
 rename {app => test}/test/test_hash.c (100%)
 rename {app => test}/test/test_hash_functions.c (100%)
 rename {app => test}/test/test_hash_multiwriter.c (100%)
 rename {app => test}/test/test_hash_perf.c (100%)
 rename {app => test}/test/test_hash_scaling.c (100%)
 rename {app => test}/test/test_interrupts.c (100%)
 rename {app => test}/test/test_kni.c (100%)
 rename {app => test}/test/test_kvargs.c (100%)
 rename {app => test}/test/test_link_bonding.c (100%)
 rename {app => test}/test/test_link_bonding_mode4.c (100%)
 rename {app => test}/test/test_link_bonding_rssconf.c (100%)
 rename {app => test}/test/test_logs.c (100%)
 rename {app => test}/test/test_lpm.c (100%)
 rename {app => test}/test/test_lpm6.c (100%)
 rename {app => test}/test/test_lpm6_data.h (100%)
 rename {app => test}/test/test_lpm6_perf.c (100%)
 rename {app => test}/test/test_lpm_perf.c (100%)
 rename {app => test}/test/test_malloc.c (100%)
 rename {app => test}/test/test_mbuf.c (100%)
 rename {app => test}/test/test_memcpy.c (100%)
 rename {app => test}/test/test_memcpy_perf.c (100%)
 rename {app => test}/test/test_memory.c (100%)
 rename {app => test}/test/test_mempool.c (100%)
 rename {app => test}/test/test_mempool_perf.c (100%)
 rename {app => test}/test/test_memzone.c (100%)
 rename {app => test}/test/test_meter.c (100%)
 rename {app => test}/test/test_mp_secondary.c (100%)
 rename {app => test}/test/test_pci.c (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/class (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/config (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/consistent_dma_mask_bits (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/device (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/dma_mask_bits (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/enable (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/irq (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/modalias (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/msi_bus (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/numa_node (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/resource (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/sriov_numvfs (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/sriov_totalvfs (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/subsystem_device (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/subsystem_vendor (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/uevent (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/vendor (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/class (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/device (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/resource (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/subsystem_device (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/subsystem_vendor (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/vendor (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/class (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/device (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/resource (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/subsystem_device (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/subsystem_vendor (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/vendor (100%)
 rename {app => test}/test/test_per_lcore.c (100%)
 rename {app => test}/test/test_pmd_perf.c (100%)
 rename {app => test}/test/test_pmd_ring.c (100%)
 rename {app => test}/test/test_pmd_ring_perf.c (100%)
 rename {app => test}/test/test_power.c (100%)
 rename {app => test}/test/test_power_acpi_cpufreq.c (100%)
 rename {app => test}/test/test_power_kvm_vm.c (100%)
 rename {app => test}/test/test_prefetch.c (100%)
 rename {app => test}/test/test_red.c (100%)
 rename {app => test}/test/test_reorder.c (100%)
 rename {app => test}/test/test_resource.c (100%)
 rename {app => test}/test/test_ring.c (100%)
 rename {app => test}/test/test_ring_perf.c (100%)
 rename {app => test}/test/test_rwlock.c (100%)
 rename {app => test}/test/test_sched.c (100%)
 rename {app => test}/test/test_spinlock.c (100%)
 rename {app => test}/test/test_string_fns.c (100%)
 rename {app => test}/test/test_table.c (100%)
 rename {app => test}/test/test_table.h (100%)
 rename {app => test}/test/test_table_acl.c (100%)
 rename {app => test}/test/test_table_acl.h (100%)
 rename {app => test}/test/test_table_combined.c (100%)
 rename {app => test}/test/test_table_combined.h (100%)
 rename {app => test}/test/test_table_pipeline.c (100%)
 rename {app => test}/test/test_table_pipeline.h (100%)
 rename {app => test}/test/test_table_ports.c (100%)
 rename {app => test}/test/test_table_ports.h (100%)
 rename {app => test}/test/test_table_tables.c (100%)
 rename {app => test}/test/test_table_tables.h (100%)
 rename {app => test}/test/test_tailq.c (100%)
 rename {app => test}/test/test_thash.c (100%)
 rename {app => test}/test/test_timer.c (100%)
 rename {app => test}/test/test_timer_perf.c (100%)
 rename {app => test}/test/test_timer_racecond.c (100%)
 rename {app => test}/test/test_version.c (100%)
 rename {app => test}/test/test_xmmt_ops.h (100%)
 rename {app => test}/test/virtual_pmd.c (100%)
 rename {app => test}/test/virtual_pmd.h (100%)

diff --git a/app/Makefile b/app/Makefile
index 1a974a5..4b3a448 100644
--- a/app/Makefile
+++ b/app/Makefile
@@ -31,12 +31,8 @@
 
 include $(RTE_SDK)/mk/rte.vars.mk
 
-DIRS-$(CONFIG_RTE_APP_TEST) += test
-DIRS-$(CONFIG_RTE_LIBRTE_ACL) += test-acl
-DIRS-$(CONFIG_RTE_LIBRTE_PIPELINE) += test-pipeline
 DIRS-$(CONFIG_RTE_TEST_PMD) += test-pmd
 DIRS-$(CONFIG_RTE_APP_CRYPTO_PERF) += test-crypto-perf
-DIRS-$(CONFIG_RTE_LIBRTE_CMDLINE) += cmdline_test
 DIRS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += proc_info
 DIRS-$(CONFIG_RTE_LIBRTE_PDUMP) += pdump
 
diff --git a/mk/rte.sdkbuild.mk b/mk/rte.sdkbuild.mk
index db6b983..64e5891 100644
--- a/mk/rte.sdkbuild.mk
+++ b/mk/rte.sdkbuild.mk
@@ -73,8 +73,8 @@ clean: $(CLEANDIRS)
 	@echo Clean complete
 
 .SECONDEXPANSION:
-.PHONY: $(ROOTDIRS-y)
-$(ROOTDIRS-y):
+.PHONY: $(ROOTDIRS-y) test
+$(ROOTDIRS-y) test:
 	@[ -d $(BUILDDIR)/$@ ] || mkdir -p $(BUILDDIR)/$@
 	@echo "== Build $@"
 	$(Q)$(MAKE) S=$@ -f $(RTE_SRCDIR)/$@/Makefile -C $(BUILDDIR)/$@ all
diff --git a/mk/rte.sdkroot.mk b/mk/rte.sdkroot.mk
index 04ad523..4816362 100644
--- a/mk/rte.sdkroot.mk
+++ b/mk/rte.sdkroot.mk
@@ -92,8 +92,8 @@ default: all
 config showconfigs showversion showversionum:
 	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkconfig.mk $@
 
-.PHONY: test fast_test ring_test mempool_test perf_test coverage
-test fast_test ring_test mempool_test perf_test coverage:
+.PHONY: test_run fast_test ring_test mempool_test perf_test coverage
+test_run fast_test ring_test mempool_test perf_test coverage:
 	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdktest.mk $@
 
 .PHONY: install
@@ -121,6 +121,11 @@ gcov gcovclean:
 examples examples_clean:
 	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkexamples.mk $@
 
+.PHONY: test
+test:
+	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkconfig.mk checkconfig
+	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkbuild.mk $@
+
 # all other build targets
 %:
 	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkconfig.mk checkconfig
diff --git a/mk/rte.sdktest.mk b/mk/rte.sdktest.mk
index ddbbbf6..2e069ca 100644
--- a/mk/rte.sdktest.mk
+++ b/mk/rte.sdktest.mk
@@ -44,20 +44,20 @@ AUTOTEST_DIR := $(RTE_OUTPUT)/autotest-$(DATE)
 DIR := $(shell basename $(RTE_OUTPUT))
 
 #
-# test: launch auto-tests, very simple for now.
+# test_run: launch auto-tests, very simple for now.
 #
-.PHONY: test fast_test perf_test coverage
+.PHONY: test_run fast_test perf_test coverage
 
 PERFLIST=ring_perf,mempool_perf,memcpy_perf,hash_perf,timer_perf
 coverage: BLACKLIST=-$(PERFLIST)
 fast_test: BLACKLIST=-$(PERFLIST)
 perf_test: WHITELIST=$(PERFLIST)
 
-test fast_test perf_test:
+test_run fast_test perf_test:
 	@mkdir -p $(AUTOTEST_DIR) ; \
 	cd $(AUTOTEST_DIR) ; \
 	if [ -f $(RTE_OUTPUT)/app/test ]; then \
-		python $(RTE_SDK)/app/test/autotest.py \
+		python $(RTE_SDK)/test/test/autotest.py \
 			$(RTE_OUTPUT)/app/test \
 			$(RTE_TARGET) \
 			$(BLACKLIST) $(WHITELIST); \
diff --git a/test/Makefile b/test/Makefile
new file mode 100644
index 0000000..e996fd8
--- /dev/null
+++ b/test/Makefile
@@ -0,0 +1,39 @@
+#   BSD LICENSE
+#
+#   Copyright(c) 2017 Intel Corporation. All rights reserved.
+#   All rights reserved.
+#
+#   Redistribution and use in source and binary forms, with or without
+#   modification, are permitted provided that the following conditions
+#   are met:
+#
+#     * Redistributions of source code must retain the above copyright
+#       notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above copyright
+#       notice, this list of conditions and the following disclaimer in
+#       the documentation and/or other materials provided with the
+#       distribution.
+#     * Neither the name of Intel Corporation nor the names of its
+#       contributors may be used to endorse or promote products derived
+#       from this software without specific prior written permission.
+#
+#   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+#   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+#   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+#   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+#   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+#   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+#   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+#   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+#   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+include $(RTE_SDK)/mk/rte.vars.mk
+
+DIRS-$(CONFIG_RTE_APP_TEST) += test
+DIRS-$(CONFIG_RTE_LIBRTE_ACL) += test-acl
+DIRS-$(CONFIG_RTE_LIBRTE_PIPELINE) += test-pipeline
+DIRS-$(CONFIG_RTE_LIBRTE_CMDLINE) += cmdline_test
+
+include $(RTE_SDK)/mk/rte.subdir.mk
diff --git a/app/cmdline_test/Makefile b/test/cmdline_test/Makefile
similarity index 100%
rename from app/cmdline_test/Makefile
rename to test/cmdline_test/Makefile
diff --git a/app/cmdline_test/cmdline_test.c b/test/cmdline_test/cmdline_test.c
similarity index 100%
rename from app/cmdline_test/cmdline_test.c
rename to test/cmdline_test/cmdline_test.c
diff --git a/app/cmdline_test/cmdline_test.h b/test/cmdline_test/cmdline_test.h
similarity index 100%
rename from app/cmdline_test/cmdline_test.h
rename to test/cmdline_test/cmdline_test.h
diff --git a/app/cmdline_test/cmdline_test.py b/test/cmdline_test/cmdline_test.py
similarity index 100%
rename from app/cmdline_test/cmdline_test.py
rename to test/cmdline_test/cmdline_test.py
diff --git a/app/cmdline_test/cmdline_test_data.py b/test/cmdline_test/cmdline_test_data.py
similarity index 100%
rename from app/cmdline_test/cmdline_test_data.py
rename to test/cmdline_test/cmdline_test_data.py
diff --git a/app/cmdline_test/commands.c b/test/cmdline_test/commands.c
similarity index 100%
rename from app/cmdline_test/commands.c
rename to test/cmdline_test/commands.c
diff --git a/app/test-acl/Makefile b/test/test-acl/Makefile
similarity index 100%
rename from app/test-acl/Makefile
rename to test/test-acl/Makefile
diff --git a/app/test-acl/main.c b/test/test-acl/main.c
similarity index 100%
rename from app/test-acl/main.c
rename to test/test-acl/main.c
diff --git a/app/test-pipeline/Makefile b/test/test-pipeline/Makefile
similarity index 100%
rename from app/test-pipeline/Makefile
rename to test/test-pipeline/Makefile
diff --git a/app/test-pipeline/config.c b/test/test-pipeline/config.c
similarity index 100%
rename from app/test-pipeline/config.c
rename to test/test-pipeline/config.c
diff --git a/app/test-pipeline/init.c b/test/test-pipeline/init.c
similarity index 100%
rename from app/test-pipeline/init.c
rename to test/test-pipeline/init.c
diff --git a/app/test-pipeline/main.c b/test/test-pipeline/main.c
similarity index 100%
rename from app/test-pipeline/main.c
rename to test/test-pipeline/main.c
diff --git a/app/test-pipeline/main.h b/test/test-pipeline/main.h
similarity index 100%
rename from app/test-pipeline/main.h
rename to test/test-pipeline/main.h
diff --git a/app/test-pipeline/pipeline_acl.c b/test/test-pipeline/pipeline_acl.c
similarity index 100%
rename from app/test-pipeline/pipeline_acl.c
rename to test/test-pipeline/pipeline_acl.c
diff --git a/app/test-pipeline/pipeline_hash.c b/test/test-pipeline/pipeline_hash.c
similarity index 100%
rename from app/test-pipeline/pipeline_hash.c
rename to test/test-pipeline/pipeline_hash.c
diff --git a/app/test-pipeline/pipeline_lpm.c b/test/test-pipeline/pipeline_lpm.c
similarity index 100%
rename from app/test-pipeline/pipeline_lpm.c
rename to test/test-pipeline/pipeline_lpm.c
diff --git a/app/test-pipeline/pipeline_lpm_ipv6.c b/test/test-pipeline/pipeline_lpm_ipv6.c
similarity index 100%
rename from app/test-pipeline/pipeline_lpm_ipv6.c
rename to test/test-pipeline/pipeline_lpm_ipv6.c
diff --git a/app/test-pipeline/pipeline_stub.c b/test/test-pipeline/pipeline_stub.c
similarity index 100%
rename from app/test-pipeline/pipeline_stub.c
rename to test/test-pipeline/pipeline_stub.c
diff --git a/app/test-pipeline/runtime.c b/test/test-pipeline/runtime.c
similarity index 100%
rename from app/test-pipeline/runtime.c
rename to test/test-pipeline/runtime.c
diff --git a/app/test/Makefile b/test/test/Makefile
similarity index 100%
rename from app/test/Makefile
rename to test/test/Makefile
diff --git a/app/test/autotest.py b/test/test/autotest.py
similarity index 100%
rename from app/test/autotest.py
rename to test/test/autotest.py
diff --git a/app/test/autotest_data.py b/test/test/autotest_data.py
similarity index 100%
rename from app/test/autotest_data.py
rename to test/test/autotest_data.py
diff --git a/app/test/autotest_runner.py b/test/test/autotest_runner.py
similarity index 100%
rename from app/test/autotest_runner.py
rename to test/test/autotest_runner.py
diff --git a/app/test/autotest_test_funcs.py b/test/test/autotest_test_funcs.py
similarity index 100%
rename from app/test/autotest_test_funcs.py
rename to test/test/autotest_test_funcs.py
diff --git a/app/test/commands.c b/test/test/commands.c
similarity index 100%
rename from app/test/commands.c
rename to test/test/commands.c
diff --git a/app/test/packet_burst_generator.c b/test/test/packet_burst_generator.c
similarity index 100%
rename from app/test/packet_burst_generator.c
rename to test/test/packet_burst_generator.c
diff --git a/app/test/packet_burst_generator.h b/test/test/packet_burst_generator.h
similarity index 100%
rename from app/test/packet_burst_generator.h
rename to test/test/packet_burst_generator.h
diff --git a/app/test/process.h b/test/test/process.h
similarity index 100%
rename from app/test/process.h
rename to test/test/process.h
diff --git a/app/test/resource.c b/test/test/resource.c
similarity index 100%
rename from app/test/resource.c
rename to test/test/resource.c
diff --git a/app/test/resource.h b/test/test/resource.h
similarity index 100%
rename from app/test/resource.h
rename to test/test/resource.h
diff --git a/app/test/test.c b/test/test/test.c
similarity index 100%
rename from app/test/test.c
rename to test/test/test.c
diff --git a/app/test/test.h b/test/test/test.h
similarity index 100%
rename from app/test/test.h
rename to test/test/test.h
diff --git a/app/test/test_acl.c b/test/test/test_acl.c
similarity index 100%
rename from app/test/test_acl.c
rename to test/test/test_acl.c
diff --git a/app/test/test_acl.h b/test/test/test_acl.h
similarity index 100%
rename from app/test/test_acl.h
rename to test/test/test_acl.h
diff --git a/app/test/test_alarm.c b/test/test/test_alarm.c
similarity index 100%
rename from app/test/test_alarm.c
rename to test/test/test_alarm.c
diff --git a/app/test/test_atomic.c b/test/test/test_atomic.c
similarity index 100%
rename from app/test/test_atomic.c
rename to test/test/test_atomic.c
diff --git a/app/test/test_byteorder.c b/test/test/test_byteorder.c
similarity index 100%
rename from app/test/test_byteorder.c
rename to test/test/test_byteorder.c
diff --git a/app/test/test_cmdline.c b/test/test/test_cmdline.c
similarity index 100%
rename from app/test/test_cmdline.c
rename to test/test/test_cmdline.c
diff --git a/app/test/test_cmdline.h b/test/test/test_cmdline.h
similarity index 100%
rename from app/test/test_cmdline.h
rename to test/test/test_cmdline.h
diff --git a/app/test/test_cmdline_cirbuf.c b/test/test/test_cmdline_cirbuf.c
similarity index 100%
rename from app/test/test_cmdline_cirbuf.c
rename to test/test/test_cmdline_cirbuf.c
diff --git a/app/test/test_cmdline_etheraddr.c b/test/test/test_cmdline_etheraddr.c
similarity index 100%
rename from app/test/test_cmdline_etheraddr.c
rename to test/test/test_cmdline_etheraddr.c
diff --git a/app/test/test_cmdline_ipaddr.c b/test/test/test_cmdline_ipaddr.c
similarity index 100%
rename from app/test/test_cmdline_ipaddr.c
rename to test/test/test_cmdline_ipaddr.c
diff --git a/app/test/test_cmdline_lib.c b/test/test/test_cmdline_lib.c
similarity index 100%
rename from app/test/test_cmdline_lib.c
rename to test/test/test_cmdline_lib.c
diff --git a/app/test/test_cmdline_num.c b/test/test/test_cmdline_num.c
similarity index 100%
rename from app/test/test_cmdline_num.c
rename to test/test/test_cmdline_num.c
diff --git a/app/test/test_cmdline_portlist.c b/test/test/test_cmdline_portlist.c
similarity index 100%
rename from app/test/test_cmdline_portlist.c
rename to test/test/test_cmdline_portlist.c
diff --git a/app/test/test_cmdline_string.c b/test/test/test_cmdline_string.c
similarity index 100%
rename from app/test/test_cmdline_string.c
rename to test/test/test_cmdline_string.c
diff --git a/app/test/test_common.c b/test/test/test_common.c
similarity index 100%
rename from app/test/test_common.c
rename to test/test/test_common.c
diff --git a/app/test/test_cpuflags.c b/test/test/test_cpuflags.c
similarity index 100%
rename from app/test/test_cpuflags.c
rename to test/test/test_cpuflags.c
diff --git a/app/test/test_cryptodev.c b/test/test/test_cryptodev.c
similarity index 100%
rename from app/test/test_cryptodev.c
rename to test/test/test_cryptodev.c
diff --git a/app/test/test_cryptodev.h b/test/test/test_cryptodev.h
similarity index 100%
rename from app/test/test_cryptodev.h
rename to test/test/test_cryptodev.h
diff --git a/app/test/test_cryptodev_aes_test_vectors.h b/test/test/test_cryptodev_aes_test_vectors.h
similarity index 100%
rename from app/test/test_cryptodev_aes_test_vectors.h
rename to test/test/test_cryptodev_aes_test_vectors.h
diff --git a/app/test/test_cryptodev_blockcipher.c b/test/test/test_cryptodev_blockcipher.c
similarity index 100%
rename from app/test/test_cryptodev_blockcipher.c
rename to test/test/test_cryptodev_blockcipher.c
diff --git a/app/test/test_cryptodev_blockcipher.h b/test/test/test_cryptodev_blockcipher.h
similarity index 100%
rename from app/test/test_cryptodev_blockcipher.h
rename to test/test/test_cryptodev_blockcipher.h
diff --git a/app/test/test_cryptodev_des_test_vectors.h b/test/test/test_cryptodev_des_test_vectors.h
similarity index 100%
rename from app/test/test_cryptodev_des_test_vectors.h
rename to test/test/test_cryptodev_des_test_vectors.h
diff --git a/app/test/test_cryptodev_gcm_test_vectors.h b/test/test/test_cryptodev_gcm_test_vectors.h
similarity index 100%
rename from app/test/test_cryptodev_gcm_test_vectors.h
rename to test/test/test_cryptodev_gcm_test_vectors.h
diff --git a/app/test/test_cryptodev_hash_test_vectors.h b/test/test/test_cryptodev_hash_test_vectors.h
similarity index 100%
rename from app/test/test_cryptodev_hash_test_vectors.h
rename to test/test/test_cryptodev_hash_test_vectors.h
diff --git a/app/test/test_cryptodev_hmac_test_vectors.h b/test/test/test_cryptodev_hmac_test_vectors.h
similarity index 100%
rename from app/test/test_cryptodev_hmac_test_vectors.h
rename to test/test/test_cryptodev_hmac_test_vectors.h
diff --git a/app/test/test_cryptodev_kasumi_hash_test_vectors.h b/test/test/test_cryptodev_kasumi_hash_test_vectors.h
similarity index 100%
rename from app/test/test_cryptodev_kasumi_hash_test_vectors.h
rename to test/test/test_cryptodev_kasumi_hash_test_vectors.h
diff --git a/app/test/test_cryptodev_kasumi_test_vectors.h b/test/test/test_cryptodev_kasumi_test_vectors.h
similarity index 100%
rename from app/test/test_cryptodev_kasumi_test_vectors.h
rename to test/test/test_cryptodev_kasumi_test_vectors.h
diff --git a/app/test/test_cryptodev_perf.c b/test/test/test_cryptodev_perf.c
similarity index 100%
rename from app/test/test_cryptodev_perf.c
rename to test/test/test_cryptodev_perf.c
diff --git a/app/test/test_cryptodev_snow3g_hash_test_vectors.h b/test/test/test_cryptodev_snow3g_hash_test_vectors.h
similarity index 100%
rename from app/test/test_cryptodev_snow3g_hash_test_vectors.h
rename to test/test/test_cryptodev_snow3g_hash_test_vectors.h
diff --git a/app/test/test_cryptodev_snow3g_test_vectors.h b/test/test/test_cryptodev_snow3g_test_vectors.h
similarity index 100%
rename from app/test/test_cryptodev_snow3g_test_vectors.h
rename to test/test/test_cryptodev_snow3g_test_vectors.h
diff --git a/app/test/test_cryptodev_zuc_hash_test_vectors.h b/test/test/test_cryptodev_zuc_hash_test_vectors.h
similarity index 100%
rename from app/test/test_cryptodev_zuc_hash_test_vectors.h
rename to test/test/test_cryptodev_zuc_hash_test_vectors.h
diff --git a/app/test/test_cryptodev_zuc_test_vectors.h b/test/test/test_cryptodev_zuc_test_vectors.h
similarity index 100%
rename from app/test/test_cryptodev_zuc_test_vectors.h
rename to test/test/test_cryptodev_zuc_test_vectors.h
diff --git a/app/test/test_cycles.c b/test/test/test_cycles.c
similarity index 100%
rename from app/test/test_cycles.c
rename to test/test/test_cycles.c
diff --git a/app/test/test_debug.c b/test/test/test_debug.c
similarity index 100%
rename from app/test/test_debug.c
rename to test/test/test_debug.c
diff --git a/app/test/test_devargs.c b/test/test/test_devargs.c
similarity index 100%
rename from app/test/test_devargs.c
rename to test/test/test_devargs.c
diff --git a/app/test/test_distributor.c b/test/test/test_distributor.c
similarity index 100%
rename from app/test/test_distributor.c
rename to test/test/test_distributor.c
diff --git a/app/test/test_distributor_perf.c b/test/test/test_distributor_perf.c
similarity index 100%
rename from app/test/test_distributor_perf.c
rename to test/test/test_distributor_perf.c
diff --git a/app/test/test_eal_flags.c b/test/test/test_eal_flags.c
similarity index 100%
rename from app/test/test_eal_flags.c
rename to test/test/test_eal_flags.c
diff --git a/app/test/test_eal_fs.c b/test/test/test_eal_fs.c
similarity index 100%
rename from app/test/test_eal_fs.c
rename to test/test/test_eal_fs.c
diff --git a/app/test/test_efd.c b/test/test/test_efd.c
similarity index 100%
rename from app/test/test_efd.c
rename to test/test/test_efd.c
diff --git a/app/test/test_efd_perf.c b/test/test/test_efd_perf.c
similarity index 100%
rename from app/test/test_efd_perf.c
rename to test/test/test_efd_perf.c
diff --git a/app/test/test_errno.c b/test/test/test_errno.c
similarity index 100%
rename from app/test/test_errno.c
rename to test/test/test_errno.c
diff --git a/app/test/test_func_reentrancy.c b/test/test/test_func_reentrancy.c
similarity index 100%
rename from app/test/test_func_reentrancy.c
rename to test/test/test_func_reentrancy.c
diff --git a/app/test/test_hash.c b/test/test/test_hash.c
similarity index 100%
rename from app/test/test_hash.c
rename to test/test/test_hash.c
diff --git a/app/test/test_hash_functions.c b/test/test/test_hash_functions.c
similarity index 100%
rename from app/test/test_hash_functions.c
rename to test/test/test_hash_functions.c
diff --git a/app/test/test_hash_multiwriter.c b/test/test/test_hash_multiwriter.c
similarity index 100%
rename from app/test/test_hash_multiwriter.c
rename to test/test/test_hash_multiwriter.c
diff --git a/app/test/test_hash_perf.c b/test/test/test_hash_perf.c
similarity index 100%
rename from app/test/test_hash_perf.c
rename to test/test/test_hash_perf.c
diff --git a/app/test/test_hash_scaling.c b/test/test/test_hash_scaling.c
similarity index 100%
rename from app/test/test_hash_scaling.c
rename to test/test/test_hash_scaling.c
diff --git a/app/test/test_interrupts.c b/test/test/test_interrupts.c
similarity index 100%
rename from app/test/test_interrupts.c
rename to test/test/test_interrupts.c
diff --git a/app/test/test_kni.c b/test/test/test_kni.c
similarity index 100%
rename from app/test/test_kni.c
rename to test/test/test_kni.c
diff --git a/app/test/test_kvargs.c b/test/test/test_kvargs.c
similarity index 100%
rename from app/test/test_kvargs.c
rename to test/test/test_kvargs.c
diff --git a/app/test/test_link_bonding.c b/test/test/test_link_bonding.c
similarity index 100%
rename from app/test/test_link_bonding.c
rename to test/test/test_link_bonding.c
diff --git a/app/test/test_link_bonding_mode4.c b/test/test/test_link_bonding_mode4.c
similarity index 100%
rename from app/test/test_link_bonding_mode4.c
rename to test/test/test_link_bonding_mode4.c
diff --git a/app/test/test_link_bonding_rssconf.c b/test/test/test_link_bonding_rssconf.c
similarity index 100%
rename from app/test/test_link_bonding_rssconf.c
rename to test/test/test_link_bonding_rssconf.c
diff --git a/app/test/test_logs.c b/test/test/test_logs.c
similarity index 100%
rename from app/test/test_logs.c
rename to test/test/test_logs.c
diff --git a/app/test/test_lpm.c b/test/test/test_lpm.c
similarity index 100%
rename from app/test/test_lpm.c
rename to test/test/test_lpm.c
diff --git a/app/test/test_lpm6.c b/test/test/test_lpm6.c
similarity index 100%
rename from app/test/test_lpm6.c
rename to test/test/test_lpm6.c
diff --git a/app/test/test_lpm6_data.h b/test/test/test_lpm6_data.h
similarity index 100%
rename from app/test/test_lpm6_data.h
rename to test/test/test_lpm6_data.h
diff --git a/app/test/test_lpm6_perf.c b/test/test/test_lpm6_perf.c
similarity index 100%
rename from app/test/test_lpm6_perf.c
rename to test/test/test_lpm6_perf.c
diff --git a/app/test/test_lpm_perf.c b/test/test/test_lpm_perf.c
similarity index 100%
rename from app/test/test_lpm_perf.c
rename to test/test/test_lpm_perf.c
diff --git a/app/test/test_malloc.c b/test/test/test_malloc.c
similarity index 100%
rename from app/test/test_malloc.c
rename to test/test/test_malloc.c
diff --git a/app/test/test_mbuf.c b/test/test/test_mbuf.c
similarity index 100%
rename from app/test/test_mbuf.c
rename to test/test/test_mbuf.c
diff --git a/app/test/test_memcpy.c b/test/test/test_memcpy.c
similarity index 100%
rename from app/test/test_memcpy.c
rename to test/test/test_memcpy.c
diff --git a/app/test/test_memcpy_perf.c b/test/test/test_memcpy_perf.c
similarity index 100%
rename from app/test/test_memcpy_perf.c
rename to test/test/test_memcpy_perf.c
diff --git a/app/test/test_memory.c b/test/test/test_memory.c
similarity index 100%
rename from app/test/test_memory.c
rename to test/test/test_memory.c
diff --git a/app/test/test_mempool.c b/test/test/test_mempool.c
similarity index 100%
rename from app/test/test_mempool.c
rename to test/test/test_mempool.c
diff --git a/app/test/test_mempool_perf.c b/test/test/test_mempool_perf.c
similarity index 100%
rename from app/test/test_mempool_perf.c
rename to test/test/test_mempool_perf.c
diff --git a/app/test/test_memzone.c b/test/test/test_memzone.c
similarity index 100%
rename from app/test/test_memzone.c
rename to test/test/test_memzone.c
diff --git a/app/test/test_meter.c b/test/test/test_meter.c
similarity index 100%
rename from app/test/test_meter.c
rename to test/test/test_meter.c
diff --git a/app/test/test_mp_secondary.c b/test/test/test_mp_secondary.c
similarity index 100%
rename from app/test/test_mp_secondary.c
rename to test/test/test_mp_secondary.c
diff --git a/app/test/test_pci.c b/test/test/test_pci.c
similarity index 100%
rename from app/test/test_pci.c
rename to test/test/test_pci.c
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/class b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/class
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/class
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/class
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/config b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/config
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/config
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/config
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/consistent_dma_mask_bits b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/consistent_dma_mask_bits
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/consistent_dma_mask_bits
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/consistent_dma_mask_bits
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/device b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/device
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/device
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/device
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/dma_mask_bits b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/dma_mask_bits
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/dma_mask_bits
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/dma_mask_bits
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/enable b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/enable
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/enable
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/enable
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/irq b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/irq
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/irq
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/irq
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/modalias b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/modalias
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/modalias
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/modalias
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/msi_bus b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/msi_bus
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/msi_bus
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/msi_bus
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/numa_node b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/numa_node
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/numa_node
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/numa_node
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/resource b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/resource
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/resource
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/resource
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/sriov_numvfs b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/sriov_numvfs
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/sriov_numvfs
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/sriov_numvfs
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/sriov_totalvfs b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/sriov_totalvfs
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/sriov_totalvfs
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/sriov_totalvfs
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/subsystem_device b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/subsystem_device
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/subsystem_device
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/subsystem_device
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/subsystem_vendor b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/subsystem_vendor
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/subsystem_vendor
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/subsystem_vendor
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/uevent b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/uevent
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/uevent
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/uevent
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/vendor b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/vendor
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/vendor
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/vendor
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/class b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/class
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/class
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/class
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/device b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/device
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/device
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/device
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/resource b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/resource
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/resource
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/resource
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/subsystem_device b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/subsystem_device
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/subsystem_device
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/subsystem_device
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/subsystem_vendor b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/subsystem_vendor
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/subsystem_vendor
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/subsystem_vendor
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/vendor b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/vendor
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/vendor
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/vendor
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/class b/test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/class
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/class
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/class
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/device b/test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/device
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/device
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/device
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/resource b/test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/resource
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/resource
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/resource
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/subsystem_device b/test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/subsystem_device
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/subsystem_device
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/subsystem_device
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/subsystem_vendor b/test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/subsystem_vendor
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/subsystem_vendor
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/subsystem_vendor
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/vendor b/test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/vendor
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/vendor
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/vendor
diff --git a/app/test/test_per_lcore.c b/test/test/test_per_lcore.c
similarity index 100%
rename from app/test/test_per_lcore.c
rename to test/test/test_per_lcore.c
diff --git a/app/test/test_pmd_perf.c b/test/test/test_pmd_perf.c
similarity index 100%
rename from app/test/test_pmd_perf.c
rename to test/test/test_pmd_perf.c
diff --git a/app/test/test_pmd_ring.c b/test/test/test_pmd_ring.c
similarity index 100%
rename from app/test/test_pmd_ring.c
rename to test/test/test_pmd_ring.c
diff --git a/app/test/test_pmd_ring_perf.c b/test/test/test_pmd_ring_perf.c
similarity index 100%
rename from app/test/test_pmd_ring_perf.c
rename to test/test/test_pmd_ring_perf.c
diff --git a/app/test/test_power.c b/test/test/test_power.c
similarity index 100%
rename from app/test/test_power.c
rename to test/test/test_power.c
diff --git a/app/test/test_power_acpi_cpufreq.c b/test/test/test_power_acpi_cpufreq.c
similarity index 100%
rename from app/test/test_power_acpi_cpufreq.c
rename to test/test/test_power_acpi_cpufreq.c
diff --git a/app/test/test_power_kvm_vm.c b/test/test/test_power_kvm_vm.c
similarity index 100%
rename from app/test/test_power_kvm_vm.c
rename to test/test/test_power_kvm_vm.c
diff --git a/app/test/test_prefetch.c b/test/test/test_prefetch.c
similarity index 100%
rename from app/test/test_prefetch.c
rename to test/test/test_prefetch.c
diff --git a/app/test/test_red.c b/test/test/test_red.c
similarity index 100%
rename from app/test/test_red.c
rename to test/test/test_red.c
diff --git a/app/test/test_reorder.c b/test/test/test_reorder.c
similarity index 100%
rename from app/test/test_reorder.c
rename to test/test/test_reorder.c
diff --git a/app/test/test_resource.c b/test/test/test_resource.c
similarity index 100%
rename from app/test/test_resource.c
rename to test/test/test_resource.c
diff --git a/app/test/test_ring.c b/test/test/test_ring.c
similarity index 100%
rename from app/test/test_ring.c
rename to test/test/test_ring.c
diff --git a/app/test/test_ring_perf.c b/test/test/test_ring_perf.c
similarity index 100%
rename from app/test/test_ring_perf.c
rename to test/test/test_ring_perf.c
diff --git a/app/test/test_rwlock.c b/test/test/test_rwlock.c
similarity index 100%
rename from app/test/test_rwlock.c
rename to test/test/test_rwlock.c
diff --git a/app/test/test_sched.c b/test/test/test_sched.c
similarity index 100%
rename from app/test/test_sched.c
rename to test/test/test_sched.c
diff --git a/app/test/test_spinlock.c b/test/test/test_spinlock.c
similarity index 100%
rename from app/test/test_spinlock.c
rename to test/test/test_spinlock.c
diff --git a/app/test/test_string_fns.c b/test/test/test_string_fns.c
similarity index 100%
rename from app/test/test_string_fns.c
rename to test/test/test_string_fns.c
diff --git a/app/test/test_table.c b/test/test/test_table.c
similarity index 100%
rename from app/test/test_table.c
rename to test/test/test_table.c
diff --git a/app/test/test_table.h b/test/test/test_table.h
similarity index 100%
rename from app/test/test_table.h
rename to test/test/test_table.h
diff --git a/app/test/test_table_acl.c b/test/test/test_table_acl.c
similarity index 100%
rename from app/test/test_table_acl.c
rename to test/test/test_table_acl.c
diff --git a/app/test/test_table_acl.h b/test/test/test_table_acl.h
similarity index 100%
rename from app/test/test_table_acl.h
rename to test/test/test_table_acl.h
diff --git a/app/test/test_table_combined.c b/test/test/test_table_combined.c
similarity index 100%
rename from app/test/test_table_combined.c
rename to test/test/test_table_combined.c
diff --git a/app/test/test_table_combined.h b/test/test/test_table_combined.h
similarity index 100%
rename from app/test/test_table_combined.h
rename to test/test/test_table_combined.h
diff --git a/app/test/test_table_pipeline.c b/test/test/test_table_pipeline.c
similarity index 100%
rename from app/test/test_table_pipeline.c
rename to test/test/test_table_pipeline.c
diff --git a/app/test/test_table_pipeline.h b/test/test/test_table_pipeline.h
similarity index 100%
rename from app/test/test_table_pipeline.h
rename to test/test/test_table_pipeline.h
diff --git a/app/test/test_table_ports.c b/test/test/test_table_ports.c
similarity index 100%
rename from app/test/test_table_ports.c
rename to test/test/test_table_ports.c
diff --git a/app/test/test_table_ports.h b/test/test/test_table_ports.h
similarity index 100%
rename from app/test/test_table_ports.h
rename to test/test/test_table_ports.h
diff --git a/app/test/test_table_tables.c b/test/test/test_table_tables.c
similarity index 100%
rename from app/test/test_table_tables.c
rename to test/test/test_table_tables.c
diff --git a/app/test/test_table_tables.h b/test/test/test_table_tables.h
similarity index 100%
rename from app/test/test_table_tables.h
rename to test/test/test_table_tables.h
diff --git a/app/test/test_tailq.c b/test/test/test_tailq.c
similarity index 100%
rename from app/test/test_tailq.c
rename to test/test/test_tailq.c
diff --git a/app/test/test_thash.c b/test/test/test_thash.c
similarity index 100%
rename from app/test/test_thash.c
rename to test/test/test_thash.c
diff --git a/app/test/test_timer.c b/test/test/test_timer.c
similarity index 100%
rename from app/test/test_timer.c
rename to test/test/test_timer.c
diff --git a/app/test/test_timer_perf.c b/test/test/test_timer_perf.c
similarity index 100%
rename from app/test/test_timer_perf.c
rename to test/test/test_timer_perf.c
diff --git a/app/test/test_timer_racecond.c b/test/test/test_timer_racecond.c
similarity index 100%
rename from app/test/test_timer_racecond.c
rename to test/test/test_timer_racecond.c
diff --git a/app/test/test_version.c b/test/test/test_version.c
similarity index 100%
rename from app/test/test_version.c
rename to test/test/test_version.c
diff --git a/app/test/test_xmmt_ops.h b/test/test/test_xmmt_ops.h
similarity index 100%
rename from app/test/test_xmmt_ops.h
rename to test/test/test_xmmt_ops.h
diff --git a/app/test/virtual_pmd.c b/test/test/virtual_pmd.c
similarity index 100%
rename from app/test/virtual_pmd.c
rename to test/test/virtual_pmd.c
diff --git a/app/test/virtual_pmd.h b/test/test/virtual_pmd.h
similarity index 100%
rename from app/test/virtual_pmd.h
rename to test/test/virtual_pmd.h
-- 
2.9.3

^ permalink raw reply related	[flat|nested] 34+ messages in thread

* Re: [RFC 17.05] test: move tests to separate folder
  2017-02-14 15:13 [RFC 17.05] test: move tests to separate folder Ferruh Yigit
@ 2017-02-14 15:41 ` Bruce Richardson
  2017-02-14 15:51   ` Wiles, Keith
                     ` (2 more replies)
  2017-02-14 16:15 ` Mcnamara, John
  2017-02-15 15:26 ` [PATCH 1/4] " Ferruh Yigit
  2 siblings, 3 replies; 34+ messages in thread
From: Bruce Richardson @ 2017-02-14 15:41 UTC (permalink / raw)
  To: Ferruh Yigit; +Cc: Thomas Monjalon, dev

On Tue, Feb 14, 2017 at 03:13:26PM +0000, Ferruh Yigit wrote:
> Tests are part of app folder and compiled with library every time.
> Moving tests into a "test" folder which won't be compiled by default.
> To compile tests, need to give explicit "make test" command.
> 
> "make test" was previously used to run tests, which renamed to
> "make test_run" with this patch.
> 
> This makes default compilation ~30% faster,
> [clang, make -j8, old]: real    1m04.355s
> [clang, make -j8, new]: real    0m41.740s
> 
> For new case, test needs to built separately, which takes,
> [clang, make -j8 test]: real    0m24.293s
> 
> The point is tests are not required always and by every one.
> 
> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
> ---

Hi Ferruh,

I'm not sure I'm convinced by this, as I think there are advantages to
having the test code always compiled. Anything that is not compiled in
DPDK by default is more likely to be broken by patch submissions. The
speed boost to build is nice, but I'm not sure it's worth it.
However, I'm open to being convinced otherwise on this...

/Bruce

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [RFC 17.05] test: move tests to separate folder
  2017-02-14 15:41 ` Bruce Richardson
@ 2017-02-14 15:51   ` Wiles, Keith
  2017-02-14 16:12   ` Mcnamara, John
  2017-02-14 17:07   ` Ferruh Yigit
  2 siblings, 0 replies; 34+ messages in thread
From: Wiles, Keith @ 2017-02-14 15:51 UTC (permalink / raw)
  To: Richardson, Bruce; +Cc: Yigit, Ferruh, Thomas Monjalon, dev


> On Feb 14, 2017, at 9:41 AM, Bruce Richardson <bruce.richardson@intel.com> wrote:
> 
> On Tue, Feb 14, 2017 at 03:13:26PM +0000, Ferruh Yigit wrote:
>> Tests are part of app folder and compiled with library every time.
>> Moving tests into a "test" folder which won't be compiled by default.
>> To compile tests, need to give explicit "make test" command.
>> 
>> "make test" was previously used to run tests, which renamed to
>> "make test_run" with this patch.
>> 
>> This makes default compilation ~30% faster,
>> [clang, make -j8, old]: real    1m04.355s
>> [clang, make -j8, new]: real    0m41.740s
>> 
>> For new case, test needs to built separately, which takes,
>> [clang, make -j8 test]: real    0m24.293s
>> 
>> The point is tests are not required always and by every one.
>> 
>> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
>> ---
> 
> Hi Ferruh,
> 
> I'm not sure I'm convinced by this, as I think there are advantages to
> having the test code always compiled. Anything that is not compiled in
> DPDK by default is more likely to be broken by patch submissions. The
> speed boost to build is nice, but I'm not sure it's worth it.
> However, I'm open to being convinced otherwise on this...
> 
> /Bruce

I am kind of in the same boat as Bruce on the tests, but I was thinking the other applications in the app directory pretty much use most of the APIs, right? If that is the case then I would agree with Ferruh.

Regards,
Keith

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [RFC 17.05] test: move tests to separate folder
  2017-02-14 15:41 ` Bruce Richardson
  2017-02-14 15:51   ` Wiles, Keith
@ 2017-02-14 16:12   ` Mcnamara, John
  2017-02-15  9:03     ` Thomas Monjalon
  2017-02-14 17:07   ` Ferruh Yigit
  2 siblings, 1 reply; 34+ messages in thread
From: Mcnamara, John @ 2017-02-14 16:12 UTC (permalink / raw)
  To: Richardson, Bruce, Yigit, Ferruh; +Cc: Thomas Monjalon, dev



> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Bruce Richardson
> Sent: Tuesday, February 14, 2017 3:42 PM
> To: Yigit, Ferruh <ferruh.yigit@intel.com>
> Cc: Thomas Monjalon <thomas.monjalon@6wind.com>; dev@dpdk.org
> Subject: Re: [dpdk-dev] [RFC 17.05] test: move tests to separate folder
> 
> On Tue, Feb 14, 2017 at 03:13:26PM +0000, Ferruh Yigit wrote:
> > Tests are part of app folder and compiled with library every time.
> > Moving tests into a "test" folder which won't be compiled by default.
> > To compile tests, need to give explicit "make test" command.
> >
> > "make test" was previously used to run tests, which renamed to "make
> > test_run" with this patch.
> >
> > This makes default compilation ~30% faster,
> > [clang, make -j8, old]: real    1m04.355s
> > [clang, make -j8, new]: real    0m41.740s
> >
> > For new case, test needs to built separately, which takes,
> > [clang, make -j8 test]: real    0m24.293s
> >
> > The point is tests are not required always and by every one.
> >
> > Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
> > ---
> 
> Hi Ferruh,
> 
> I'm not sure I'm convinced by this, as I think there are advantages to
> having the test code always compiled. Anything that is not compiled in
> DPDK by default is more likely to be broken by patch submissions. The
> speed boost to build is nice, but I'm not sure it's worth it.
> However, I'm open to being convinced otherwise on this...

Hi,

In general, I am in favour of separating the main compilation from
the compilation of the tests. Usually unit test code doesn't get
compiled until you run "make test". Also, having the "test" code
in the "app" dir is a little odd.


> Anything that is not compiled in
> DPDK by default is more likely to be broken by patch submissions.

It is probably more important that the user runs the tests than just
compiles them. :-) As a side effect of running the tests they will
also compile them.

As a side issue I think that we should improve the ease of running and
extending the test suite. YMMV but I have always found the test suite hard
to run with 100% passing tests.

So I think this is a good first step to separate out unit testing from the
rest of the code.

John

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [RFC 17.05] test: move tests to separate folder
  2017-02-14 15:13 [RFC 17.05] test: move tests to separate folder Ferruh Yigit
  2017-02-14 15:41 ` Bruce Richardson
@ 2017-02-14 16:15 ` Mcnamara, John
  2017-02-15 15:26 ` [PATCH 1/4] " Ferruh Yigit
  2 siblings, 0 replies; 34+ messages in thread
From: Mcnamara, John @ 2017-02-14 16:15 UTC (permalink / raw)
  To: Yigit, Ferruh, Thomas Monjalon; +Cc: dev, Yigit, Ferruh



> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Ferruh Yigit
> Sent: Tuesday, February 14, 2017 3:13 PM
> To: Thomas Monjalon <thomas.monjalon@6wind.com>
> Cc: dev@dpdk.org; Yigit, Ferruh <ferruh.yigit@intel.com>
> Subject: [dpdk-dev] [RFC 17.05] test: move tests to separate folder
> 
> Tests are part of app folder and compiled with library every time.
> Moving tests into a "test" folder which won't be compiled by default.
> To compile tests, need to give explicit "make test" command.
> 
> "make test" was previously used to run tests, which renamed to
> "make test_run" with this patch.

Hi,

I would prefer if "make test" still ran the tests, since that is the 
general assumption in most open source projects. Maybe have a 
"make test_compile" target to compile but not run the tests.

Otherwise +1 for this.

John

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [RFC 17.05] test: move tests to separate folder
  2017-02-14 15:41 ` Bruce Richardson
  2017-02-14 15:51   ` Wiles, Keith
  2017-02-14 16:12   ` Mcnamara, John
@ 2017-02-14 17:07   ` Ferruh Yigit
  2017-02-14 17:30     ` Richardson, Bruce
  2 siblings, 1 reply; 34+ messages in thread
From: Ferruh Yigit @ 2017-02-14 17:07 UTC (permalink / raw)
  To: Bruce Richardson; +Cc: Thomas Monjalon, dev

On 2/14/2017 3:41 PM, Bruce Richardson wrote:
> On Tue, Feb 14, 2017 at 03:13:26PM +0000, Ferruh Yigit wrote:
>> Tests are part of app folder and compiled with library every time.
>> Moving tests into a "test" folder which won't be compiled by default.
>> To compile tests, need to give explicit "make test" command.
>>
>> "make test" was previously used to run tests, which renamed to
>> "make test_run" with this patch.
>>
>> This makes default compilation ~30% faster,
>> [clang, make -j8, old]: real    1m04.355s
>> [clang, make -j8, new]: real    0m41.740s
>>
>> For new case, test needs to built separately, which takes,
>> [clang, make -j8 test]: real    0m24.293s
>>
>> The point is tests are not required always and by every one.
>>
>> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
>> ---
> 
> Hi Ferruh,
> 
> I'm not sure I'm convinced by this, as I think there are advantages to
> having the test code always compiled. Anything that is not compiled in
> DPDK by default is more likely to be broken by patch submissions. The
> speed boost to build is nice, but I'm not sure it's worth it.
> However, I'm open to being convinced otherwise on this...

Perhaps I should send this as two patches, first separate the unit tests
and second disable tests in default compilation.

Your concern is about disabling test compilation by default.

- If nobody interested in running test, why force them to compile. If
people interested in unit tests, test will be compiled and issues will
be resolved.
Unit tests are for developers more than end users, and if developers are
not using unit tests we may have another thing to focus.

- This should be automated somehow, unit test should be build and run
regularly and automatically. So we can see when it is broken.

Thanks,
ferruh

> 
> /Bruce
> 

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [RFC 17.05] test: move tests to separate folder
  2017-02-14 17:07   ` Ferruh Yigit
@ 2017-02-14 17:30     ` Richardson, Bruce
  2017-02-15  2:11       ` Yuanhan Liu
  0 siblings, 1 reply; 34+ messages in thread
From: Richardson, Bruce @ 2017-02-14 17:30 UTC (permalink / raw)
  To: Yigit, Ferruh; +Cc: Thomas Monjalon, dev



> -----Original Message-----
> From: Yigit, Ferruh
> Sent: Tuesday, February 14, 2017 5:07 PM
> To: Richardson, Bruce <bruce.richardson@intel.com>
> Cc: Thomas Monjalon <thomas.monjalon@6wind.com>; dev@dpdk.org
> Subject: Re: [dpdk-dev] [RFC 17.05] test: move tests to separate folder
> 
> On 2/14/2017 3:41 PM, Bruce Richardson wrote:
> > On Tue, Feb 14, 2017 at 03:13:26PM +0000, Ferruh Yigit wrote:
> >> Tests are part of app folder and compiled with library every time.
> >> Moving tests into a "test" folder which won't be compiled by default.
> >> To compile tests, need to give explicit "make test" command.
> >>
> >> "make test" was previously used to run tests, which renamed to "make
> >> test_run" with this patch.
> >>
> >> This makes default compilation ~30% faster,
> >> [clang, make -j8, old]: real    1m04.355s
> >> [clang, make -j8, new]: real    0m41.740s
> >>
> >> For new case, test needs to built separately, which takes,
> >> [clang, make -j8 test]: real    0m24.293s
> >>
> >> The point is tests are not required always and by every one.
> >>
> >> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
> >> ---
> >
> > Hi Ferruh,
> >
> > I'm not sure I'm convinced by this, as I think there are advantages to
> > having the test code always compiled. Anything that is not compiled in
> > DPDK by default is more likely to be broken by patch submissions. The
> > speed boost to build is nice, but I'm not sure it's worth it.
> > However, I'm open to being convinced otherwise on this...
> 
> Perhaps I should send this as two patches, first separate the unit tests
> and second disable tests in default compilation.
> 
> Your concern is about disabling test compilation by default.
> 
> - If nobody interested in running test, why force them to compile. If
> people interested in unit tests, test will be compiled and issues will be
> resolved.
> Unit tests are for developers more than end users, and if developers are
> not using unit tests we may have another thing to focus.
> 
> - This should be automated somehow, unit test should be build and run
> regularly and automatically. So we can see when it is broken.
> 
Ok, makes sense.

Just to be awkward :-), one last question: Why separate building and running
the tests? My suggestion would be to have "make test" both build and run the
tests. If there is no work to do in building them, then the time cost of the
extra empty build is negligible compared to the time taken to actually run
the tests. If we really want to build the tests without running them I'd
suggest "build_test" target instead. This keeps "make test" pretty much as
it was before.

/Bruce

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [RFC 17.05] test: move tests to separate folder
  2017-02-14 17:30     ` Richardson, Bruce
@ 2017-02-15  2:11       ` Yuanhan Liu
  2017-02-15 10:06         ` Ferruh Yigit
  0 siblings, 1 reply; 34+ messages in thread
From: Yuanhan Liu @ 2017-02-15  2:11 UTC (permalink / raw)
  To: Richardson, Bruce; +Cc: Yigit, Ferruh, Thomas Monjalon, dev

On Tue, Feb 14, 2017 at 05:30:14PM +0000, Richardson, Bruce wrote:
> Just to be awkward :-), one last question: Why separate building and running
> the tests? My suggestion would be to have "make test" both build and run the
> tests. If there is no work to do in building them, then the time cost of the
> extra empty build is negligible compared to the time taken to actually run
> the tests.

+1

	--yliu

> If we really want to build the tests without running them I'd
> suggest "build_test" target instead. This keeps "make test" pretty much as
> it was before.
> 
> /Bruce

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [RFC 17.05] test: move tests to separate folder
  2017-02-14 16:12   ` Mcnamara, John
@ 2017-02-15  9:03     ` Thomas Monjalon
  0 siblings, 0 replies; 34+ messages in thread
From: Thomas Monjalon @ 2017-02-15  9:03 UTC (permalink / raw)
  To: Mcnamara, John; +Cc: Richardson, Bruce, Yigit, Ferruh, dev

2017-02-14 16:12, Mcnamara, John:
> It is probably more important that the user runs the tests than just
> compiles them. :-) As a side effect of running the tests they will
> also compile them.
> 
> As a side issue I think that we should improve the ease of running and
> extending the test suite. YMMV but I have always found the test suite hard
> to run with 100% passing tests.
> 
> So I think this is a good first step to separate out unit testing from the
> rest of the code.

Yes we really need to work on the unit tests.

Someone to run them and make it part of the distributed CI?

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [RFC 17.05] test: move tests to separate folder
  2017-02-15  2:11       ` Yuanhan Liu
@ 2017-02-15 10:06         ` Ferruh Yigit
  2017-02-15 11:16           ` Thomas Monjalon
  0 siblings, 1 reply; 34+ messages in thread
From: Ferruh Yigit @ 2017-02-15 10:06 UTC (permalink / raw)
  To: Yuanhan Liu, Richardson, Bruce; +Cc: Thomas Monjalon, dev

On 2/15/2017 2:11 AM, Yuanhan Liu wrote:
> On Tue, Feb 14, 2017 at 05:30:14PM +0000, Richardson, Bruce wrote:
>> Just to be awkward :-), one last question: Why separate building and running
>> the tests? My suggestion would be to have "make test" both build and run the
>> tests. If there is no work to do in building them, then the time cost of the
>> extra empty build is negligible compared to the time taken to actually run
>> the tests.
> 
> +1
> 

Makes sense. I will update as:

"make test" -> compile and run test
"make test_build" -> only compile test

(newly added "make test_run" will go away)

thanks,
ferruh

> 	--yliu
> 
>> If we really want to build the tests without running them I'd
>> suggest "build_test" target instead. This keeps "make test" pretty much as
>> it was before.
>>
>> /Bruce

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [RFC 17.05] test: move tests to separate folder
  2017-02-15 10:06         ` Ferruh Yigit
@ 2017-02-15 11:16           ` Thomas Monjalon
  2017-02-15 11:28             ` Ferruh Yigit
  0 siblings, 1 reply; 34+ messages in thread
From: Thomas Monjalon @ 2017-02-15 11:16 UTC (permalink / raw)
  To: Ferruh Yigit; +Cc: Yuanhan Liu, Richardson, Bruce, dev

2017-02-15 10:06, Ferruh Yigit:
> On 2/15/2017 2:11 AM, Yuanhan Liu wrote:
> > On Tue, Feb 14, 2017 at 05:30:14PM +0000, Richardson, Bruce wrote:
> >> Just to be awkward :-), one last question: Why separate building and running
> >> the tests? My suggestion would be to have "make test" both build and run the
> >> tests. If there is no work to do in building them, then the time cost of the
> >> extra empty build is negligible compared to the time taken to actually run
> >> the tests.
> > 
> > +1
> > 
> 
> Makes sense. I will update as:
> 
> "make test" -> compile and run test
> "make test_build" -> only compile test

If I remember well, the dash is used in some make targets, not the underscore.

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [RFC 17.05] test: move tests to separate folder
  2017-02-15 11:16           ` Thomas Monjalon
@ 2017-02-15 11:28             ` Ferruh Yigit
  0 siblings, 0 replies; 34+ messages in thread
From: Ferruh Yigit @ 2017-02-15 11:28 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: Yuanhan Liu, Richardson, Bruce, dev

On 2/15/2017 11:16 AM, Thomas Monjalon wrote:
> 2017-02-15 10:06, Ferruh Yigit:
>> On 2/15/2017 2:11 AM, Yuanhan Liu wrote:
>>> On Tue, Feb 14, 2017 at 05:30:14PM +0000, Richardson, Bruce wrote:
>>>> Just to be awkward :-), one last question: Why separate building and running
>>>> the tests? My suggestion would be to have "make test" both build and run the
>>>> tests. If there is no work to do in building them, then the time cost of the
>>>> extra empty build is negligible compared to the time taken to actually run
>>>> the tests.
>>>
>>> +1
>>>
>>
>> Makes sense. I will update as:
>>
>> "make test" -> compile and run test
>> "make test_build" -> only compile test
> 
> If I remember well, the dash is used in some make targets, not the underscore.

Both usage exists, but if dash is the preferred way I will use it, rule
will become "test-build"

^ permalink raw reply	[flat|nested] 34+ messages in thread

* [PATCH 1/4] test: move tests to separate folder
  2017-02-14 15:13 [RFC 17.05] test: move tests to separate folder Ferruh Yigit
  2017-02-14 15:41 ` Bruce Richardson
  2017-02-14 16:15 ` Mcnamara, John
@ 2017-02-15 15:26 ` Ferruh Yigit
  2017-02-15 15:26   ` [PATCH 2/4] mk: do not build tests by default Ferruh Yigit
                     ` (4 more replies)
  2 siblings, 5 replies; 34+ messages in thread
From: Ferruh Yigit @ 2017-02-15 15:26 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: dev, Ferruh Yigit, Bruce Richardson, John McNamara, Keith Wiles

This is to logically group unit tests into their own folder separating
them from "app" folder.

Hopefully this will make the unit test in DPDK more visible.

Following binaries moved to "test" folder:
cmdline-test
test-acl
test-pipeline
test   <-- various DPDK unit tests

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 GNUmakefile                                        |   2 +-
 app/Makefile                                       |   4 ---
 mk/rte.sdktest.mk                                  |   6 ++--
 test/Makefile                                      |  39 +++++++++++++++++++++
 {app => test}/cmdline_test/Makefile                |   0
 {app => test}/cmdline_test/cmdline_test.c          |   0
 {app => test}/cmdline_test/cmdline_test.h          |   0
 {app => test}/cmdline_test/cmdline_test.py         |   0
 {app => test}/cmdline_test/cmdline_test_data.py    |   0
 {app => test}/cmdline_test/commands.c              |   0
 {app => test}/test-acl/Makefile                    |   0
 {app => test}/test-acl/main.c                      |   0
 {app => test}/test-pipeline/Makefile               |   0
 {app => test}/test-pipeline/config.c               |   0
 {app => test}/test-pipeline/init.c                 |   0
 {app => test}/test-pipeline/main.c                 |   0
 {app => test}/test-pipeline/main.h                 |   0
 {app => test}/test-pipeline/pipeline_acl.c         |   0
 {app => test}/test-pipeline/pipeline_hash.c        |   0
 {app => test}/test-pipeline/pipeline_lpm.c         |   0
 {app => test}/test-pipeline/pipeline_lpm_ipv6.c    |   0
 {app => test}/test-pipeline/pipeline_stub.c        |   0
 {app => test}/test-pipeline/runtime.c              |   0
 {app => test}/test/Makefile                        |   0
 {app => test}/test/autotest.py                     |   0
 {app => test}/test/autotest_data.py                |   0
 {app => test}/test/autotest_runner.py              |   0
 {app => test}/test/autotest_test_funcs.py          |   0
 {app => test}/test/commands.c                      |   0
 {app => test}/test/packet_burst_generator.c        |   0
 {app => test}/test/packet_burst_generator.h        |   0
 {app => test}/test/process.h                       |   0
 {app => test}/test/resource.c                      |   0
 {app => test}/test/resource.h                      |   0
 {app => test}/test/test.c                          |   0
 {app => test}/test/test.h                          |   0
 {app => test}/test/test_acl.c                      |   0
 {app => test}/test/test_acl.h                      |   0
 {app => test}/test/test_alarm.c                    |   0
 {app => test}/test/test_atomic.c                   |   0
 {app => test}/test/test_byteorder.c                |   0
 {app => test}/test/test_cmdline.c                  |   0
 {app => test}/test/test_cmdline.h                  |   0
 {app => test}/test/test_cmdline_cirbuf.c           |   0
 {app => test}/test/test_cmdline_etheraddr.c        |   0
 {app => test}/test/test_cmdline_ipaddr.c           |   0
 {app => test}/test/test_cmdline_lib.c              |   0
 {app => test}/test/test_cmdline_num.c              |   0
 {app => test}/test/test_cmdline_portlist.c         |   0
 {app => test}/test/test_cmdline_string.c           |   0
 {app => test}/test/test_common.c                   |   0
 {app => test}/test/test_cpuflags.c                 |   0
 {app => test}/test/test_cryptodev.c                |   0
 {app => test}/test/test_cryptodev.h                |   0
 .../test/test_cryptodev_aes_test_vectors.h         |   0
 {app => test}/test/test_cryptodev_blockcipher.c    |   0
 {app => test}/test/test_cryptodev_blockcipher.h    |   0
 .../test/test_cryptodev_des_test_vectors.h         |   0
 .../test/test_cryptodev_gcm_test_vectors.h         |   0
 .../test/test_cryptodev_hash_test_vectors.h        |   0
 .../test/test_cryptodev_hmac_test_vectors.h        |   0
 .../test/test_cryptodev_kasumi_hash_test_vectors.h |   0
 .../test/test_cryptodev_kasumi_test_vectors.h      |   0
 {app => test}/test/test_cryptodev_perf.c           |   0
 .../test/test_cryptodev_snow3g_hash_test_vectors.h |   0
 .../test/test_cryptodev_snow3g_test_vectors.h      |   0
 .../test/test_cryptodev_zuc_hash_test_vectors.h    |   0
 .../test/test_cryptodev_zuc_test_vectors.h         |   0
 {app => test}/test/test_cycles.c                   |   0
 {app => test}/test/test_debug.c                    |   0
 {app => test}/test/test_devargs.c                  |   0
 {app => test}/test/test_distributor.c              |   0
 {app => test}/test/test_distributor_perf.c         |   0
 {app => test}/test/test_eal_flags.c                |   0
 {app => test}/test/test_eal_fs.c                   |   0
 {app => test}/test/test_efd.c                      |   0
 {app => test}/test/test_efd_perf.c                 |   0
 {app => test}/test/test_errno.c                    |   0
 {app => test}/test/test_func_reentrancy.c          |   0
 {app => test}/test/test_hash.c                     |   0
 {app => test}/test/test_hash_functions.c           |   0
 {app => test}/test/test_hash_multiwriter.c         |   0
 {app => test}/test/test_hash_perf.c                |   0
 {app => test}/test/test_hash_scaling.c             |   0
 {app => test}/test/test_interrupts.c               |   0
 {app => test}/test/test_kni.c                      |   0
 {app => test}/test/test_kvargs.c                   |   0
 {app => test}/test/test_link_bonding.c             |   0
 {app => test}/test/test_link_bonding_mode4.c       |   0
 {app => test}/test/test_link_bonding_rssconf.c     |   0
 {app => test}/test/test_logs.c                     |   0
 {app => test}/test/test_lpm.c                      |   0
 {app => test}/test/test_lpm6.c                     |   0
 {app => test}/test/test_lpm6_data.h                |   0
 {app => test}/test/test_lpm6_perf.c                |   0
 {app => test}/test/test_lpm_perf.c                 |   0
 {app => test}/test/test_malloc.c                   |   0
 {app => test}/test/test_mbuf.c                     |   0
 {app => test}/test/test_memcpy.c                   |   0
 {app => test}/test/test_memcpy_perf.c              |   0
 {app => test}/test/test_memory.c                   |   0
 {app => test}/test/test_mempool.c                  |   0
 {app => test}/test/test_mempool_perf.c             |   0
 {app => test}/test/test_memzone.c                  |   0
 {app => test}/test/test_meter.c                    |   0
 {app => test}/test/test_mp_secondary.c             |   0
 {app => test}/test/test_pci.c                      |   0
 .../bus/pci/devices/0000:01:00.0/class             |   0
 .../bus/pci/devices/0000:01:00.0/config            | Bin
 .../devices/0000:01:00.0/consistent_dma_mask_bits  |   0
 .../bus/pci/devices/0000:01:00.0/device            |   0
 .../bus/pci/devices/0000:01:00.0/dma_mask_bits     |   0
 .../bus/pci/devices/0000:01:00.0/enable            |   0
 .../bus/pci/devices/0000:01:00.0/irq               |   0
 .../bus/pci/devices/0000:01:00.0/modalias          |   0
 .../bus/pci/devices/0000:01:00.0/msi_bus           |   0
 .../bus/pci/devices/0000:01:00.0/numa_node         |   0
 .../bus/pci/devices/0000:01:00.0/resource          |   0
 .../bus/pci/devices/0000:01:00.0/sriov_numvfs      |   0
 .../bus/pci/devices/0000:01:00.0/sriov_totalvfs    |   0
 .../bus/pci/devices/0000:01:00.0/subsystem_device  |   0
 .../bus/pci/devices/0000:01:00.0/subsystem_vendor  |   0
 .../bus/pci/devices/0000:01:00.0/uevent            |   0
 .../bus/pci/devices/0000:01:00.0/vendor            |   0
 .../bus/pci/devices/0000:01:02.0/class             |   0
 .../bus/pci/devices/0000:01:02.0/device            |   0
 .../bus/pci/devices/0000:01:02.0/resource          |   0
 .../bus/pci/devices/0000:01:02.0/subsystem_device  |   0
 .../bus/pci/devices/0000:01:02.0/subsystem_vendor  |   0
 .../bus/pci/devices/0000:01:02.0/vendor            |   0
 .../bus/pci/devices/0000:02:ab.0/class             |   0
 .../bus/pci/devices/0000:02:ab.0/device            |   0
 .../bus/pci/devices/0000:02:ab.0/resource          |   0
 .../bus/pci/devices/0000:02:ab.0/subsystem_device  |   0
 .../bus/pci/devices/0000:02:ab.0/subsystem_vendor  |   0
 .../bus/pci/devices/0000:02:ab.0/vendor            |   0
 {app => test}/test/test_per_lcore.c                |   0
 {app => test}/test/test_pmd_perf.c                 |   0
 {app => test}/test/test_pmd_ring.c                 |   0
 {app => test}/test/test_pmd_ring_perf.c            |   0
 {app => test}/test/test_power.c                    |   0
 {app => test}/test/test_power_acpi_cpufreq.c       |   0
 {app => test}/test/test_power_kvm_vm.c             |   0
 {app => test}/test/test_prefetch.c                 |   0
 {app => test}/test/test_red.c                      |   0
 {app => test}/test/test_reorder.c                  |   0
 {app => test}/test/test_resource.c                 |   0
 {app => test}/test/test_ring.c                     |   0
 {app => test}/test/test_ring_perf.c                |   0
 {app => test}/test/test_rwlock.c                   |   0
 {app => test}/test/test_sched.c                    |   0
 {app => test}/test/test_spinlock.c                 |   0
 {app => test}/test/test_string_fns.c               |   0
 {app => test}/test/test_table.c                    |   0
 {app => test}/test/test_table.h                    |   0
 {app => test}/test/test_table_acl.c                |   0
 {app => test}/test/test_table_acl.h                |   0
 {app => test}/test/test_table_combined.c           |   0
 {app => test}/test/test_table_combined.h           |   0
 {app => test}/test/test_table_pipeline.c           |   0
 {app => test}/test/test_table_pipeline.h           |   0
 {app => test}/test/test_table_ports.c              |   0
 {app => test}/test/test_table_ports.h              |   0
 {app => test}/test/test_table_tables.c             |   0
 {app => test}/test/test_table_tables.h             |   0
 {app => test}/test/test_tailq.c                    |   0
 {app => test}/test/test_thash.c                    |   0
 {app => test}/test/test_timer.c                    |   0
 {app => test}/test/test_timer_perf.c               |   0
 {app => test}/test/test_timer_racecond.c           |   0
 {app => test}/test/test_version.c                  |   0
 {app => test}/test/test_xmmt_ops.h                 |   0
 {app => test}/test/virtual_pmd.c                   |   0
 {app => test}/test/virtual_pmd.h                   |   0
 174 files changed, 43 insertions(+), 8 deletions(-)
 create mode 100644 test/Makefile
 rename {app => test}/cmdline_test/Makefile (100%)
 rename {app => test}/cmdline_test/cmdline_test.c (100%)
 rename {app => test}/cmdline_test/cmdline_test.h (100%)
 rename {app => test}/cmdline_test/cmdline_test.py (100%)
 rename {app => test}/cmdline_test/cmdline_test_data.py (100%)
 rename {app => test}/cmdline_test/commands.c (100%)
 rename {app => test}/test-acl/Makefile (100%)
 rename {app => test}/test-acl/main.c (100%)
 rename {app => test}/test-pipeline/Makefile (100%)
 rename {app => test}/test-pipeline/config.c (100%)
 rename {app => test}/test-pipeline/init.c (100%)
 rename {app => test}/test-pipeline/main.c (100%)
 rename {app => test}/test-pipeline/main.h (100%)
 rename {app => test}/test-pipeline/pipeline_acl.c (100%)
 rename {app => test}/test-pipeline/pipeline_hash.c (100%)
 rename {app => test}/test-pipeline/pipeline_lpm.c (100%)
 rename {app => test}/test-pipeline/pipeline_lpm_ipv6.c (100%)
 rename {app => test}/test-pipeline/pipeline_stub.c (100%)
 rename {app => test}/test-pipeline/runtime.c (100%)
 rename {app => test}/test/Makefile (100%)
 rename {app => test}/test/autotest.py (100%)
 rename {app => test}/test/autotest_data.py (100%)
 rename {app => test}/test/autotest_runner.py (100%)
 rename {app => test}/test/autotest_test_funcs.py (100%)
 rename {app => test}/test/commands.c (100%)
 rename {app => test}/test/packet_burst_generator.c (100%)
 rename {app => test}/test/packet_burst_generator.h (100%)
 rename {app => test}/test/process.h (100%)
 rename {app => test}/test/resource.c (100%)
 rename {app => test}/test/resource.h (100%)
 rename {app => test}/test/test.c (100%)
 rename {app => test}/test/test.h (100%)
 rename {app => test}/test/test_acl.c (100%)
 rename {app => test}/test/test_acl.h (100%)
 rename {app => test}/test/test_alarm.c (100%)
 rename {app => test}/test/test_atomic.c (100%)
 rename {app => test}/test/test_byteorder.c (100%)
 rename {app => test}/test/test_cmdline.c (100%)
 rename {app => test}/test/test_cmdline.h (100%)
 rename {app => test}/test/test_cmdline_cirbuf.c (100%)
 rename {app => test}/test/test_cmdline_etheraddr.c (100%)
 rename {app => test}/test/test_cmdline_ipaddr.c (100%)
 rename {app => test}/test/test_cmdline_lib.c (100%)
 rename {app => test}/test/test_cmdline_num.c (100%)
 rename {app => test}/test/test_cmdline_portlist.c (100%)
 rename {app => test}/test/test_cmdline_string.c (100%)
 rename {app => test}/test/test_common.c (100%)
 rename {app => test}/test/test_cpuflags.c (100%)
 rename {app => test}/test/test_cryptodev.c (100%)
 rename {app => test}/test/test_cryptodev.h (100%)
 rename {app => test}/test/test_cryptodev_aes_test_vectors.h (100%)
 rename {app => test}/test/test_cryptodev_blockcipher.c (100%)
 rename {app => test}/test/test_cryptodev_blockcipher.h (100%)
 rename {app => test}/test/test_cryptodev_des_test_vectors.h (100%)
 rename {app => test}/test/test_cryptodev_gcm_test_vectors.h (100%)
 rename {app => test}/test/test_cryptodev_hash_test_vectors.h (100%)
 rename {app => test}/test/test_cryptodev_hmac_test_vectors.h (100%)
 rename {app => test}/test/test_cryptodev_kasumi_hash_test_vectors.h (100%)
 rename {app => test}/test/test_cryptodev_kasumi_test_vectors.h (100%)
 rename {app => test}/test/test_cryptodev_perf.c (100%)
 rename {app => test}/test/test_cryptodev_snow3g_hash_test_vectors.h (100%)
 rename {app => test}/test/test_cryptodev_snow3g_test_vectors.h (100%)
 rename {app => test}/test/test_cryptodev_zuc_hash_test_vectors.h (100%)
 rename {app => test}/test/test_cryptodev_zuc_test_vectors.h (100%)
 rename {app => test}/test/test_cycles.c (100%)
 rename {app => test}/test/test_debug.c (100%)
 rename {app => test}/test/test_devargs.c (100%)
 rename {app => test}/test/test_distributor.c (100%)
 rename {app => test}/test/test_distributor_perf.c (100%)
 rename {app => test}/test/test_eal_flags.c (100%)
 rename {app => test}/test/test_eal_fs.c (100%)
 rename {app => test}/test/test_efd.c (100%)
 rename {app => test}/test/test_efd_perf.c (100%)
 rename {app => test}/test/test_errno.c (100%)
 rename {app => test}/test/test_func_reentrancy.c (100%)
 rename {app => test}/test/test_hash.c (100%)
 rename {app => test}/test/test_hash_functions.c (100%)
 rename {app => test}/test/test_hash_multiwriter.c (100%)
 rename {app => test}/test/test_hash_perf.c (100%)
 rename {app => test}/test/test_hash_scaling.c (100%)
 rename {app => test}/test/test_interrupts.c (100%)
 rename {app => test}/test/test_kni.c (100%)
 rename {app => test}/test/test_kvargs.c (100%)
 rename {app => test}/test/test_link_bonding.c (100%)
 rename {app => test}/test/test_link_bonding_mode4.c (100%)
 rename {app => test}/test/test_link_bonding_rssconf.c (100%)
 rename {app => test}/test/test_logs.c (100%)
 rename {app => test}/test/test_lpm.c (100%)
 rename {app => test}/test/test_lpm6.c (100%)
 rename {app => test}/test/test_lpm6_data.h (100%)
 rename {app => test}/test/test_lpm6_perf.c (100%)
 rename {app => test}/test/test_lpm_perf.c (100%)
 rename {app => test}/test/test_malloc.c (100%)
 rename {app => test}/test/test_mbuf.c (100%)
 rename {app => test}/test/test_memcpy.c (100%)
 rename {app => test}/test/test_memcpy_perf.c (100%)
 rename {app => test}/test/test_memory.c (100%)
 rename {app => test}/test/test_mempool.c (100%)
 rename {app => test}/test/test_mempool_perf.c (100%)
 rename {app => test}/test/test_memzone.c (100%)
 rename {app => test}/test/test_meter.c (100%)
 rename {app => test}/test/test_mp_secondary.c (100%)
 rename {app => test}/test/test_pci.c (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/class (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/config (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/consistent_dma_mask_bits (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/device (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/dma_mask_bits (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/enable (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/irq (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/modalias (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/msi_bus (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/numa_node (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/resource (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/sriov_numvfs (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/sriov_totalvfs (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/subsystem_device (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/subsystem_vendor (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/uevent (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/vendor (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/class (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/device (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/resource (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/subsystem_device (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/subsystem_vendor (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/vendor (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/class (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/device (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/resource (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/subsystem_device (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/subsystem_vendor (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/vendor (100%)
 rename {app => test}/test/test_per_lcore.c (100%)
 rename {app => test}/test/test_pmd_perf.c (100%)
 rename {app => test}/test/test_pmd_ring.c (100%)
 rename {app => test}/test/test_pmd_ring_perf.c (100%)
 rename {app => test}/test/test_power.c (100%)
 rename {app => test}/test/test_power_acpi_cpufreq.c (100%)
 rename {app => test}/test/test_power_kvm_vm.c (100%)
 rename {app => test}/test/test_prefetch.c (100%)
 rename {app => test}/test/test_red.c (100%)
 rename {app => test}/test/test_reorder.c (100%)
 rename {app => test}/test/test_resource.c (100%)
 rename {app => test}/test/test_ring.c (100%)
 rename {app => test}/test/test_ring_perf.c (100%)
 rename {app => test}/test/test_rwlock.c (100%)
 rename {app => test}/test/test_sched.c (100%)
 rename {app => test}/test/test_spinlock.c (100%)
 rename {app => test}/test/test_string_fns.c (100%)
 rename {app => test}/test/test_table.c (100%)
 rename {app => test}/test/test_table.h (100%)
 rename {app => test}/test/test_table_acl.c (100%)
 rename {app => test}/test/test_table_acl.h (100%)
 rename {app => test}/test/test_table_combined.c (100%)
 rename {app => test}/test/test_table_combined.h (100%)
 rename {app => test}/test/test_table_pipeline.c (100%)
 rename {app => test}/test/test_table_pipeline.h (100%)
 rename {app => test}/test/test_table_ports.c (100%)
 rename {app => test}/test/test_table_ports.h (100%)
 rename {app => test}/test/test_table_tables.c (100%)
 rename {app => test}/test/test_table_tables.h (100%)
 rename {app => test}/test/test_tailq.c (100%)
 rename {app => test}/test/test_thash.c (100%)
 rename {app => test}/test/test_timer.c (100%)
 rename {app => test}/test/test_timer_perf.c (100%)
 rename {app => test}/test/test_timer_racecond.c (100%)
 rename {app => test}/test/test_version.c (100%)
 rename {app => test}/test/test_xmmt_ops.h (100%)
 rename {app => test}/test/virtual_pmd.c (100%)
 rename {app => test}/test/virtual_pmd.h (100%)

diff --git a/GNUmakefile b/GNUmakefile
index 00fe0db..b1a5b76 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -40,6 +40,6 @@ export RTE_SDK
 # directory list
 #
 
-ROOTDIRS-y := buildtools lib drivers app
+ROOTDIRS-y := buildtools lib drivers app test
 
 include $(RTE_SDK)/mk/rte.sdkroot.mk
diff --git a/app/Makefile b/app/Makefile
index 1a974a5..4b3a448 100644
--- a/app/Makefile
+++ b/app/Makefile
@@ -31,12 +31,8 @@
 
 include $(RTE_SDK)/mk/rte.vars.mk
 
-DIRS-$(CONFIG_RTE_APP_TEST) += test
-DIRS-$(CONFIG_RTE_LIBRTE_ACL) += test-acl
-DIRS-$(CONFIG_RTE_LIBRTE_PIPELINE) += test-pipeline
 DIRS-$(CONFIG_RTE_TEST_PMD) += test-pmd
 DIRS-$(CONFIG_RTE_APP_CRYPTO_PERF) += test-crypto-perf
-DIRS-$(CONFIG_RTE_LIBRTE_CMDLINE) += cmdline_test
 DIRS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += proc_info
 DIRS-$(CONFIG_RTE_LIBRTE_PDUMP) += pdump
 
diff --git a/mk/rte.sdktest.mk b/mk/rte.sdktest.mk
index ddbbbf6..1cdb40b 100644
--- a/mk/rte.sdktest.mk
+++ b/mk/rte.sdktest.mk
@@ -57,7 +57,7 @@ test fast_test perf_test:
 	@mkdir -p $(AUTOTEST_DIR) ; \
 	cd $(AUTOTEST_DIR) ; \
 	if [ -f $(RTE_OUTPUT)/app/test ]; then \
-		python $(RTE_SDK)/app/test/autotest.py \
+		python $(RTE_SDK)/test/test/autotest.py \
 			$(RTE_OUTPUT)/app/test \
 			$(RTE_TARGET) \
 			$(BLACKLIST) $(WHITELIST); \
@@ -71,10 +71,10 @@ coverage:
 	@mkdir -p $(AUTOTEST_DIR) ; \
 	cd $(AUTOTEST_DIR) ; \
 	if [ -f $(RTE_OUTPUT)/app/test ]; then \
-		python $(RTE_SDK)/app/cmdline_test/cmdline_test.py \
+		python $(RTE_SDK)/test/cmdline_test/cmdline_test.py \
 			$(RTE_OUTPUT)/app/cmdline_test; \
 		ulimit -S -n 100 ; \
-		python $(RTE_SDK)/app/test/autotest.py \
+		python $(RTE_SDK)/test/test/autotest.py \
 			$(RTE_OUTPUT)/app/test \
 			$(RTE_TARGET) \
 			$(BLACKLIST) $(WHITELIST) ; \
diff --git a/test/Makefile b/test/Makefile
new file mode 100644
index 0000000..e996fd8
--- /dev/null
+++ b/test/Makefile
@@ -0,0 +1,39 @@
+#   BSD LICENSE
+#
+#   Copyright(c) 2017 Intel Corporation. All rights reserved.
+#   All rights reserved.
+#
+#   Redistribution and use in source and binary forms, with or without
+#   modification, are permitted provided that the following conditions
+#   are met:
+#
+#     * Redistributions of source code must retain the above copyright
+#       notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above copyright
+#       notice, this list of conditions and the following disclaimer in
+#       the documentation and/or other materials provided with the
+#       distribution.
+#     * Neither the name of Intel Corporation nor the names of its
+#       contributors may be used to endorse or promote products derived
+#       from this software without specific prior written permission.
+#
+#   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+#   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+#   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+#   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+#   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+#   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+#   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+#   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+#   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+include $(RTE_SDK)/mk/rte.vars.mk
+
+DIRS-$(CONFIG_RTE_APP_TEST) += test
+DIRS-$(CONFIG_RTE_LIBRTE_ACL) += test-acl
+DIRS-$(CONFIG_RTE_LIBRTE_PIPELINE) += test-pipeline
+DIRS-$(CONFIG_RTE_LIBRTE_CMDLINE) += cmdline_test
+
+include $(RTE_SDK)/mk/rte.subdir.mk
diff --git a/app/cmdline_test/Makefile b/test/cmdline_test/Makefile
similarity index 100%
rename from app/cmdline_test/Makefile
rename to test/cmdline_test/Makefile
diff --git a/app/cmdline_test/cmdline_test.c b/test/cmdline_test/cmdline_test.c
similarity index 100%
rename from app/cmdline_test/cmdline_test.c
rename to test/cmdline_test/cmdline_test.c
diff --git a/app/cmdline_test/cmdline_test.h b/test/cmdline_test/cmdline_test.h
similarity index 100%
rename from app/cmdline_test/cmdline_test.h
rename to test/cmdline_test/cmdline_test.h
diff --git a/app/cmdline_test/cmdline_test.py b/test/cmdline_test/cmdline_test.py
similarity index 100%
rename from app/cmdline_test/cmdline_test.py
rename to test/cmdline_test/cmdline_test.py
diff --git a/app/cmdline_test/cmdline_test_data.py b/test/cmdline_test/cmdline_test_data.py
similarity index 100%
rename from app/cmdline_test/cmdline_test_data.py
rename to test/cmdline_test/cmdline_test_data.py
diff --git a/app/cmdline_test/commands.c b/test/cmdline_test/commands.c
similarity index 100%
rename from app/cmdline_test/commands.c
rename to test/cmdline_test/commands.c
diff --git a/app/test-acl/Makefile b/test/test-acl/Makefile
similarity index 100%
rename from app/test-acl/Makefile
rename to test/test-acl/Makefile
diff --git a/app/test-acl/main.c b/test/test-acl/main.c
similarity index 100%
rename from app/test-acl/main.c
rename to test/test-acl/main.c
diff --git a/app/test-pipeline/Makefile b/test/test-pipeline/Makefile
similarity index 100%
rename from app/test-pipeline/Makefile
rename to test/test-pipeline/Makefile
diff --git a/app/test-pipeline/config.c b/test/test-pipeline/config.c
similarity index 100%
rename from app/test-pipeline/config.c
rename to test/test-pipeline/config.c
diff --git a/app/test-pipeline/init.c b/test/test-pipeline/init.c
similarity index 100%
rename from app/test-pipeline/init.c
rename to test/test-pipeline/init.c
diff --git a/app/test-pipeline/main.c b/test/test-pipeline/main.c
similarity index 100%
rename from app/test-pipeline/main.c
rename to test/test-pipeline/main.c
diff --git a/app/test-pipeline/main.h b/test/test-pipeline/main.h
similarity index 100%
rename from app/test-pipeline/main.h
rename to test/test-pipeline/main.h
diff --git a/app/test-pipeline/pipeline_acl.c b/test/test-pipeline/pipeline_acl.c
similarity index 100%
rename from app/test-pipeline/pipeline_acl.c
rename to test/test-pipeline/pipeline_acl.c
diff --git a/app/test-pipeline/pipeline_hash.c b/test/test-pipeline/pipeline_hash.c
similarity index 100%
rename from app/test-pipeline/pipeline_hash.c
rename to test/test-pipeline/pipeline_hash.c
diff --git a/app/test-pipeline/pipeline_lpm.c b/test/test-pipeline/pipeline_lpm.c
similarity index 100%
rename from app/test-pipeline/pipeline_lpm.c
rename to test/test-pipeline/pipeline_lpm.c
diff --git a/app/test-pipeline/pipeline_lpm_ipv6.c b/test/test-pipeline/pipeline_lpm_ipv6.c
similarity index 100%
rename from app/test-pipeline/pipeline_lpm_ipv6.c
rename to test/test-pipeline/pipeline_lpm_ipv6.c
diff --git a/app/test-pipeline/pipeline_stub.c b/test/test-pipeline/pipeline_stub.c
similarity index 100%
rename from app/test-pipeline/pipeline_stub.c
rename to test/test-pipeline/pipeline_stub.c
diff --git a/app/test-pipeline/runtime.c b/test/test-pipeline/runtime.c
similarity index 100%
rename from app/test-pipeline/runtime.c
rename to test/test-pipeline/runtime.c
diff --git a/app/test/Makefile b/test/test/Makefile
similarity index 100%
rename from app/test/Makefile
rename to test/test/Makefile
diff --git a/app/test/autotest.py b/test/test/autotest.py
similarity index 100%
rename from app/test/autotest.py
rename to test/test/autotest.py
diff --git a/app/test/autotest_data.py b/test/test/autotest_data.py
similarity index 100%
rename from app/test/autotest_data.py
rename to test/test/autotest_data.py
diff --git a/app/test/autotest_runner.py b/test/test/autotest_runner.py
similarity index 100%
rename from app/test/autotest_runner.py
rename to test/test/autotest_runner.py
diff --git a/app/test/autotest_test_funcs.py b/test/test/autotest_test_funcs.py
similarity index 100%
rename from app/test/autotest_test_funcs.py
rename to test/test/autotest_test_funcs.py
diff --git a/app/test/commands.c b/test/test/commands.c
similarity index 100%
rename from app/test/commands.c
rename to test/test/commands.c
diff --git a/app/test/packet_burst_generator.c b/test/test/packet_burst_generator.c
similarity index 100%
rename from app/test/packet_burst_generator.c
rename to test/test/packet_burst_generator.c
diff --git a/app/test/packet_burst_generator.h b/test/test/packet_burst_generator.h
similarity index 100%
rename from app/test/packet_burst_generator.h
rename to test/test/packet_burst_generator.h
diff --git a/app/test/process.h b/test/test/process.h
similarity index 100%
rename from app/test/process.h
rename to test/test/process.h
diff --git a/app/test/resource.c b/test/test/resource.c
similarity index 100%
rename from app/test/resource.c
rename to test/test/resource.c
diff --git a/app/test/resource.h b/test/test/resource.h
similarity index 100%
rename from app/test/resource.h
rename to test/test/resource.h
diff --git a/app/test/test.c b/test/test/test.c
similarity index 100%
rename from app/test/test.c
rename to test/test/test.c
diff --git a/app/test/test.h b/test/test/test.h
similarity index 100%
rename from app/test/test.h
rename to test/test/test.h
diff --git a/app/test/test_acl.c b/test/test/test_acl.c
similarity index 100%
rename from app/test/test_acl.c
rename to test/test/test_acl.c
diff --git a/app/test/test_acl.h b/test/test/test_acl.h
similarity index 100%
rename from app/test/test_acl.h
rename to test/test/test_acl.h
diff --git a/app/test/test_alarm.c b/test/test/test_alarm.c
similarity index 100%
rename from app/test/test_alarm.c
rename to test/test/test_alarm.c
diff --git a/app/test/test_atomic.c b/test/test/test_atomic.c
similarity index 100%
rename from app/test/test_atomic.c
rename to test/test/test_atomic.c
diff --git a/app/test/test_byteorder.c b/test/test/test_byteorder.c
similarity index 100%
rename from app/test/test_byteorder.c
rename to test/test/test_byteorder.c
diff --git a/app/test/test_cmdline.c b/test/test/test_cmdline.c
similarity index 100%
rename from app/test/test_cmdline.c
rename to test/test/test_cmdline.c
diff --git a/app/test/test_cmdline.h b/test/test/test_cmdline.h
similarity index 100%
rename from app/test/test_cmdline.h
rename to test/test/test_cmdline.h
diff --git a/app/test/test_cmdline_cirbuf.c b/test/test/test_cmdline_cirbuf.c
similarity index 100%
rename from app/test/test_cmdline_cirbuf.c
rename to test/test/test_cmdline_cirbuf.c
diff --git a/app/test/test_cmdline_etheraddr.c b/test/test/test_cmdline_etheraddr.c
similarity index 100%
rename from app/test/test_cmdline_etheraddr.c
rename to test/test/test_cmdline_etheraddr.c
diff --git a/app/test/test_cmdline_ipaddr.c b/test/test/test_cmdline_ipaddr.c
similarity index 100%
rename from app/test/test_cmdline_ipaddr.c
rename to test/test/test_cmdline_ipaddr.c
diff --git a/app/test/test_cmdline_lib.c b/test/test/test_cmdline_lib.c
similarity index 100%
rename from app/test/test_cmdline_lib.c
rename to test/test/test_cmdline_lib.c
diff --git a/app/test/test_cmdline_num.c b/test/test/test_cmdline_num.c
similarity index 100%
rename from app/test/test_cmdline_num.c
rename to test/test/test_cmdline_num.c
diff --git a/app/test/test_cmdline_portlist.c b/test/test/test_cmdline_portlist.c
similarity index 100%
rename from app/test/test_cmdline_portlist.c
rename to test/test/test_cmdline_portlist.c
diff --git a/app/test/test_cmdline_string.c b/test/test/test_cmdline_string.c
similarity index 100%
rename from app/test/test_cmdline_string.c
rename to test/test/test_cmdline_string.c
diff --git a/app/test/test_common.c b/test/test/test_common.c
similarity index 100%
rename from app/test/test_common.c
rename to test/test/test_common.c
diff --git a/app/test/test_cpuflags.c b/test/test/test_cpuflags.c
similarity index 100%
rename from app/test/test_cpuflags.c
rename to test/test/test_cpuflags.c
diff --git a/app/test/test_cryptodev.c b/test/test/test_cryptodev.c
similarity index 100%
rename from app/test/test_cryptodev.c
rename to test/test/test_cryptodev.c
diff --git a/app/test/test_cryptodev.h b/test/test/test_cryptodev.h
similarity index 100%
rename from app/test/test_cryptodev.h
rename to test/test/test_cryptodev.h
diff --git a/app/test/test_cryptodev_aes_test_vectors.h b/test/test/test_cryptodev_aes_test_vectors.h
similarity index 100%
rename from app/test/test_cryptodev_aes_test_vectors.h
rename to test/test/test_cryptodev_aes_test_vectors.h
diff --git a/app/test/test_cryptodev_blockcipher.c b/test/test/test_cryptodev_blockcipher.c
similarity index 100%
rename from app/test/test_cryptodev_blockcipher.c
rename to test/test/test_cryptodev_blockcipher.c
diff --git a/app/test/test_cryptodev_blockcipher.h b/test/test/test_cryptodev_blockcipher.h
similarity index 100%
rename from app/test/test_cryptodev_blockcipher.h
rename to test/test/test_cryptodev_blockcipher.h
diff --git a/app/test/test_cryptodev_des_test_vectors.h b/test/test/test_cryptodev_des_test_vectors.h
similarity index 100%
rename from app/test/test_cryptodev_des_test_vectors.h
rename to test/test/test_cryptodev_des_test_vectors.h
diff --git a/app/test/test_cryptodev_gcm_test_vectors.h b/test/test/test_cryptodev_gcm_test_vectors.h
similarity index 100%
rename from app/test/test_cryptodev_gcm_test_vectors.h
rename to test/test/test_cryptodev_gcm_test_vectors.h
diff --git a/app/test/test_cryptodev_hash_test_vectors.h b/test/test/test_cryptodev_hash_test_vectors.h
similarity index 100%
rename from app/test/test_cryptodev_hash_test_vectors.h
rename to test/test/test_cryptodev_hash_test_vectors.h
diff --git a/app/test/test_cryptodev_hmac_test_vectors.h b/test/test/test_cryptodev_hmac_test_vectors.h
similarity index 100%
rename from app/test/test_cryptodev_hmac_test_vectors.h
rename to test/test/test_cryptodev_hmac_test_vectors.h
diff --git a/app/test/test_cryptodev_kasumi_hash_test_vectors.h b/test/test/test_cryptodev_kasumi_hash_test_vectors.h
similarity index 100%
rename from app/test/test_cryptodev_kasumi_hash_test_vectors.h
rename to test/test/test_cryptodev_kasumi_hash_test_vectors.h
diff --git a/app/test/test_cryptodev_kasumi_test_vectors.h b/test/test/test_cryptodev_kasumi_test_vectors.h
similarity index 100%
rename from app/test/test_cryptodev_kasumi_test_vectors.h
rename to test/test/test_cryptodev_kasumi_test_vectors.h
diff --git a/app/test/test_cryptodev_perf.c b/test/test/test_cryptodev_perf.c
similarity index 100%
rename from app/test/test_cryptodev_perf.c
rename to test/test/test_cryptodev_perf.c
diff --git a/app/test/test_cryptodev_snow3g_hash_test_vectors.h b/test/test/test_cryptodev_snow3g_hash_test_vectors.h
similarity index 100%
rename from app/test/test_cryptodev_snow3g_hash_test_vectors.h
rename to test/test/test_cryptodev_snow3g_hash_test_vectors.h
diff --git a/app/test/test_cryptodev_snow3g_test_vectors.h b/test/test/test_cryptodev_snow3g_test_vectors.h
similarity index 100%
rename from app/test/test_cryptodev_snow3g_test_vectors.h
rename to test/test/test_cryptodev_snow3g_test_vectors.h
diff --git a/app/test/test_cryptodev_zuc_hash_test_vectors.h b/test/test/test_cryptodev_zuc_hash_test_vectors.h
similarity index 100%
rename from app/test/test_cryptodev_zuc_hash_test_vectors.h
rename to test/test/test_cryptodev_zuc_hash_test_vectors.h
diff --git a/app/test/test_cryptodev_zuc_test_vectors.h b/test/test/test_cryptodev_zuc_test_vectors.h
similarity index 100%
rename from app/test/test_cryptodev_zuc_test_vectors.h
rename to test/test/test_cryptodev_zuc_test_vectors.h
diff --git a/app/test/test_cycles.c b/test/test/test_cycles.c
similarity index 100%
rename from app/test/test_cycles.c
rename to test/test/test_cycles.c
diff --git a/app/test/test_debug.c b/test/test/test_debug.c
similarity index 100%
rename from app/test/test_debug.c
rename to test/test/test_debug.c
diff --git a/app/test/test_devargs.c b/test/test/test_devargs.c
similarity index 100%
rename from app/test/test_devargs.c
rename to test/test/test_devargs.c
diff --git a/app/test/test_distributor.c b/test/test/test_distributor.c
similarity index 100%
rename from app/test/test_distributor.c
rename to test/test/test_distributor.c
diff --git a/app/test/test_distributor_perf.c b/test/test/test_distributor_perf.c
similarity index 100%
rename from app/test/test_distributor_perf.c
rename to test/test/test_distributor_perf.c
diff --git a/app/test/test_eal_flags.c b/test/test/test_eal_flags.c
similarity index 100%
rename from app/test/test_eal_flags.c
rename to test/test/test_eal_flags.c
diff --git a/app/test/test_eal_fs.c b/test/test/test_eal_fs.c
similarity index 100%
rename from app/test/test_eal_fs.c
rename to test/test/test_eal_fs.c
diff --git a/app/test/test_efd.c b/test/test/test_efd.c
similarity index 100%
rename from app/test/test_efd.c
rename to test/test/test_efd.c
diff --git a/app/test/test_efd_perf.c b/test/test/test_efd_perf.c
similarity index 100%
rename from app/test/test_efd_perf.c
rename to test/test/test_efd_perf.c
diff --git a/app/test/test_errno.c b/test/test/test_errno.c
similarity index 100%
rename from app/test/test_errno.c
rename to test/test/test_errno.c
diff --git a/app/test/test_func_reentrancy.c b/test/test/test_func_reentrancy.c
similarity index 100%
rename from app/test/test_func_reentrancy.c
rename to test/test/test_func_reentrancy.c
diff --git a/app/test/test_hash.c b/test/test/test_hash.c
similarity index 100%
rename from app/test/test_hash.c
rename to test/test/test_hash.c
diff --git a/app/test/test_hash_functions.c b/test/test/test_hash_functions.c
similarity index 100%
rename from app/test/test_hash_functions.c
rename to test/test/test_hash_functions.c
diff --git a/app/test/test_hash_multiwriter.c b/test/test/test_hash_multiwriter.c
similarity index 100%
rename from app/test/test_hash_multiwriter.c
rename to test/test/test_hash_multiwriter.c
diff --git a/app/test/test_hash_perf.c b/test/test/test_hash_perf.c
similarity index 100%
rename from app/test/test_hash_perf.c
rename to test/test/test_hash_perf.c
diff --git a/app/test/test_hash_scaling.c b/test/test/test_hash_scaling.c
similarity index 100%
rename from app/test/test_hash_scaling.c
rename to test/test/test_hash_scaling.c
diff --git a/app/test/test_interrupts.c b/test/test/test_interrupts.c
similarity index 100%
rename from app/test/test_interrupts.c
rename to test/test/test_interrupts.c
diff --git a/app/test/test_kni.c b/test/test/test_kni.c
similarity index 100%
rename from app/test/test_kni.c
rename to test/test/test_kni.c
diff --git a/app/test/test_kvargs.c b/test/test/test_kvargs.c
similarity index 100%
rename from app/test/test_kvargs.c
rename to test/test/test_kvargs.c
diff --git a/app/test/test_link_bonding.c b/test/test/test_link_bonding.c
similarity index 100%
rename from app/test/test_link_bonding.c
rename to test/test/test_link_bonding.c
diff --git a/app/test/test_link_bonding_mode4.c b/test/test/test_link_bonding_mode4.c
similarity index 100%
rename from app/test/test_link_bonding_mode4.c
rename to test/test/test_link_bonding_mode4.c
diff --git a/app/test/test_link_bonding_rssconf.c b/test/test/test_link_bonding_rssconf.c
similarity index 100%
rename from app/test/test_link_bonding_rssconf.c
rename to test/test/test_link_bonding_rssconf.c
diff --git a/app/test/test_logs.c b/test/test/test_logs.c
similarity index 100%
rename from app/test/test_logs.c
rename to test/test/test_logs.c
diff --git a/app/test/test_lpm.c b/test/test/test_lpm.c
similarity index 100%
rename from app/test/test_lpm.c
rename to test/test/test_lpm.c
diff --git a/app/test/test_lpm6.c b/test/test/test_lpm6.c
similarity index 100%
rename from app/test/test_lpm6.c
rename to test/test/test_lpm6.c
diff --git a/app/test/test_lpm6_data.h b/test/test/test_lpm6_data.h
similarity index 100%
rename from app/test/test_lpm6_data.h
rename to test/test/test_lpm6_data.h
diff --git a/app/test/test_lpm6_perf.c b/test/test/test_lpm6_perf.c
similarity index 100%
rename from app/test/test_lpm6_perf.c
rename to test/test/test_lpm6_perf.c
diff --git a/app/test/test_lpm_perf.c b/test/test/test_lpm_perf.c
similarity index 100%
rename from app/test/test_lpm_perf.c
rename to test/test/test_lpm_perf.c
diff --git a/app/test/test_malloc.c b/test/test/test_malloc.c
similarity index 100%
rename from app/test/test_malloc.c
rename to test/test/test_malloc.c
diff --git a/app/test/test_mbuf.c b/test/test/test_mbuf.c
similarity index 100%
rename from app/test/test_mbuf.c
rename to test/test/test_mbuf.c
diff --git a/app/test/test_memcpy.c b/test/test/test_memcpy.c
similarity index 100%
rename from app/test/test_memcpy.c
rename to test/test/test_memcpy.c
diff --git a/app/test/test_memcpy_perf.c b/test/test/test_memcpy_perf.c
similarity index 100%
rename from app/test/test_memcpy_perf.c
rename to test/test/test_memcpy_perf.c
diff --git a/app/test/test_memory.c b/test/test/test_memory.c
similarity index 100%
rename from app/test/test_memory.c
rename to test/test/test_memory.c
diff --git a/app/test/test_mempool.c b/test/test/test_mempool.c
similarity index 100%
rename from app/test/test_mempool.c
rename to test/test/test_mempool.c
diff --git a/app/test/test_mempool_perf.c b/test/test/test_mempool_perf.c
similarity index 100%
rename from app/test/test_mempool_perf.c
rename to test/test/test_mempool_perf.c
diff --git a/app/test/test_memzone.c b/test/test/test_memzone.c
similarity index 100%
rename from app/test/test_memzone.c
rename to test/test/test_memzone.c
diff --git a/app/test/test_meter.c b/test/test/test_meter.c
similarity index 100%
rename from app/test/test_meter.c
rename to test/test/test_meter.c
diff --git a/app/test/test_mp_secondary.c b/test/test/test_mp_secondary.c
similarity index 100%
rename from app/test/test_mp_secondary.c
rename to test/test/test_mp_secondary.c
diff --git a/app/test/test_pci.c b/test/test/test_pci.c
similarity index 100%
rename from app/test/test_pci.c
rename to test/test/test_pci.c
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/class b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/class
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/class
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/class
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/config b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/config
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/config
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/config
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/consistent_dma_mask_bits b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/consistent_dma_mask_bits
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/consistent_dma_mask_bits
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/consistent_dma_mask_bits
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/device b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/device
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/device
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/device
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/dma_mask_bits b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/dma_mask_bits
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/dma_mask_bits
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/dma_mask_bits
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/enable b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/enable
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/enable
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/enable
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/irq b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/irq
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/irq
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/irq
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/modalias b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/modalias
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/modalias
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/modalias
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/msi_bus b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/msi_bus
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/msi_bus
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/msi_bus
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/numa_node b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/numa_node
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/numa_node
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/numa_node
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/resource b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/resource
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/resource
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/resource
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/sriov_numvfs b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/sriov_numvfs
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/sriov_numvfs
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/sriov_numvfs
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/sriov_totalvfs b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/sriov_totalvfs
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/sriov_totalvfs
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/sriov_totalvfs
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/subsystem_device b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/subsystem_device
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/subsystem_device
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/subsystem_device
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/subsystem_vendor b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/subsystem_vendor
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/subsystem_vendor
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/subsystem_vendor
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/uevent b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/uevent
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/uevent
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/uevent
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/vendor b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/vendor
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/vendor
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/vendor
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/class b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/class
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/class
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/class
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/device b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/device
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/device
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/device
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/resource b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/resource
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/resource
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/resource
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/subsystem_device b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/subsystem_device
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/subsystem_device
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/subsystem_device
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/subsystem_vendor b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/subsystem_vendor
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/subsystem_vendor
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/subsystem_vendor
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/vendor b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/vendor
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/vendor
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/vendor
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/class b/test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/class
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/class
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/class
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/device b/test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/device
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/device
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/device
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/resource b/test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/resource
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/resource
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/resource
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/subsystem_device b/test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/subsystem_device
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/subsystem_device
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/subsystem_device
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/subsystem_vendor b/test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/subsystem_vendor
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/subsystem_vendor
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/subsystem_vendor
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/vendor b/test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/vendor
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/vendor
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/vendor
diff --git a/app/test/test_per_lcore.c b/test/test/test_per_lcore.c
similarity index 100%
rename from app/test/test_per_lcore.c
rename to test/test/test_per_lcore.c
diff --git a/app/test/test_pmd_perf.c b/test/test/test_pmd_perf.c
similarity index 100%
rename from app/test/test_pmd_perf.c
rename to test/test/test_pmd_perf.c
diff --git a/app/test/test_pmd_ring.c b/test/test/test_pmd_ring.c
similarity index 100%
rename from app/test/test_pmd_ring.c
rename to test/test/test_pmd_ring.c
diff --git a/app/test/test_pmd_ring_perf.c b/test/test/test_pmd_ring_perf.c
similarity index 100%
rename from app/test/test_pmd_ring_perf.c
rename to test/test/test_pmd_ring_perf.c
diff --git a/app/test/test_power.c b/test/test/test_power.c
similarity index 100%
rename from app/test/test_power.c
rename to test/test/test_power.c
diff --git a/app/test/test_power_acpi_cpufreq.c b/test/test/test_power_acpi_cpufreq.c
similarity index 100%
rename from app/test/test_power_acpi_cpufreq.c
rename to test/test/test_power_acpi_cpufreq.c
diff --git a/app/test/test_power_kvm_vm.c b/test/test/test_power_kvm_vm.c
similarity index 100%
rename from app/test/test_power_kvm_vm.c
rename to test/test/test_power_kvm_vm.c
diff --git a/app/test/test_prefetch.c b/test/test/test_prefetch.c
similarity index 100%
rename from app/test/test_prefetch.c
rename to test/test/test_prefetch.c
diff --git a/app/test/test_red.c b/test/test/test_red.c
similarity index 100%
rename from app/test/test_red.c
rename to test/test/test_red.c
diff --git a/app/test/test_reorder.c b/test/test/test_reorder.c
similarity index 100%
rename from app/test/test_reorder.c
rename to test/test/test_reorder.c
diff --git a/app/test/test_resource.c b/test/test/test_resource.c
similarity index 100%
rename from app/test/test_resource.c
rename to test/test/test_resource.c
diff --git a/app/test/test_ring.c b/test/test/test_ring.c
similarity index 100%
rename from app/test/test_ring.c
rename to test/test/test_ring.c
diff --git a/app/test/test_ring_perf.c b/test/test/test_ring_perf.c
similarity index 100%
rename from app/test/test_ring_perf.c
rename to test/test/test_ring_perf.c
diff --git a/app/test/test_rwlock.c b/test/test/test_rwlock.c
similarity index 100%
rename from app/test/test_rwlock.c
rename to test/test/test_rwlock.c
diff --git a/app/test/test_sched.c b/test/test/test_sched.c
similarity index 100%
rename from app/test/test_sched.c
rename to test/test/test_sched.c
diff --git a/app/test/test_spinlock.c b/test/test/test_spinlock.c
similarity index 100%
rename from app/test/test_spinlock.c
rename to test/test/test_spinlock.c
diff --git a/app/test/test_string_fns.c b/test/test/test_string_fns.c
similarity index 100%
rename from app/test/test_string_fns.c
rename to test/test/test_string_fns.c
diff --git a/app/test/test_table.c b/test/test/test_table.c
similarity index 100%
rename from app/test/test_table.c
rename to test/test/test_table.c
diff --git a/app/test/test_table.h b/test/test/test_table.h
similarity index 100%
rename from app/test/test_table.h
rename to test/test/test_table.h
diff --git a/app/test/test_table_acl.c b/test/test/test_table_acl.c
similarity index 100%
rename from app/test/test_table_acl.c
rename to test/test/test_table_acl.c
diff --git a/app/test/test_table_acl.h b/test/test/test_table_acl.h
similarity index 100%
rename from app/test/test_table_acl.h
rename to test/test/test_table_acl.h
diff --git a/app/test/test_table_combined.c b/test/test/test_table_combined.c
similarity index 100%
rename from app/test/test_table_combined.c
rename to test/test/test_table_combined.c
diff --git a/app/test/test_table_combined.h b/test/test/test_table_combined.h
similarity index 100%
rename from app/test/test_table_combined.h
rename to test/test/test_table_combined.h
diff --git a/app/test/test_table_pipeline.c b/test/test/test_table_pipeline.c
similarity index 100%
rename from app/test/test_table_pipeline.c
rename to test/test/test_table_pipeline.c
diff --git a/app/test/test_table_pipeline.h b/test/test/test_table_pipeline.h
similarity index 100%
rename from app/test/test_table_pipeline.h
rename to test/test/test_table_pipeline.h
diff --git a/app/test/test_table_ports.c b/test/test/test_table_ports.c
similarity index 100%
rename from app/test/test_table_ports.c
rename to test/test/test_table_ports.c
diff --git a/app/test/test_table_ports.h b/test/test/test_table_ports.h
similarity index 100%
rename from app/test/test_table_ports.h
rename to test/test/test_table_ports.h
diff --git a/app/test/test_table_tables.c b/test/test/test_table_tables.c
similarity index 100%
rename from app/test/test_table_tables.c
rename to test/test/test_table_tables.c
diff --git a/app/test/test_table_tables.h b/test/test/test_table_tables.h
similarity index 100%
rename from app/test/test_table_tables.h
rename to test/test/test_table_tables.h
diff --git a/app/test/test_tailq.c b/test/test/test_tailq.c
similarity index 100%
rename from app/test/test_tailq.c
rename to test/test/test_tailq.c
diff --git a/app/test/test_thash.c b/test/test/test_thash.c
similarity index 100%
rename from app/test/test_thash.c
rename to test/test/test_thash.c
diff --git a/app/test/test_timer.c b/test/test/test_timer.c
similarity index 100%
rename from app/test/test_timer.c
rename to test/test/test_timer.c
diff --git a/app/test/test_timer_perf.c b/test/test/test_timer_perf.c
similarity index 100%
rename from app/test/test_timer_perf.c
rename to test/test/test_timer_perf.c
diff --git a/app/test/test_timer_racecond.c b/test/test/test_timer_racecond.c
similarity index 100%
rename from app/test/test_timer_racecond.c
rename to test/test/test_timer_racecond.c
diff --git a/app/test/test_version.c b/test/test/test_version.c
similarity index 100%
rename from app/test/test_version.c
rename to test/test/test_version.c
diff --git a/app/test/test_xmmt_ops.h b/test/test/test_xmmt_ops.h
similarity index 100%
rename from app/test/test_xmmt_ops.h
rename to test/test/test_xmmt_ops.h
diff --git a/app/test/virtual_pmd.c b/test/test/virtual_pmd.c
similarity index 100%
rename from app/test/virtual_pmd.c
rename to test/test/virtual_pmd.c
diff --git a/app/test/virtual_pmd.h b/test/test/virtual_pmd.h
similarity index 100%
rename from app/test/virtual_pmd.h
rename to test/test/virtual_pmd.h
-- 
2.9.3

^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH 2/4] mk: do not build tests by default
  2017-02-15 15:26 ` [PATCH 1/4] " Ferruh Yigit
@ 2017-02-15 15:26   ` Ferruh Yigit
  2017-02-15 16:58     ` Thomas Monjalon
  2017-02-15 15:26   ` [PATCH 3/4] mk: add new test-run make rule Ferruh Yigit
                     ` (3 subsequent siblings)
  4 siblings, 1 reply; 34+ messages in thread
From: Ferruh Yigit @ 2017-02-15 15:26 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: dev, Ferruh Yigit, Bruce Richardson, John McNamara, Keith Wiles

Don't build tests with default "make" command.

Require explicit command to build tests because not everybody interested
in running unit tests.

Following changes done in make rules:
"make test-build"  <--- Added
"make test"        <--- Updated functionality (build + run)

Now "make test" builds all tests and runs unit test (test).

Because of dependency resolving, it is possible to call "make test"
directly after config, "make test" will compile dependent components
(lib and drivers, but not apps).

And a new "make test-build" make rule added which will build
tests but not run unit test. "make test-build" has same dependency
resolving features with "make test"

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 GNUmakefile          | 2 +-
 mk/rte.sdkbuild.mk   | 6 +++---
 mk/rte.sdkdepdirs.mk | 2 +-
 mk/rte.sdkroot.mk    | 7 +++++++
 4 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/GNUmakefile b/GNUmakefile
index b1a5b76..00fe0db 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -40,6 +40,6 @@ export RTE_SDK
 # directory list
 #
 
-ROOTDIRS-y := buildtools lib drivers app test
+ROOTDIRS-y := buildtools lib drivers app
 
 include $(RTE_SDK)/mk/rte.sdkroot.mk
diff --git a/mk/rte.sdkbuild.mk b/mk/rte.sdkbuild.mk
index db6b983..21e0a47 100644
--- a/mk/rte.sdkbuild.mk
+++ b/mk/rte.sdkbuild.mk
@@ -48,7 +48,7 @@ define depdirs_rule
 $(1): $(sort $(LOCAL_DEPDIRS-$(1)))
 endef
 
-$(foreach d,$(ROOTDIRS-y),$(eval $(call depdirs_rule,$(d))))
+$(foreach d,$(ROOTDIRS-y) test,$(eval $(call depdirs_rule,$(d))))
 drivers: | buildtools
 
 #
@@ -73,8 +73,8 @@ clean: $(CLEANDIRS)
 	@echo Clean complete
 
 .SECONDEXPANSION:
-.PHONY: $(ROOTDIRS-y)
-$(ROOTDIRS-y):
+.PHONY: $(ROOTDIRS-y) test
+$(ROOTDIRS-y) test:
 	@[ -d $(BUILDDIR)/$@ ] || mkdir -p $(BUILDDIR)/$@
 	@echo "== Build $@"
 	$(Q)$(MAKE) S=$@ -f $(RTE_SRCDIR)/$@/Makefile -C $(BUILDDIR)/$@ all
diff --git a/mk/rte.sdkdepdirs.mk b/mk/rte.sdkdepdirs.mk
index 38fd863..f82db69 100644
--- a/mk/rte.sdkdepdirs.mk
+++ b/mk/rte.sdkdepdirs.mk
@@ -36,7 +36,7 @@ ifeq (,$(wildcard $(RTE_OUTPUT)/Makefile))
   $(error "need a make config first")
 endif
 
-DEPDIR_FILES = $(addsuffix /.depdirs, $(addprefix $(BUILDDIR)/,$(ROOTDIRS-y)))
+DEPDIR_FILES = $(addsuffix /.depdirs, $(addprefix $(BUILDDIR)/,$(ROOTDIRS-y) test))
 
 .PHONY: depdirs
 depdirs: $(RTE_OUTPUT)/.depdirs
diff --git a/mk/rte.sdkroot.mk b/mk/rte.sdkroot.mk
index 04ad523..9c23987 100644
--- a/mk/rte.sdkroot.mk
+++ b/mk/rte.sdkroot.mk
@@ -96,6 +96,13 @@ config showconfigs showversion showversionum:
 test fast_test ring_test mempool_test perf_test coverage:
 	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdktest.mk $@
 
+test: test-build
+
+.PHONY: test-buid
+test-build:
+	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkconfig.mk checkconfig
+	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkbuild.mk test
+
 .PHONY: install
 install:
 	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkinstall.mk pre_install
-- 
2.9.3

^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH 3/4] mk: add new test-run make rule
  2017-02-15 15:26 ` [PATCH 1/4] " Ferruh Yigit
  2017-02-15 15:26   ` [PATCH 2/4] mk: do not build tests by default Ferruh Yigit
@ 2017-02-15 15:26   ` Ferruh Yigit
  2017-02-15 17:07     ` Bruce Richardson
  2017-02-16  9:26     ` Thomas Monjalon
  2017-02-15 15:26   ` [PATCH 4/4] mk: rename test related make rules Ferruh Yigit
                     ` (2 subsequent siblings)
  4 siblings, 2 replies; 34+ messages in thread
From: Ferruh Yigit @ 2017-02-15 15:26 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: dev, Ferruh Yigit, Bruce Richardson, John McNamara, Keith Wiles

Since "make test" and "make test-build" does dependency resolving, they
check for all dependent components (lib and drivers) which takes a few
seconds.

This is a good feature during development, but if the target is just
running unit test, that step is unnecessary, it is possible to compile
onece and run unit test multiple times, without checking any code update

For this purpose, a new make rule "make test-run" added. Which just runs
the unit test, expects that unit test already compiled.

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 mk/rte.sdkroot.mk | 4 ++--
 mk/rte.sdktest.mk | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/mk/rte.sdkroot.mk b/mk/rte.sdkroot.mk
index 9c23987..0eb53fc 100644
--- a/mk/rte.sdkroot.mk
+++ b/mk/rte.sdkroot.mk
@@ -92,8 +92,8 @@ default: all
 config showconfigs showversion showversionum:
 	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkconfig.mk $@
 
-.PHONY: test fast_test ring_test mempool_test perf_test coverage
-test fast_test ring_test mempool_test perf_test coverage:
+.PHONY: test test-run fast_test ring_test mempool_test perf_test coverage
+test test-run fast_test ring_test mempool_test perf_test coverage:
 	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdktest.mk $@
 
 test: test-build
diff --git a/mk/rte.sdktest.mk b/mk/rte.sdktest.mk
index 1cdb40b..6455b3e 100644
--- a/mk/rte.sdktest.mk
+++ b/mk/rte.sdktest.mk
@@ -46,14 +46,14 @@ DIR := $(shell basename $(RTE_OUTPUT))
 #
 # test: launch auto-tests, very simple for now.
 #
-.PHONY: test fast_test perf_test coverage
+.PHONY: test test-run fast_test perf_test coverage
 
 PERFLIST=ring_perf,mempool_perf,memcpy_perf,hash_perf,timer_perf
 coverage: BLACKLIST=-$(PERFLIST)
 fast_test: BLACKLIST=-$(PERFLIST)
 perf_test: WHITELIST=$(PERFLIST)
 
-test fast_test perf_test:
+test test-run fast_test perf_test:
 	@mkdir -p $(AUTOTEST_DIR) ; \
 	cd $(AUTOTEST_DIR) ; \
 	if [ -f $(RTE_OUTPUT)/app/test ]; then \
-- 
2.9.3

^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH 4/4] mk: rename test related make rules
  2017-02-15 15:26 ` [PATCH 1/4] " Ferruh Yigit
  2017-02-15 15:26   ` [PATCH 2/4] mk: do not build tests by default Ferruh Yigit
  2017-02-15 15:26   ` [PATCH 3/4] mk: add new test-run make rule Ferruh Yigit
@ 2017-02-15 15:26   ` Ferruh Yigit
  2017-02-16  9:10   ` [PATCH 1/4] test: move tests to separate folder Bruce Richardson
  2017-02-16 14:57   ` [PATCH v2 1/5] " Ferruh Yigit
  4 siblings, 0 replies; 34+ messages in thread
From: Ferruh Yigit @ 2017-02-15 15:26 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: dev, Ferruh Yigit, Bruce Richardson, John McNamara, Keith Wiles

Make rules renamed to;
fast_test    -> test-fast
ring_test    -> test-ring
mempool_test -> test-mempool
perf_test    -> test-perf

These are to run various sub-set of the unit tests.

Not touched to the rules that already follows the syntax:
test-run
test-build
test

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 mk/rte.sdkroot.mk | 4 ++--
 mk/rte.sdktest.mk | 8 ++++----
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/mk/rte.sdkroot.mk b/mk/rte.sdkroot.mk
index 0eb53fc..fd02d9e 100644
--- a/mk/rte.sdkroot.mk
+++ b/mk/rte.sdkroot.mk
@@ -92,8 +92,8 @@ default: all
 config showconfigs showversion showversionum:
 	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkconfig.mk $@
 
-.PHONY: test test-run fast_test ring_test mempool_test perf_test coverage
-test test-run fast_test ring_test mempool_test perf_test coverage:
+.PHONY: test test-run test-fast test-ring test-mempool test-perf coverage
+test test-run test-fast test-ring test-mempool test-perf coverage:
 	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdktest.mk $@
 
 test: test-build
diff --git a/mk/rte.sdktest.mk b/mk/rte.sdktest.mk
index 6455b3e..0425338 100644
--- a/mk/rte.sdktest.mk
+++ b/mk/rte.sdktest.mk
@@ -46,14 +46,14 @@ DIR := $(shell basename $(RTE_OUTPUT))
 #
 # test: launch auto-tests, very simple for now.
 #
-.PHONY: test test-run fast_test perf_test coverage
+.PHONY: test test-run test-fast test-perf coverage
 
 PERFLIST=ring_perf,mempool_perf,memcpy_perf,hash_perf,timer_perf
 coverage: BLACKLIST=-$(PERFLIST)
-fast_test: BLACKLIST=-$(PERFLIST)
-perf_test: WHITELIST=$(PERFLIST)
+test-fast: BLACKLIST=-$(PERFLIST)
+test-perf: WHITELIST=$(PERFLIST)
 
-test test-run fast_test perf_test:
+test test-run test-fast test-perf:
 	@mkdir -p $(AUTOTEST_DIR) ; \
 	cd $(AUTOTEST_DIR) ; \
 	if [ -f $(RTE_OUTPUT)/app/test ]; then \
-- 
2.9.3

^ permalink raw reply related	[flat|nested] 34+ messages in thread

* Re: [PATCH 2/4] mk: do not build tests by default
  2017-02-15 15:26   ` [PATCH 2/4] mk: do not build tests by default Ferruh Yigit
@ 2017-02-15 16:58     ` Thomas Monjalon
  2017-02-15 17:30       ` Ferruh Yigit
  0 siblings, 1 reply; 34+ messages in thread
From: Thomas Monjalon @ 2017-02-15 16:58 UTC (permalink / raw)
  To: Ferruh Yigit; +Cc: dev, Bruce Richardson, John McNamara, Keith Wiles

2017-02-15 15:26, Ferruh Yigit:
> +.PHONY: test-buid
> +test-build:
> +	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkconfig.mk checkconfig
> +	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkbuild.mk test

Why not rely on default rule below?

# all other build targets
%:
    $(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkconfig.mk checkconfig
    $(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkbuild.mk $@

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH 3/4] mk: add new test-run make rule
  2017-02-15 15:26   ` [PATCH 3/4] mk: add new test-run make rule Ferruh Yigit
@ 2017-02-15 17:07     ` Bruce Richardson
  2017-02-15 17:41       ` Ferruh Yigit
  2017-02-16  9:26     ` Thomas Monjalon
  1 sibling, 1 reply; 34+ messages in thread
From: Bruce Richardson @ 2017-02-15 17:07 UTC (permalink / raw)
  To: Ferruh Yigit; +Cc: Thomas Monjalon, dev, John McNamara, Keith Wiles

On Wed, Feb 15, 2017 at 03:26:31PM +0000, Ferruh Yigit wrote:
> Since "make test" and "make test-build" does dependency resolving, they
> check for all dependent components (lib and drivers) which takes a few
> seconds.
> 
> This is a good feature during development, but if the target is just
> running unit test, that step is unnecessary, it is possible to compile
> onece and run unit test multiple times, without checking any code update
> 
> For this purpose, a new make rule "make test-run" added. Which just runs
> the unit test, expects that unit test already compiled.
> 
> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
> ---
Sorry, I just don't see the point of having an extra command to maintain
and document for the sake of a few seconds on a unit test run. How long
does the run itself take compared to the time to check dependencies? 

/Bruce

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH 2/4] mk: do not build tests by default
  2017-02-15 16:58     ` Thomas Monjalon
@ 2017-02-15 17:30       ` Ferruh Yigit
  2017-02-16  8:53         ` Thomas Monjalon
  0 siblings, 1 reply; 34+ messages in thread
From: Ferruh Yigit @ 2017-02-15 17:30 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: dev, Bruce Richardson, John McNamara, Keith Wiles

On 2/15/2017 4:58 PM, Thomas Monjalon wrote:
> 2017-02-15 15:26, Ferruh Yigit:
>> +.PHONY: test-buid
>> +test-build:
>> +	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkconfig.mk checkconfig
>> +	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkbuild.mk test
> 
> Why not rely on default rule below?
> 
> # all other build targets
> %:
>     $(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkconfig.mk checkconfig
>     $(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkbuild.mk $@


Because generic rule is using "rte.sdkbuild.mk $@" rule,
for unit-test, $@ is test-build, but sdkbuild rule is "test"

This can be solved with adding following to sdkbuild.mk:

--- a/mk/rte.sdkbuild.mk
+++ b/mk/rte.sdkbuild.mk
@@ -72,6 +72,9 @@ clean: $(CLEANDIRS)
        $(Q)$(MAKE) -f $(RTE_SDK)/GNUmakefile gcovclean
        @echo Clean complete

+.PHONY: test-build
+test-build: test
+
 .SECONDEXPANSION:
 .PHONY: $(ROOTDIRS-y) test
 $(ROOTDIRS-y) test:


I can update if you think this is better?

Thanks,
ferruh

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH 3/4] mk: add new test-run make rule
  2017-02-15 17:07     ` Bruce Richardson
@ 2017-02-15 17:41       ` Ferruh Yigit
  2017-02-16  9:08         ` Bruce Richardson
  0 siblings, 1 reply; 34+ messages in thread
From: Ferruh Yigit @ 2017-02-15 17:41 UTC (permalink / raw)
  To: Bruce Richardson; +Cc: Thomas Monjalon, dev, John McNamara, Keith Wiles

On 2/15/2017 5:07 PM, Bruce Richardson wrote:
> On Wed, Feb 15, 2017 at 03:26:31PM +0000, Ferruh Yigit wrote:
>> Since "make test" and "make test-build" does dependency resolving, they
>> check for all dependent components (lib and drivers) which takes a few
>> seconds.
>>
>> This is a good feature during development, but if the target is just
>> running unit test, that step is unnecessary, it is possible to compile
>> onece and run unit test multiple times, without checking any code update
>>
>> For this purpose, a new make rule "make test-run" added. Which just runs
>> the unit test, expects that unit test already compiled.
>>
>> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
>> ---
> Sorry, I just don't see the point of having an extra command to maintain
> and document for the sake of a few seconds on a unit test run. How long
> does the run itself take compared to the time to check dependencies? 

It is matter of choice, it does not take much time for "make test", but
still I thought it is handy to have a rule only to run the test.

I don't expect much maintenance cost with this, also I don't have strong
opinion to keep it.

> 
> /Bruce
> 

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH 2/4] mk: do not build tests by default
  2017-02-15 17:30       ` Ferruh Yigit
@ 2017-02-16  8:53         ` Thomas Monjalon
  2017-02-16 10:07           ` Ferruh Yigit
  0 siblings, 1 reply; 34+ messages in thread
From: Thomas Monjalon @ 2017-02-16  8:53 UTC (permalink / raw)
  To: Ferruh Yigit; +Cc: dev, Bruce Richardson, John McNamara, Keith Wiles

2017-02-15 17:30, Ferruh Yigit:
> On 2/15/2017 4:58 PM, Thomas Monjalon wrote:
> > 2017-02-15 15:26, Ferruh Yigit:
> >> +.PHONY: test-buid
> >> +test-build:
> >> +	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkconfig.mk checkconfig
> >> +	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkbuild.mk test
> > 
> > Why not rely on default rule below?
> > 
> > # all other build targets
> > %:
> >     $(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkconfig.mk checkconfig
> >     $(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkbuild.mk $@
> 
> 
> Because generic rule is using "rte.sdkbuild.mk $@" rule,
> for unit-test, $@ is test-build, but sdkbuild rule is "test"
> 
> This can be solved with adding following to sdkbuild.mk:
> 
> --- a/mk/rte.sdkbuild.mk
> +++ b/mk/rte.sdkbuild.mk
> @@ -72,6 +72,9 @@ clean: $(CLEANDIRS)
>         $(Q)$(MAKE) -f $(RTE_SDK)/GNUmakefile gcovclean
>         @echo Clean complete
> 
> +.PHONY: test-build
> +test-build: test
> +
>  .SECONDEXPANSION:
>  .PHONY: $(ROOTDIRS-y) test
>  $(ROOTDIRS-y) test:
> 
> 
> I can update if you think this is better?

Yes it seems better. Or you can just rename test into test-build
in rte.sdkbuild.mk.

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH 3/4] mk: add new test-run make rule
  2017-02-15 17:41       ` Ferruh Yigit
@ 2017-02-16  9:08         ` Bruce Richardson
  0 siblings, 0 replies; 34+ messages in thread
From: Bruce Richardson @ 2017-02-16  9:08 UTC (permalink / raw)
  To: Ferruh Yigit; +Cc: Thomas Monjalon, dev, John McNamara, Keith Wiles

On Wed, Feb 15, 2017 at 05:41:08PM +0000, Ferruh Yigit wrote:
> On 2/15/2017 5:07 PM, Bruce Richardson wrote:
> > On Wed, Feb 15, 2017 at 03:26:31PM +0000, Ferruh Yigit wrote:
> >> Since "make test" and "make test-build" does dependency resolving, they
> >> check for all dependent components (lib and drivers) which takes a few
> >> seconds.
> >>
> >> This is a good feature during development, but if the target is just
> >> running unit test, that step is unnecessary, it is possible to compile
> >> onece and run unit test multiple times, without checking any code update
> >>
> >> For this purpose, a new make rule "make test-run" added. Which just runs
> >> the unit test, expects that unit test already compiled.
> >>
> >> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
> >> ---
> > Sorry, I just don't see the point of having an extra command to maintain
> > and document for the sake of a few seconds on a unit test run. How long
> > does the run itself take compared to the time to check dependencies? 
> 
> It is matter of choice, it does not take much time for "make test", but
> still I thought it is handy to have a rule only to run the test.
> 
> I don't expect much maintenance cost with this, also I don't have strong
> opinion to keep it.
> 
Yes, I suppose it isn't much maintenance cost indeed, so if nobody else
cares, I'm ok with it too.

/Bruce

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH 1/4] test: move tests to separate folder
  2017-02-15 15:26 ` [PATCH 1/4] " Ferruh Yigit
                     ` (2 preceding siblings ...)
  2017-02-15 15:26   ` [PATCH 4/4] mk: rename test related make rules Ferruh Yigit
@ 2017-02-16  9:10   ` Bruce Richardson
  2017-02-16 14:57   ` [PATCH v2 1/5] " Ferruh Yigit
  4 siblings, 0 replies; 34+ messages in thread
From: Bruce Richardson @ 2017-02-16  9:10 UTC (permalink / raw)
  To: Ferruh Yigit; +Cc: Thomas Monjalon, dev, John McNamara, Keith Wiles

On Wed, Feb 15, 2017 at 03:26:29PM +0000, Ferruh Yigit wrote:
> This is to logically group unit tests into their own folder separating
> them from "app" folder.
> 
> Hopefully this will make the unit test in DPDK more visible.
> 
> Following binaries moved to "test" folder:
> cmdline-test
> test-acl
> test-pipeline
> test   <-- various DPDK unit tests
> 
> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
> ---
For the series, it all looks a good idea, so:

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

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH 3/4] mk: add new test-run make rule
  2017-02-15 15:26   ` [PATCH 3/4] mk: add new test-run make rule Ferruh Yigit
  2017-02-15 17:07     ` Bruce Richardson
@ 2017-02-16  9:26     ` Thomas Monjalon
  2017-02-16 10:21       ` Ferruh Yigit
  1 sibling, 1 reply; 34+ messages in thread
From: Thomas Monjalon @ 2017-02-16  9:26 UTC (permalink / raw)
  To: Ferruh Yigit; +Cc: dev, Bruce Richardson, John McNamara, Keith Wiles

2017-02-15 15:26, Ferruh Yigit:
> --- a/mk/rte.sdkroot.mk
> +++ b/mk/rte.sdkroot.mk
> @@ -92,8 +92,8 @@ default: all
>  config showconfigs showversion showversionum:
>  	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkconfig.mk $@
>  
> -.PHONY: test fast_test ring_test mempool_test perf_test coverage
> -test fast_test ring_test mempool_test perf_test coverage:
> +.PHONY: test test-run fast_test ring_test mempool_test perf_test coverage
> +test test-run fast_test ring_test mempool_test perf_test coverage:
>  	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdktest.mk $@

"test" is a shortcut for build + basic tests.
I think test-run can be better named. It runs all the basic tests registered
in autotests. "test-all" would be wrong. What about "test-basic"?

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH 2/4] mk: do not build tests by default
  2017-02-16  8:53         ` Thomas Monjalon
@ 2017-02-16 10:07           ` Ferruh Yigit
  0 siblings, 0 replies; 34+ messages in thread
From: Ferruh Yigit @ 2017-02-16 10:07 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: dev, Bruce Richardson, John McNamara, Keith Wiles

On 2/16/2017 8:53 AM, Thomas Monjalon wrote:
> 2017-02-15 17:30, Ferruh Yigit:
>> On 2/15/2017 4:58 PM, Thomas Monjalon wrote:
>>> 2017-02-15 15:26, Ferruh Yigit:
>>>> +.PHONY: test-buid
>>>> +test-build:
>>>> +	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkconfig.mk checkconfig
>>>> +	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkbuild.mk test
>>>
>>> Why not rely on default rule below?
>>>
>>> # all other build targets
>>> %:
>>>     $(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkconfig.mk checkconfig
>>>     $(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkbuild.mk $@
>>
>>
>> Because generic rule is using "rte.sdkbuild.mk $@" rule,
>> for unit-test, $@ is test-build, but sdkbuild rule is "test"
>>
>> This can be solved with adding following to sdkbuild.mk:
>>
>> --- a/mk/rte.sdkbuild.mk
>> +++ b/mk/rte.sdkbuild.mk
>> @@ -72,6 +72,9 @@ clean: $(CLEANDIRS)
>>         $(Q)$(MAKE) -f $(RTE_SDK)/GNUmakefile gcovclean
>>         @echo Clean complete
>>
>> +.PHONY: test-build
>> +test-build: test
>> +
>>  .SECONDEXPANSION:
>>  .PHONY: $(ROOTDIRS-y) test
>>  $(ROOTDIRS-y) tes
>>
>>
>> I can update if you think this is better?
> 
> Yes it seems better. Or you can just rename test into test-build
> in rte.sdkbuild.mk.

Can't update to "test-build" in rte.sdkbuild.mk, it needs to be folder
name. I will send new version with above update.

Thanks,
ferruh

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH 3/4] mk: add new test-run make rule
  2017-02-16  9:26     ` Thomas Monjalon
@ 2017-02-16 10:21       ` Ferruh Yigit
  2017-02-16 10:44         ` Thomas Monjalon
  0 siblings, 1 reply; 34+ messages in thread
From: Ferruh Yigit @ 2017-02-16 10:21 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: dev, Bruce Richardson, John McNamara, Keith Wiles

On 2/16/2017 9:26 AM, Thomas Monjalon wrote:
> 2017-02-15 15:26, Ferruh Yigit:
>> --- a/mk/rte.sdkroot.mk
>> +++ b/mk/rte.sdkroot.mk
>> @@ -92,8 +92,8 @@ default: all
>>  config showconfigs showversion showversionum:
>>  	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkconfig.mk $@
>>  
>> -.PHONY: test fast_test ring_test mempool_test perf_test coverage
>> -test fast_test ring_test mempool_test perf_test coverage:
>> +.PHONY: test test-run fast_test ring_test mempool_test perf_test coverage
>> +test test-run fast_test ring_test mempool_test perf_test coverage:
>>  	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdktest.mk $@
> 
> "test" is a shortcut for build + basic tests.
> I think test-run can be better named. It runs all the basic tests registered
> in autotests. "test-all" would be wrong. What about "test-basic"?

Right, "test-basic" matches more to existing rules (test-fast,
test-perf, ..), all has hidden "run" action implied, I will use
"test-basic" if there is no objection.

My concerns is "test-basic" "running basic tests without compilation"
may not be obvious for a newcomer.
Should I add a line to "make help" for "test" and "test-*" rules?

Like:
test      Compile tests and run basic unit tests
test-*    Run specific subset of the unit tests

thanks,
ferruh

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH 3/4] mk: add new test-run make rule
  2017-02-16 10:21       ` Ferruh Yigit
@ 2017-02-16 10:44         ` Thomas Monjalon
  0 siblings, 0 replies; 34+ messages in thread
From: Thomas Monjalon @ 2017-02-16 10:44 UTC (permalink / raw)
  To: Ferruh Yigit; +Cc: dev, Bruce Richardson, John McNamara, Keith Wiles

2017-02-16 10:21, Ferruh Yigit:
> On 2/16/2017 9:26 AM, Thomas Monjalon wrote:
> > 2017-02-15 15:26, Ferruh Yigit:
> >> --- a/mk/rte.sdkroot.mk
> >> +++ b/mk/rte.sdkroot.mk
> >> @@ -92,8 +92,8 @@ default: all
> >>  config showconfigs showversion showversionum:
> >>  	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkconfig.mk $@
> >>  
> >> -.PHONY: test fast_test ring_test mempool_test perf_test coverage
> >> -test fast_test ring_test mempool_test perf_test coverage:
> >> +.PHONY: test test-run fast_test ring_test mempool_test perf_test coverage
> >> +test test-run fast_test ring_test mempool_test perf_test coverage:
> >>  	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdktest.mk $@
> > 
> > "test" is a shortcut for build + basic tests.
> > I think test-run can be better named. It runs all the basic tests registered
> > in autotests. "test-all" would be wrong. What about "test-basic"?
> 
> Right, "test-basic" matches more to existing rules (test-fast,
> test-perf, ..), all has hidden "run" action implied, I will use
> "test-basic" if there is no objection.
> 
> My concerns is "test-basic" "running basic tests without compilation"
> may not be obvious for a newcomer.
> Should I add a line to "make help" for "test" and "test-*" rules?
> 
> Like:
> test      Compile tests and run basic unit tests
> test-*    Run specific subset of the unit tests

Yes it looks good.

^ permalink raw reply	[flat|nested] 34+ messages in thread

* [PATCH v2 1/5] test: move tests to separate folder
  2017-02-15 15:26 ` [PATCH 1/4] " Ferruh Yigit
                     ` (3 preceding siblings ...)
  2017-02-16  9:10   ` [PATCH 1/4] test: move tests to separate folder Bruce Richardson
@ 2017-02-16 14:57   ` Ferruh Yigit
  2017-02-16 14:57     ` [PATCH v2 2/5] mk: do not build tests by default Ferruh Yigit
                       ` (4 more replies)
  4 siblings, 5 replies; 34+ messages in thread
From: Ferruh Yigit @ 2017-02-16 14:57 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: dev, Ferruh Yigit, Bruce Richardson, John McNamara, Keith Wiles

This is to logically group unit tests into their own folder,
separating them from "app" folder.

Hopefully this will make the unit test in DPDK more visible.

Following binaries moved to "test" folder:
cmdline-test
test-acl
test-pipeline
test            <-- various DPDK unit tests

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
----

v2 of patchset:
* use "%:" rule for test-build in rte.sdkroot.mk
* use ROOTDIRS- variable
* rename test-run --> test-basic
* add test rules into "make help"
---
 GNUmakefile                                        |   2 +-
 app/Makefile                                       |   4 ---
 mk/rte.sdktest.mk                                  |   6 ++--
 test/Makefile                                      |  39 +++++++++++++++++++++
 {app => test}/cmdline_test/Makefile                |   0
 {app => test}/cmdline_test/cmdline_test.c          |   0
 {app => test}/cmdline_test/cmdline_test.h          |   0
 {app => test}/cmdline_test/cmdline_test.py         |   0
 {app => test}/cmdline_test/cmdline_test_data.py    |   0
 {app => test}/cmdline_test/commands.c              |   0
 {app => test}/test-acl/Makefile                    |   0
 {app => test}/test-acl/main.c                      |   0
 {app => test}/test-pipeline/Makefile               |   0
 {app => test}/test-pipeline/config.c               |   0
 {app => test}/test-pipeline/init.c                 |   0
 {app => test}/test-pipeline/main.c                 |   0
 {app => test}/test-pipeline/main.h                 |   0
 {app => test}/test-pipeline/pipeline_acl.c         |   0
 {app => test}/test-pipeline/pipeline_hash.c        |   0
 {app => test}/test-pipeline/pipeline_lpm.c         |   0
 {app => test}/test-pipeline/pipeline_lpm_ipv6.c    |   0
 {app => test}/test-pipeline/pipeline_stub.c        |   0
 {app => test}/test-pipeline/runtime.c              |   0
 {app => test}/test/Makefile                        |   0
 {app => test}/test/autotest.py                     |   0
 {app => test}/test/autotest_data.py                |   0
 {app => test}/test/autotest_runner.py              |   0
 {app => test}/test/autotest_test_funcs.py          |   0
 {app => test}/test/commands.c                      |   0
 {app => test}/test/packet_burst_generator.c        |   0
 {app => test}/test/packet_burst_generator.h        |   0
 {app => test}/test/process.h                       |   0
 {app => test}/test/resource.c                      |   0
 {app => test}/test/resource.h                      |   0
 {app => test}/test/test.c                          |   0
 {app => test}/test/test.h                          |   0
 {app => test}/test/test_acl.c                      |   0
 {app => test}/test/test_acl.h                      |   0
 {app => test}/test/test_alarm.c                    |   0
 {app => test}/test/test_atomic.c                   |   0
 {app => test}/test/test_byteorder.c                |   0
 {app => test}/test/test_cmdline.c                  |   0
 {app => test}/test/test_cmdline.h                  |   0
 {app => test}/test/test_cmdline_cirbuf.c           |   0
 {app => test}/test/test_cmdline_etheraddr.c        |   0
 {app => test}/test/test_cmdline_ipaddr.c           |   0
 {app => test}/test/test_cmdline_lib.c              |   0
 {app => test}/test/test_cmdline_num.c              |   0
 {app => test}/test/test_cmdline_portlist.c         |   0
 {app => test}/test/test_cmdline_string.c           |   0
 {app => test}/test/test_common.c                   |   0
 {app => test}/test/test_cpuflags.c                 |   0
 {app => test}/test/test_cryptodev.c                |   0
 {app => test}/test/test_cryptodev.h                |   0
 .../test/test_cryptodev_aes_test_vectors.h         |   0
 {app => test}/test/test_cryptodev_blockcipher.c    |   0
 {app => test}/test/test_cryptodev_blockcipher.h    |   0
 .../test/test_cryptodev_des_test_vectors.h         |   0
 .../test/test_cryptodev_gcm_test_vectors.h         |   0
 .../test/test_cryptodev_hash_test_vectors.h        |   0
 .../test/test_cryptodev_hmac_test_vectors.h        |   0
 .../test/test_cryptodev_kasumi_hash_test_vectors.h |   0
 .../test/test_cryptodev_kasumi_test_vectors.h      |   0
 {app => test}/test/test_cryptodev_perf.c           |   0
 .../test/test_cryptodev_snow3g_hash_test_vectors.h |   0
 .../test/test_cryptodev_snow3g_test_vectors.h      |   0
 .../test/test_cryptodev_zuc_hash_test_vectors.h    |   0
 .../test/test_cryptodev_zuc_test_vectors.h         |   0
 {app => test}/test/test_cycles.c                   |   0
 {app => test}/test/test_debug.c                    |   0
 {app => test}/test/test_devargs.c                  |   0
 {app => test}/test/test_distributor.c              |   0
 {app => test}/test/test_distributor_perf.c         |   0
 {app => test}/test/test_eal_flags.c                |   0
 {app => test}/test/test_eal_fs.c                   |   0
 {app => test}/test/test_efd.c                      |   0
 {app => test}/test/test_efd_perf.c                 |   0
 {app => test}/test/test_errno.c                    |   0
 {app => test}/test/test_func_reentrancy.c          |   0
 {app => test}/test/test_hash.c                     |   0
 {app => test}/test/test_hash_functions.c           |   0
 {app => test}/test/test_hash_multiwriter.c         |   0
 {app => test}/test/test_hash_perf.c                |   0
 {app => test}/test/test_hash_scaling.c             |   0
 {app => test}/test/test_interrupts.c               |   0
 {app => test}/test/test_kni.c                      |   0
 {app => test}/test/test_kvargs.c                   |   0
 {app => test}/test/test_link_bonding.c             |   0
 {app => test}/test/test_link_bonding_mode4.c       |   0
 {app => test}/test/test_link_bonding_rssconf.c     |   0
 {app => test}/test/test_logs.c                     |   0
 {app => test}/test/test_lpm.c                      |   0
 {app => test}/test/test_lpm6.c                     |   0
 {app => test}/test/test_lpm6_data.h                |   0
 {app => test}/test/test_lpm6_perf.c                |   0
 {app => test}/test/test_lpm_perf.c                 |   0
 {app => test}/test/test_malloc.c                   |   0
 {app => test}/test/test_mbuf.c                     |   0
 {app => test}/test/test_memcpy.c                   |   0
 {app => test}/test/test_memcpy_perf.c              |   0
 {app => test}/test/test_memory.c                   |   0
 {app => test}/test/test_mempool.c                  |   0
 {app => test}/test/test_mempool_perf.c             |   0
 {app => test}/test/test_memzone.c                  |   0
 {app => test}/test/test_meter.c                    |   0
 {app => test}/test/test_mp_secondary.c             |   0
 {app => test}/test/test_pci.c                      |   0
 .../bus/pci/devices/0000:01:00.0/class             |   0
 .../bus/pci/devices/0000:01:00.0/config            | Bin
 .../devices/0000:01:00.0/consistent_dma_mask_bits  |   0
 .../bus/pci/devices/0000:01:00.0/device            |   0
 .../bus/pci/devices/0000:01:00.0/dma_mask_bits     |   0
 .../bus/pci/devices/0000:01:00.0/enable            |   0
 .../bus/pci/devices/0000:01:00.0/irq               |   0
 .../bus/pci/devices/0000:01:00.0/modalias          |   0
 .../bus/pci/devices/0000:01:00.0/msi_bus           |   0
 .../bus/pci/devices/0000:01:00.0/numa_node         |   0
 .../bus/pci/devices/0000:01:00.0/resource          |   0
 .../bus/pci/devices/0000:01:00.0/sriov_numvfs      |   0
 .../bus/pci/devices/0000:01:00.0/sriov_totalvfs    |   0
 .../bus/pci/devices/0000:01:00.0/subsystem_device  |   0
 .../bus/pci/devices/0000:01:00.0/subsystem_vendor  |   0
 .../bus/pci/devices/0000:01:00.0/uevent            |   0
 .../bus/pci/devices/0000:01:00.0/vendor            |   0
 .../bus/pci/devices/0000:01:02.0/class             |   0
 .../bus/pci/devices/0000:01:02.0/device            |   0
 .../bus/pci/devices/0000:01:02.0/resource          |   0
 .../bus/pci/devices/0000:01:02.0/subsystem_device  |   0
 .../bus/pci/devices/0000:01:02.0/subsystem_vendor  |   0
 .../bus/pci/devices/0000:01:02.0/vendor            |   0
 .../bus/pci/devices/0000:02:ab.0/class             |   0
 .../bus/pci/devices/0000:02:ab.0/device            |   0
 .../bus/pci/devices/0000:02:ab.0/resource          |   0
 .../bus/pci/devices/0000:02:ab.0/subsystem_device  |   0
 .../bus/pci/devices/0000:02:ab.0/subsystem_vendor  |   0
 .../bus/pci/devices/0000:02:ab.0/vendor            |   0
 {app => test}/test/test_per_lcore.c                |   0
 {app => test}/test/test_pmd_perf.c                 |   0
 {app => test}/test/test_pmd_ring.c                 |   0
 {app => test}/test/test_pmd_ring_perf.c            |   0
 {app => test}/test/test_power.c                    |   0
 {app => test}/test/test_power_acpi_cpufreq.c       |   0
 {app => test}/test/test_power_kvm_vm.c             |   0
 {app => test}/test/test_prefetch.c                 |   0
 {app => test}/test/test_red.c                      |   0
 {app => test}/test/test_reorder.c                  |   0
 {app => test}/test/test_resource.c                 |   0
 {app => test}/test/test_ring.c                     |   0
 {app => test}/test/test_ring_perf.c                |   0
 {app => test}/test/test_rwlock.c                   |   0
 {app => test}/test/test_sched.c                    |   0
 {app => test}/test/test_spinlock.c                 |   0
 {app => test}/test/test_string_fns.c               |   0
 {app => test}/test/test_table.c                    |   0
 {app => test}/test/test_table.h                    |   0
 {app => test}/test/test_table_acl.c                |   0
 {app => test}/test/test_table_acl.h                |   0
 {app => test}/test/test_table_combined.c           |   0
 {app => test}/test/test_table_combined.h           |   0
 {app => test}/test/test_table_pipeline.c           |   0
 {app => test}/test/test_table_pipeline.h           |   0
 {app => test}/test/test_table_ports.c              |   0
 {app => test}/test/test_table_ports.h              |   0
 {app => test}/test/test_table_tables.c             |   0
 {app => test}/test/test_table_tables.h             |   0
 {app => test}/test/test_tailq.c                    |   0
 {app => test}/test/test_thash.c                    |   0
 {app => test}/test/test_timer.c                    |   0
 {app => test}/test/test_timer_perf.c               |   0
 {app => test}/test/test_timer_racecond.c           |   0
 {app => test}/test/test_version.c                  |   0
 {app => test}/test/test_xmmt_ops.h                 |   0
 {app => test}/test/virtual_pmd.c                   |   0
 {app => test}/test/virtual_pmd.h                   |   0
 174 files changed, 43 insertions(+), 8 deletions(-)
 create mode 100644 test/Makefile
 rename {app => test}/cmdline_test/Makefile (100%)
 rename {app => test}/cmdline_test/cmdline_test.c (100%)
 rename {app => test}/cmdline_test/cmdline_test.h (100%)
 rename {app => test}/cmdline_test/cmdline_test.py (100%)
 rename {app => test}/cmdline_test/cmdline_test_data.py (100%)
 rename {app => test}/cmdline_test/commands.c (100%)
 rename {app => test}/test-acl/Makefile (100%)
 rename {app => test}/test-acl/main.c (100%)
 rename {app => test}/test-pipeline/Makefile (100%)
 rename {app => test}/test-pipeline/config.c (100%)
 rename {app => test}/test-pipeline/init.c (100%)
 rename {app => test}/test-pipeline/main.c (100%)
 rename {app => test}/test-pipeline/main.h (100%)
 rename {app => test}/test-pipeline/pipeline_acl.c (100%)
 rename {app => test}/test-pipeline/pipeline_hash.c (100%)
 rename {app => test}/test-pipeline/pipeline_lpm.c (100%)
 rename {app => test}/test-pipeline/pipeline_lpm_ipv6.c (100%)
 rename {app => test}/test-pipeline/pipeline_stub.c (100%)
 rename {app => test}/test-pipeline/runtime.c (100%)
 rename {app => test}/test/Makefile (100%)
 rename {app => test}/test/autotest.py (100%)
 rename {app => test}/test/autotest_data.py (100%)
 rename {app => test}/test/autotest_runner.py (100%)
 rename {app => test}/test/autotest_test_funcs.py (100%)
 rename {app => test}/test/commands.c (100%)
 rename {app => test}/test/packet_burst_generator.c (100%)
 rename {app => test}/test/packet_burst_generator.h (100%)
 rename {app => test}/test/process.h (100%)
 rename {app => test}/test/resource.c (100%)
 rename {app => test}/test/resource.h (100%)
 rename {app => test}/test/test.c (100%)
 rename {app => test}/test/test.h (100%)
 rename {app => test}/test/test_acl.c (100%)
 rename {app => test}/test/test_acl.h (100%)
 rename {app => test}/test/test_alarm.c (100%)
 rename {app => test}/test/test_atomic.c (100%)
 rename {app => test}/test/test_byteorder.c (100%)
 rename {app => test}/test/test_cmdline.c (100%)
 rename {app => test}/test/test_cmdline.h (100%)
 rename {app => test}/test/test_cmdline_cirbuf.c (100%)
 rename {app => test}/test/test_cmdline_etheraddr.c (100%)
 rename {app => test}/test/test_cmdline_ipaddr.c (100%)
 rename {app => test}/test/test_cmdline_lib.c (100%)
 rename {app => test}/test/test_cmdline_num.c (100%)
 rename {app => test}/test/test_cmdline_portlist.c (100%)
 rename {app => test}/test/test_cmdline_string.c (100%)
 rename {app => test}/test/test_common.c (100%)
 rename {app => test}/test/test_cpuflags.c (100%)
 rename {app => test}/test/test_cryptodev.c (100%)
 rename {app => test}/test/test_cryptodev.h (100%)
 rename {app => test}/test/test_cryptodev_aes_test_vectors.h (100%)
 rename {app => test}/test/test_cryptodev_blockcipher.c (100%)
 rename {app => test}/test/test_cryptodev_blockcipher.h (100%)
 rename {app => test}/test/test_cryptodev_des_test_vectors.h (100%)
 rename {app => test}/test/test_cryptodev_gcm_test_vectors.h (100%)
 rename {app => test}/test/test_cryptodev_hash_test_vectors.h (100%)
 rename {app => test}/test/test_cryptodev_hmac_test_vectors.h (100%)
 rename {app => test}/test/test_cryptodev_kasumi_hash_test_vectors.h (100%)
 rename {app => test}/test/test_cryptodev_kasumi_test_vectors.h (100%)
 rename {app => test}/test/test_cryptodev_perf.c (100%)
 rename {app => test}/test/test_cryptodev_snow3g_hash_test_vectors.h (100%)
 rename {app => test}/test/test_cryptodev_snow3g_test_vectors.h (100%)
 rename {app => test}/test/test_cryptodev_zuc_hash_test_vectors.h (100%)
 rename {app => test}/test/test_cryptodev_zuc_test_vectors.h (100%)
 rename {app => test}/test/test_cycles.c (100%)
 rename {app => test}/test/test_debug.c (100%)
 rename {app => test}/test/test_devargs.c (100%)
 rename {app => test}/test/test_distributor.c (100%)
 rename {app => test}/test/test_distributor_perf.c (100%)
 rename {app => test}/test/test_eal_flags.c (100%)
 rename {app => test}/test/test_eal_fs.c (100%)
 rename {app => test}/test/test_efd.c (100%)
 rename {app => test}/test/test_efd_perf.c (100%)
 rename {app => test}/test/test_errno.c (100%)
 rename {app => test}/test/test_func_reentrancy.c (100%)
 rename {app => test}/test/test_hash.c (100%)
 rename {app => test}/test/test_hash_functions.c (100%)
 rename {app => test}/test/test_hash_multiwriter.c (100%)
 rename {app => test}/test/test_hash_perf.c (100%)
 rename {app => test}/test/test_hash_scaling.c (100%)
 rename {app => test}/test/test_interrupts.c (100%)
 rename {app => test}/test/test_kni.c (100%)
 rename {app => test}/test/test_kvargs.c (100%)
 rename {app => test}/test/test_link_bonding.c (100%)
 rename {app => test}/test/test_link_bonding_mode4.c (100%)
 rename {app => test}/test/test_link_bonding_rssconf.c (100%)
 rename {app => test}/test/test_logs.c (100%)
 rename {app => test}/test/test_lpm.c (100%)
 rename {app => test}/test/test_lpm6.c (100%)
 rename {app => test}/test/test_lpm6_data.h (100%)
 rename {app => test}/test/test_lpm6_perf.c (100%)
 rename {app => test}/test/test_lpm_perf.c (100%)
 rename {app => test}/test/test_malloc.c (100%)
 rename {app => test}/test/test_mbuf.c (100%)
 rename {app => test}/test/test_memcpy.c (100%)
 rename {app => test}/test/test_memcpy_perf.c (100%)
 rename {app => test}/test/test_memory.c (100%)
 rename {app => test}/test/test_mempool.c (100%)
 rename {app => test}/test/test_mempool_perf.c (100%)
 rename {app => test}/test/test_memzone.c (100%)
 rename {app => test}/test/test_meter.c (100%)
 rename {app => test}/test/test_mp_secondary.c (100%)
 rename {app => test}/test/test_pci.c (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/class (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/config (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/consistent_dma_mask_bits (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/device (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/dma_mask_bits (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/enable (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/irq (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/modalias (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/msi_bus (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/numa_node (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/resource (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/sriov_numvfs (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/sriov_totalvfs (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/subsystem_device (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/subsystem_vendor (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/uevent (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/vendor (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/class (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/device (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/resource (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/subsystem_device (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/subsystem_vendor (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/vendor (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/class (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/device (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/resource (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/subsystem_device (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/subsystem_vendor (100%)
 rename {app => test}/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/vendor (100%)
 rename {app => test}/test/test_per_lcore.c (100%)
 rename {app => test}/test/test_pmd_perf.c (100%)
 rename {app => test}/test/test_pmd_ring.c (100%)
 rename {app => test}/test/test_pmd_ring_perf.c (100%)
 rename {app => test}/test/test_power.c (100%)
 rename {app => test}/test/test_power_acpi_cpufreq.c (100%)
 rename {app => test}/test/test_power_kvm_vm.c (100%)
 rename {app => test}/test/test_prefetch.c (100%)
 rename {app => test}/test/test_red.c (100%)
 rename {app => test}/test/test_reorder.c (100%)
 rename {app => test}/test/test_resource.c (100%)
 rename {app => test}/test/test_ring.c (100%)
 rename {app => test}/test/test_ring_perf.c (100%)
 rename {app => test}/test/test_rwlock.c (100%)
 rename {app => test}/test/test_sched.c (100%)
 rename {app => test}/test/test_spinlock.c (100%)
 rename {app => test}/test/test_string_fns.c (100%)
 rename {app => test}/test/test_table.c (100%)
 rename {app => test}/test/test_table.h (100%)
 rename {app => test}/test/test_table_acl.c (100%)
 rename {app => test}/test/test_table_acl.h (100%)
 rename {app => test}/test/test_table_combined.c (100%)
 rename {app => test}/test/test_table_combined.h (100%)
 rename {app => test}/test/test_table_pipeline.c (100%)
 rename {app => test}/test/test_table_pipeline.h (100%)
 rename {app => test}/test/test_table_ports.c (100%)
 rename {app => test}/test/test_table_ports.h (100%)
 rename {app => test}/test/test_table_tables.c (100%)
 rename {app => test}/test/test_table_tables.h (100%)
 rename {app => test}/test/test_tailq.c (100%)
 rename {app => test}/test/test_thash.c (100%)
 rename {app => test}/test/test_timer.c (100%)
 rename {app => test}/test/test_timer_perf.c (100%)
 rename {app => test}/test/test_timer_racecond.c (100%)
 rename {app => test}/test/test_version.c (100%)
 rename {app => test}/test/test_xmmt_ops.h (100%)
 rename {app => test}/test/virtual_pmd.c (100%)
 rename {app => test}/test/virtual_pmd.h (100%)

diff --git a/GNUmakefile b/GNUmakefile
index 00fe0db..b1a5b76 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -40,6 +40,6 @@ export RTE_SDK
 # directory list
 #
 
-ROOTDIRS-y := buildtools lib drivers app
+ROOTDIRS-y := buildtools lib drivers app test
 
 include $(RTE_SDK)/mk/rte.sdkroot.mk
diff --git a/app/Makefile b/app/Makefile
index 1a974a5..4b3a448 100644
--- a/app/Makefile
+++ b/app/Makefile
@@ -31,12 +31,8 @@
 
 include $(RTE_SDK)/mk/rte.vars.mk
 
-DIRS-$(CONFIG_RTE_APP_TEST) += test
-DIRS-$(CONFIG_RTE_LIBRTE_ACL) += test-acl
-DIRS-$(CONFIG_RTE_LIBRTE_PIPELINE) += test-pipeline
 DIRS-$(CONFIG_RTE_TEST_PMD) += test-pmd
 DIRS-$(CONFIG_RTE_APP_CRYPTO_PERF) += test-crypto-perf
-DIRS-$(CONFIG_RTE_LIBRTE_CMDLINE) += cmdline_test
 DIRS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += proc_info
 DIRS-$(CONFIG_RTE_LIBRTE_PDUMP) += pdump
 
diff --git a/mk/rte.sdktest.mk b/mk/rte.sdktest.mk
index ddbbbf6..1cdb40b 100644
--- a/mk/rte.sdktest.mk
+++ b/mk/rte.sdktest.mk
@@ -57,7 +57,7 @@ test fast_test perf_test:
 	@mkdir -p $(AUTOTEST_DIR) ; \
 	cd $(AUTOTEST_DIR) ; \
 	if [ -f $(RTE_OUTPUT)/app/test ]; then \
-		python $(RTE_SDK)/app/test/autotest.py \
+		python $(RTE_SDK)/test/test/autotest.py \
 			$(RTE_OUTPUT)/app/test \
 			$(RTE_TARGET) \
 			$(BLACKLIST) $(WHITELIST); \
@@ -71,10 +71,10 @@ coverage:
 	@mkdir -p $(AUTOTEST_DIR) ; \
 	cd $(AUTOTEST_DIR) ; \
 	if [ -f $(RTE_OUTPUT)/app/test ]; then \
-		python $(RTE_SDK)/app/cmdline_test/cmdline_test.py \
+		python $(RTE_SDK)/test/cmdline_test/cmdline_test.py \
 			$(RTE_OUTPUT)/app/cmdline_test; \
 		ulimit -S -n 100 ; \
-		python $(RTE_SDK)/app/test/autotest.py \
+		python $(RTE_SDK)/test/test/autotest.py \
 			$(RTE_OUTPUT)/app/test \
 			$(RTE_TARGET) \
 			$(BLACKLIST) $(WHITELIST) ; \
diff --git a/test/Makefile b/test/Makefile
new file mode 100644
index 0000000..e996fd8
--- /dev/null
+++ b/test/Makefile
@@ -0,0 +1,39 @@
+#   BSD LICENSE
+#
+#   Copyright(c) 2017 Intel Corporation. All rights reserved.
+#   All rights reserved.
+#
+#   Redistribution and use in source and binary forms, with or without
+#   modification, are permitted provided that the following conditions
+#   are met:
+#
+#     * Redistributions of source code must retain the above copyright
+#       notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above copyright
+#       notice, this list of conditions and the following disclaimer in
+#       the documentation and/or other materials provided with the
+#       distribution.
+#     * Neither the name of Intel Corporation nor the names of its
+#       contributors may be used to endorse or promote products derived
+#       from this software without specific prior written permission.
+#
+#   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+#   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+#   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+#   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+#   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+#   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+#   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+#   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+#   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+include $(RTE_SDK)/mk/rte.vars.mk
+
+DIRS-$(CONFIG_RTE_APP_TEST) += test
+DIRS-$(CONFIG_RTE_LIBRTE_ACL) += test-acl
+DIRS-$(CONFIG_RTE_LIBRTE_PIPELINE) += test-pipeline
+DIRS-$(CONFIG_RTE_LIBRTE_CMDLINE) += cmdline_test
+
+include $(RTE_SDK)/mk/rte.subdir.mk
diff --git a/app/cmdline_test/Makefile b/test/cmdline_test/Makefile
similarity index 100%
rename from app/cmdline_test/Makefile
rename to test/cmdline_test/Makefile
diff --git a/app/cmdline_test/cmdline_test.c b/test/cmdline_test/cmdline_test.c
similarity index 100%
rename from app/cmdline_test/cmdline_test.c
rename to test/cmdline_test/cmdline_test.c
diff --git a/app/cmdline_test/cmdline_test.h b/test/cmdline_test/cmdline_test.h
similarity index 100%
rename from app/cmdline_test/cmdline_test.h
rename to test/cmdline_test/cmdline_test.h
diff --git a/app/cmdline_test/cmdline_test.py b/test/cmdline_test/cmdline_test.py
similarity index 100%
rename from app/cmdline_test/cmdline_test.py
rename to test/cmdline_test/cmdline_test.py
diff --git a/app/cmdline_test/cmdline_test_data.py b/test/cmdline_test/cmdline_test_data.py
similarity index 100%
rename from app/cmdline_test/cmdline_test_data.py
rename to test/cmdline_test/cmdline_test_data.py
diff --git a/app/cmdline_test/commands.c b/test/cmdline_test/commands.c
similarity index 100%
rename from app/cmdline_test/commands.c
rename to test/cmdline_test/commands.c
diff --git a/app/test-acl/Makefile b/test/test-acl/Makefile
similarity index 100%
rename from app/test-acl/Makefile
rename to test/test-acl/Makefile
diff --git a/app/test-acl/main.c b/test/test-acl/main.c
similarity index 100%
rename from app/test-acl/main.c
rename to test/test-acl/main.c
diff --git a/app/test-pipeline/Makefile b/test/test-pipeline/Makefile
similarity index 100%
rename from app/test-pipeline/Makefile
rename to test/test-pipeline/Makefile
diff --git a/app/test-pipeline/config.c b/test/test-pipeline/config.c
similarity index 100%
rename from app/test-pipeline/config.c
rename to test/test-pipeline/config.c
diff --git a/app/test-pipeline/init.c b/test/test-pipeline/init.c
similarity index 100%
rename from app/test-pipeline/init.c
rename to test/test-pipeline/init.c
diff --git a/app/test-pipeline/main.c b/test/test-pipeline/main.c
similarity index 100%
rename from app/test-pipeline/main.c
rename to test/test-pipeline/main.c
diff --git a/app/test-pipeline/main.h b/test/test-pipeline/main.h
similarity index 100%
rename from app/test-pipeline/main.h
rename to test/test-pipeline/main.h
diff --git a/app/test-pipeline/pipeline_acl.c b/test/test-pipeline/pipeline_acl.c
similarity index 100%
rename from app/test-pipeline/pipeline_acl.c
rename to test/test-pipeline/pipeline_acl.c
diff --git a/app/test-pipeline/pipeline_hash.c b/test/test-pipeline/pipeline_hash.c
similarity index 100%
rename from app/test-pipeline/pipeline_hash.c
rename to test/test-pipeline/pipeline_hash.c
diff --git a/app/test-pipeline/pipeline_lpm.c b/test/test-pipeline/pipeline_lpm.c
similarity index 100%
rename from app/test-pipeline/pipeline_lpm.c
rename to test/test-pipeline/pipeline_lpm.c
diff --git a/app/test-pipeline/pipeline_lpm_ipv6.c b/test/test-pipeline/pipeline_lpm_ipv6.c
similarity index 100%
rename from app/test-pipeline/pipeline_lpm_ipv6.c
rename to test/test-pipeline/pipeline_lpm_ipv6.c
diff --git a/app/test-pipeline/pipeline_stub.c b/test/test-pipeline/pipeline_stub.c
similarity index 100%
rename from app/test-pipeline/pipeline_stub.c
rename to test/test-pipeline/pipeline_stub.c
diff --git a/app/test-pipeline/runtime.c b/test/test-pipeline/runtime.c
similarity index 100%
rename from app/test-pipeline/runtime.c
rename to test/test-pipeline/runtime.c
diff --git a/app/test/Makefile b/test/test/Makefile
similarity index 100%
rename from app/test/Makefile
rename to test/test/Makefile
diff --git a/app/test/autotest.py b/test/test/autotest.py
similarity index 100%
rename from app/test/autotest.py
rename to test/test/autotest.py
diff --git a/app/test/autotest_data.py b/test/test/autotest_data.py
similarity index 100%
rename from app/test/autotest_data.py
rename to test/test/autotest_data.py
diff --git a/app/test/autotest_runner.py b/test/test/autotest_runner.py
similarity index 100%
rename from app/test/autotest_runner.py
rename to test/test/autotest_runner.py
diff --git a/app/test/autotest_test_funcs.py b/test/test/autotest_test_funcs.py
similarity index 100%
rename from app/test/autotest_test_funcs.py
rename to test/test/autotest_test_funcs.py
diff --git a/app/test/commands.c b/test/test/commands.c
similarity index 100%
rename from app/test/commands.c
rename to test/test/commands.c
diff --git a/app/test/packet_burst_generator.c b/test/test/packet_burst_generator.c
similarity index 100%
rename from app/test/packet_burst_generator.c
rename to test/test/packet_burst_generator.c
diff --git a/app/test/packet_burst_generator.h b/test/test/packet_burst_generator.h
similarity index 100%
rename from app/test/packet_burst_generator.h
rename to test/test/packet_burst_generator.h
diff --git a/app/test/process.h b/test/test/process.h
similarity index 100%
rename from app/test/process.h
rename to test/test/process.h
diff --git a/app/test/resource.c b/test/test/resource.c
similarity index 100%
rename from app/test/resource.c
rename to test/test/resource.c
diff --git a/app/test/resource.h b/test/test/resource.h
similarity index 100%
rename from app/test/resource.h
rename to test/test/resource.h
diff --git a/app/test/test.c b/test/test/test.c
similarity index 100%
rename from app/test/test.c
rename to test/test/test.c
diff --git a/app/test/test.h b/test/test/test.h
similarity index 100%
rename from app/test/test.h
rename to test/test/test.h
diff --git a/app/test/test_acl.c b/test/test/test_acl.c
similarity index 100%
rename from app/test/test_acl.c
rename to test/test/test_acl.c
diff --git a/app/test/test_acl.h b/test/test/test_acl.h
similarity index 100%
rename from app/test/test_acl.h
rename to test/test/test_acl.h
diff --git a/app/test/test_alarm.c b/test/test/test_alarm.c
similarity index 100%
rename from app/test/test_alarm.c
rename to test/test/test_alarm.c
diff --git a/app/test/test_atomic.c b/test/test/test_atomic.c
similarity index 100%
rename from app/test/test_atomic.c
rename to test/test/test_atomic.c
diff --git a/app/test/test_byteorder.c b/test/test/test_byteorder.c
similarity index 100%
rename from app/test/test_byteorder.c
rename to test/test/test_byteorder.c
diff --git a/app/test/test_cmdline.c b/test/test/test_cmdline.c
similarity index 100%
rename from app/test/test_cmdline.c
rename to test/test/test_cmdline.c
diff --git a/app/test/test_cmdline.h b/test/test/test_cmdline.h
similarity index 100%
rename from app/test/test_cmdline.h
rename to test/test/test_cmdline.h
diff --git a/app/test/test_cmdline_cirbuf.c b/test/test/test_cmdline_cirbuf.c
similarity index 100%
rename from app/test/test_cmdline_cirbuf.c
rename to test/test/test_cmdline_cirbuf.c
diff --git a/app/test/test_cmdline_etheraddr.c b/test/test/test_cmdline_etheraddr.c
similarity index 100%
rename from app/test/test_cmdline_etheraddr.c
rename to test/test/test_cmdline_etheraddr.c
diff --git a/app/test/test_cmdline_ipaddr.c b/test/test/test_cmdline_ipaddr.c
similarity index 100%
rename from app/test/test_cmdline_ipaddr.c
rename to test/test/test_cmdline_ipaddr.c
diff --git a/app/test/test_cmdline_lib.c b/test/test/test_cmdline_lib.c
similarity index 100%
rename from app/test/test_cmdline_lib.c
rename to test/test/test_cmdline_lib.c
diff --git a/app/test/test_cmdline_num.c b/test/test/test_cmdline_num.c
similarity index 100%
rename from app/test/test_cmdline_num.c
rename to test/test/test_cmdline_num.c
diff --git a/app/test/test_cmdline_portlist.c b/test/test/test_cmdline_portlist.c
similarity index 100%
rename from app/test/test_cmdline_portlist.c
rename to test/test/test_cmdline_portlist.c
diff --git a/app/test/test_cmdline_string.c b/test/test/test_cmdline_string.c
similarity index 100%
rename from app/test/test_cmdline_string.c
rename to test/test/test_cmdline_string.c
diff --git a/app/test/test_common.c b/test/test/test_common.c
similarity index 100%
rename from app/test/test_common.c
rename to test/test/test_common.c
diff --git a/app/test/test_cpuflags.c b/test/test/test_cpuflags.c
similarity index 100%
rename from app/test/test_cpuflags.c
rename to test/test/test_cpuflags.c
diff --git a/app/test/test_cryptodev.c b/test/test/test_cryptodev.c
similarity index 100%
rename from app/test/test_cryptodev.c
rename to test/test/test_cryptodev.c
diff --git a/app/test/test_cryptodev.h b/test/test/test_cryptodev.h
similarity index 100%
rename from app/test/test_cryptodev.h
rename to test/test/test_cryptodev.h
diff --git a/app/test/test_cryptodev_aes_test_vectors.h b/test/test/test_cryptodev_aes_test_vectors.h
similarity index 100%
rename from app/test/test_cryptodev_aes_test_vectors.h
rename to test/test/test_cryptodev_aes_test_vectors.h
diff --git a/app/test/test_cryptodev_blockcipher.c b/test/test/test_cryptodev_blockcipher.c
similarity index 100%
rename from app/test/test_cryptodev_blockcipher.c
rename to test/test/test_cryptodev_blockcipher.c
diff --git a/app/test/test_cryptodev_blockcipher.h b/test/test/test_cryptodev_blockcipher.h
similarity index 100%
rename from app/test/test_cryptodev_blockcipher.h
rename to test/test/test_cryptodev_blockcipher.h
diff --git a/app/test/test_cryptodev_des_test_vectors.h b/test/test/test_cryptodev_des_test_vectors.h
similarity index 100%
rename from app/test/test_cryptodev_des_test_vectors.h
rename to test/test/test_cryptodev_des_test_vectors.h
diff --git a/app/test/test_cryptodev_gcm_test_vectors.h b/test/test/test_cryptodev_gcm_test_vectors.h
similarity index 100%
rename from app/test/test_cryptodev_gcm_test_vectors.h
rename to test/test/test_cryptodev_gcm_test_vectors.h
diff --git a/app/test/test_cryptodev_hash_test_vectors.h b/test/test/test_cryptodev_hash_test_vectors.h
similarity index 100%
rename from app/test/test_cryptodev_hash_test_vectors.h
rename to test/test/test_cryptodev_hash_test_vectors.h
diff --git a/app/test/test_cryptodev_hmac_test_vectors.h b/test/test/test_cryptodev_hmac_test_vectors.h
similarity index 100%
rename from app/test/test_cryptodev_hmac_test_vectors.h
rename to test/test/test_cryptodev_hmac_test_vectors.h
diff --git a/app/test/test_cryptodev_kasumi_hash_test_vectors.h b/test/test/test_cryptodev_kasumi_hash_test_vectors.h
similarity index 100%
rename from app/test/test_cryptodev_kasumi_hash_test_vectors.h
rename to test/test/test_cryptodev_kasumi_hash_test_vectors.h
diff --git a/app/test/test_cryptodev_kasumi_test_vectors.h b/test/test/test_cryptodev_kasumi_test_vectors.h
similarity index 100%
rename from app/test/test_cryptodev_kasumi_test_vectors.h
rename to test/test/test_cryptodev_kasumi_test_vectors.h
diff --git a/app/test/test_cryptodev_perf.c b/test/test/test_cryptodev_perf.c
similarity index 100%
rename from app/test/test_cryptodev_perf.c
rename to test/test/test_cryptodev_perf.c
diff --git a/app/test/test_cryptodev_snow3g_hash_test_vectors.h b/test/test/test_cryptodev_snow3g_hash_test_vectors.h
similarity index 100%
rename from app/test/test_cryptodev_snow3g_hash_test_vectors.h
rename to test/test/test_cryptodev_snow3g_hash_test_vectors.h
diff --git a/app/test/test_cryptodev_snow3g_test_vectors.h b/test/test/test_cryptodev_snow3g_test_vectors.h
similarity index 100%
rename from app/test/test_cryptodev_snow3g_test_vectors.h
rename to test/test/test_cryptodev_snow3g_test_vectors.h
diff --git a/app/test/test_cryptodev_zuc_hash_test_vectors.h b/test/test/test_cryptodev_zuc_hash_test_vectors.h
similarity index 100%
rename from app/test/test_cryptodev_zuc_hash_test_vectors.h
rename to test/test/test_cryptodev_zuc_hash_test_vectors.h
diff --git a/app/test/test_cryptodev_zuc_test_vectors.h b/test/test/test_cryptodev_zuc_test_vectors.h
similarity index 100%
rename from app/test/test_cryptodev_zuc_test_vectors.h
rename to test/test/test_cryptodev_zuc_test_vectors.h
diff --git a/app/test/test_cycles.c b/test/test/test_cycles.c
similarity index 100%
rename from app/test/test_cycles.c
rename to test/test/test_cycles.c
diff --git a/app/test/test_debug.c b/test/test/test_debug.c
similarity index 100%
rename from app/test/test_debug.c
rename to test/test/test_debug.c
diff --git a/app/test/test_devargs.c b/test/test/test_devargs.c
similarity index 100%
rename from app/test/test_devargs.c
rename to test/test/test_devargs.c
diff --git a/app/test/test_distributor.c b/test/test/test_distributor.c
similarity index 100%
rename from app/test/test_distributor.c
rename to test/test/test_distributor.c
diff --git a/app/test/test_distributor_perf.c b/test/test/test_distributor_perf.c
similarity index 100%
rename from app/test/test_distributor_perf.c
rename to test/test/test_distributor_perf.c
diff --git a/app/test/test_eal_flags.c b/test/test/test_eal_flags.c
similarity index 100%
rename from app/test/test_eal_flags.c
rename to test/test/test_eal_flags.c
diff --git a/app/test/test_eal_fs.c b/test/test/test_eal_fs.c
similarity index 100%
rename from app/test/test_eal_fs.c
rename to test/test/test_eal_fs.c
diff --git a/app/test/test_efd.c b/test/test/test_efd.c
similarity index 100%
rename from app/test/test_efd.c
rename to test/test/test_efd.c
diff --git a/app/test/test_efd_perf.c b/test/test/test_efd_perf.c
similarity index 100%
rename from app/test/test_efd_perf.c
rename to test/test/test_efd_perf.c
diff --git a/app/test/test_errno.c b/test/test/test_errno.c
similarity index 100%
rename from app/test/test_errno.c
rename to test/test/test_errno.c
diff --git a/app/test/test_func_reentrancy.c b/test/test/test_func_reentrancy.c
similarity index 100%
rename from app/test/test_func_reentrancy.c
rename to test/test/test_func_reentrancy.c
diff --git a/app/test/test_hash.c b/test/test/test_hash.c
similarity index 100%
rename from app/test/test_hash.c
rename to test/test/test_hash.c
diff --git a/app/test/test_hash_functions.c b/test/test/test_hash_functions.c
similarity index 100%
rename from app/test/test_hash_functions.c
rename to test/test/test_hash_functions.c
diff --git a/app/test/test_hash_multiwriter.c b/test/test/test_hash_multiwriter.c
similarity index 100%
rename from app/test/test_hash_multiwriter.c
rename to test/test/test_hash_multiwriter.c
diff --git a/app/test/test_hash_perf.c b/test/test/test_hash_perf.c
similarity index 100%
rename from app/test/test_hash_perf.c
rename to test/test/test_hash_perf.c
diff --git a/app/test/test_hash_scaling.c b/test/test/test_hash_scaling.c
similarity index 100%
rename from app/test/test_hash_scaling.c
rename to test/test/test_hash_scaling.c
diff --git a/app/test/test_interrupts.c b/test/test/test_interrupts.c
similarity index 100%
rename from app/test/test_interrupts.c
rename to test/test/test_interrupts.c
diff --git a/app/test/test_kni.c b/test/test/test_kni.c
similarity index 100%
rename from app/test/test_kni.c
rename to test/test/test_kni.c
diff --git a/app/test/test_kvargs.c b/test/test/test_kvargs.c
similarity index 100%
rename from app/test/test_kvargs.c
rename to test/test/test_kvargs.c
diff --git a/app/test/test_link_bonding.c b/test/test/test_link_bonding.c
similarity index 100%
rename from app/test/test_link_bonding.c
rename to test/test/test_link_bonding.c
diff --git a/app/test/test_link_bonding_mode4.c b/test/test/test_link_bonding_mode4.c
similarity index 100%
rename from app/test/test_link_bonding_mode4.c
rename to test/test/test_link_bonding_mode4.c
diff --git a/app/test/test_link_bonding_rssconf.c b/test/test/test_link_bonding_rssconf.c
similarity index 100%
rename from app/test/test_link_bonding_rssconf.c
rename to test/test/test_link_bonding_rssconf.c
diff --git a/app/test/test_logs.c b/test/test/test_logs.c
similarity index 100%
rename from app/test/test_logs.c
rename to test/test/test_logs.c
diff --git a/app/test/test_lpm.c b/test/test/test_lpm.c
similarity index 100%
rename from app/test/test_lpm.c
rename to test/test/test_lpm.c
diff --git a/app/test/test_lpm6.c b/test/test/test_lpm6.c
similarity index 100%
rename from app/test/test_lpm6.c
rename to test/test/test_lpm6.c
diff --git a/app/test/test_lpm6_data.h b/test/test/test_lpm6_data.h
similarity index 100%
rename from app/test/test_lpm6_data.h
rename to test/test/test_lpm6_data.h
diff --git a/app/test/test_lpm6_perf.c b/test/test/test_lpm6_perf.c
similarity index 100%
rename from app/test/test_lpm6_perf.c
rename to test/test/test_lpm6_perf.c
diff --git a/app/test/test_lpm_perf.c b/test/test/test_lpm_perf.c
similarity index 100%
rename from app/test/test_lpm_perf.c
rename to test/test/test_lpm_perf.c
diff --git a/app/test/test_malloc.c b/test/test/test_malloc.c
similarity index 100%
rename from app/test/test_malloc.c
rename to test/test/test_malloc.c
diff --git a/app/test/test_mbuf.c b/test/test/test_mbuf.c
similarity index 100%
rename from app/test/test_mbuf.c
rename to test/test/test_mbuf.c
diff --git a/app/test/test_memcpy.c b/test/test/test_memcpy.c
similarity index 100%
rename from app/test/test_memcpy.c
rename to test/test/test_memcpy.c
diff --git a/app/test/test_memcpy_perf.c b/test/test/test_memcpy_perf.c
similarity index 100%
rename from app/test/test_memcpy_perf.c
rename to test/test/test_memcpy_perf.c
diff --git a/app/test/test_memory.c b/test/test/test_memory.c
similarity index 100%
rename from app/test/test_memory.c
rename to test/test/test_memory.c
diff --git a/app/test/test_mempool.c b/test/test/test_mempool.c
similarity index 100%
rename from app/test/test_mempool.c
rename to test/test/test_mempool.c
diff --git a/app/test/test_mempool_perf.c b/test/test/test_mempool_perf.c
similarity index 100%
rename from app/test/test_mempool_perf.c
rename to test/test/test_mempool_perf.c
diff --git a/app/test/test_memzone.c b/test/test/test_memzone.c
similarity index 100%
rename from app/test/test_memzone.c
rename to test/test/test_memzone.c
diff --git a/app/test/test_meter.c b/test/test/test_meter.c
similarity index 100%
rename from app/test/test_meter.c
rename to test/test/test_meter.c
diff --git a/app/test/test_mp_secondary.c b/test/test/test_mp_secondary.c
similarity index 100%
rename from app/test/test_mp_secondary.c
rename to test/test/test_mp_secondary.c
diff --git a/app/test/test_pci.c b/test/test/test_pci.c
similarity index 100%
rename from app/test/test_pci.c
rename to test/test/test_pci.c
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/class b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/class
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/class
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/class
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/config b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/config
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/config
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/config
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/consistent_dma_mask_bits b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/consistent_dma_mask_bits
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/consistent_dma_mask_bits
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/consistent_dma_mask_bits
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/device b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/device
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/device
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/device
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/dma_mask_bits b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/dma_mask_bits
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/dma_mask_bits
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/dma_mask_bits
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/enable b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/enable
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/enable
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/enable
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/irq b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/irq
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/irq
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/irq
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/modalias b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/modalias
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/modalias
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/modalias
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/msi_bus b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/msi_bus
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/msi_bus
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/msi_bus
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/numa_node b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/numa_node
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/numa_node
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/numa_node
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/resource b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/resource
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/resource
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/resource
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/sriov_numvfs b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/sriov_numvfs
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/sriov_numvfs
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/sriov_numvfs
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/sriov_totalvfs b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/sriov_totalvfs
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/sriov_totalvfs
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/sriov_totalvfs
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/subsystem_device b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/subsystem_device
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/subsystem_device
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/subsystem_device
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/subsystem_vendor b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/subsystem_vendor
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/subsystem_vendor
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/subsystem_vendor
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/uevent b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/uevent
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/uevent
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/uevent
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/vendor b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/vendor
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/vendor
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0/vendor
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/class b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/class
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/class
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/class
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/device b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/device
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/device
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/device
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/resource b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/resource
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/resource
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/resource
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/subsystem_device b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/subsystem_device
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/subsystem_device
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/subsystem_device
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/subsystem_vendor b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/subsystem_vendor
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/subsystem_vendor
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/subsystem_vendor
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/vendor b/test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/vendor
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/vendor
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:01:02.0/vendor
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/class b/test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/class
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/class
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/class
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/device b/test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/device
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/device
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/device
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/resource b/test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/resource
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/resource
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/resource
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/subsystem_device b/test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/subsystem_device
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/subsystem_device
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/subsystem_device
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/subsystem_vendor b/test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/subsystem_vendor
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/subsystem_vendor
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/subsystem_vendor
diff --git a/app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/vendor b/test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/vendor
similarity index 100%
rename from app/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/vendor
rename to test/test/test_pci_sysfs/bus/pci/devices/0000:02:ab.0/vendor
diff --git a/app/test/test_per_lcore.c b/test/test/test_per_lcore.c
similarity index 100%
rename from app/test/test_per_lcore.c
rename to test/test/test_per_lcore.c
diff --git a/app/test/test_pmd_perf.c b/test/test/test_pmd_perf.c
similarity index 100%
rename from app/test/test_pmd_perf.c
rename to test/test/test_pmd_perf.c
diff --git a/app/test/test_pmd_ring.c b/test/test/test_pmd_ring.c
similarity index 100%
rename from app/test/test_pmd_ring.c
rename to test/test/test_pmd_ring.c
diff --git a/app/test/test_pmd_ring_perf.c b/test/test/test_pmd_ring_perf.c
similarity index 100%
rename from app/test/test_pmd_ring_perf.c
rename to test/test/test_pmd_ring_perf.c
diff --git a/app/test/test_power.c b/test/test/test_power.c
similarity index 100%
rename from app/test/test_power.c
rename to test/test/test_power.c
diff --git a/app/test/test_power_acpi_cpufreq.c b/test/test/test_power_acpi_cpufreq.c
similarity index 100%
rename from app/test/test_power_acpi_cpufreq.c
rename to test/test/test_power_acpi_cpufreq.c
diff --git a/app/test/test_power_kvm_vm.c b/test/test/test_power_kvm_vm.c
similarity index 100%
rename from app/test/test_power_kvm_vm.c
rename to test/test/test_power_kvm_vm.c
diff --git a/app/test/test_prefetch.c b/test/test/test_prefetch.c
similarity index 100%
rename from app/test/test_prefetch.c
rename to test/test/test_prefetch.c
diff --git a/app/test/test_red.c b/test/test/test_red.c
similarity index 100%
rename from app/test/test_red.c
rename to test/test/test_red.c
diff --git a/app/test/test_reorder.c b/test/test/test_reorder.c
similarity index 100%
rename from app/test/test_reorder.c
rename to test/test/test_reorder.c
diff --git a/app/test/test_resource.c b/test/test/test_resource.c
similarity index 100%
rename from app/test/test_resource.c
rename to test/test/test_resource.c
diff --git a/app/test/test_ring.c b/test/test/test_ring.c
similarity index 100%
rename from app/test/test_ring.c
rename to test/test/test_ring.c
diff --git a/app/test/test_ring_perf.c b/test/test/test_ring_perf.c
similarity index 100%
rename from app/test/test_ring_perf.c
rename to test/test/test_ring_perf.c
diff --git a/app/test/test_rwlock.c b/test/test/test_rwlock.c
similarity index 100%
rename from app/test/test_rwlock.c
rename to test/test/test_rwlock.c
diff --git a/app/test/test_sched.c b/test/test/test_sched.c
similarity index 100%
rename from app/test/test_sched.c
rename to test/test/test_sched.c
diff --git a/app/test/test_spinlock.c b/test/test/test_spinlock.c
similarity index 100%
rename from app/test/test_spinlock.c
rename to test/test/test_spinlock.c
diff --git a/app/test/test_string_fns.c b/test/test/test_string_fns.c
similarity index 100%
rename from app/test/test_string_fns.c
rename to test/test/test_string_fns.c
diff --git a/app/test/test_table.c b/test/test/test_table.c
similarity index 100%
rename from app/test/test_table.c
rename to test/test/test_table.c
diff --git a/app/test/test_table.h b/test/test/test_table.h
similarity index 100%
rename from app/test/test_table.h
rename to test/test/test_table.h
diff --git a/app/test/test_table_acl.c b/test/test/test_table_acl.c
similarity index 100%
rename from app/test/test_table_acl.c
rename to test/test/test_table_acl.c
diff --git a/app/test/test_table_acl.h b/test/test/test_table_acl.h
similarity index 100%
rename from app/test/test_table_acl.h
rename to test/test/test_table_acl.h
diff --git a/app/test/test_table_combined.c b/test/test/test_table_combined.c
similarity index 100%
rename from app/test/test_table_combined.c
rename to test/test/test_table_combined.c
diff --git a/app/test/test_table_combined.h b/test/test/test_table_combined.h
similarity index 100%
rename from app/test/test_table_combined.h
rename to test/test/test_table_combined.h
diff --git a/app/test/test_table_pipeline.c b/test/test/test_table_pipeline.c
similarity index 100%
rename from app/test/test_table_pipeline.c
rename to test/test/test_table_pipeline.c
diff --git a/app/test/test_table_pipeline.h b/test/test/test_table_pipeline.h
similarity index 100%
rename from app/test/test_table_pipeline.h
rename to test/test/test_table_pipeline.h
diff --git a/app/test/test_table_ports.c b/test/test/test_table_ports.c
similarity index 100%
rename from app/test/test_table_ports.c
rename to test/test/test_table_ports.c
diff --git a/app/test/test_table_ports.h b/test/test/test_table_ports.h
similarity index 100%
rename from app/test/test_table_ports.h
rename to test/test/test_table_ports.h
diff --git a/app/test/test_table_tables.c b/test/test/test_table_tables.c
similarity index 100%
rename from app/test/test_table_tables.c
rename to test/test/test_table_tables.c
diff --git a/app/test/test_table_tables.h b/test/test/test_table_tables.h
similarity index 100%
rename from app/test/test_table_tables.h
rename to test/test/test_table_tables.h
diff --git a/app/test/test_tailq.c b/test/test/test_tailq.c
similarity index 100%
rename from app/test/test_tailq.c
rename to test/test/test_tailq.c
diff --git a/app/test/test_thash.c b/test/test/test_thash.c
similarity index 100%
rename from app/test/test_thash.c
rename to test/test/test_thash.c
diff --git a/app/test/test_timer.c b/test/test/test_timer.c
similarity index 100%
rename from app/test/test_timer.c
rename to test/test/test_timer.c
diff --git a/app/test/test_timer_perf.c b/test/test/test_timer_perf.c
similarity index 100%
rename from app/test/test_timer_perf.c
rename to test/test/test_timer_perf.c
diff --git a/app/test/test_timer_racecond.c b/test/test/test_timer_racecond.c
similarity index 100%
rename from app/test/test_timer_racecond.c
rename to test/test/test_timer_racecond.c
diff --git a/app/test/test_version.c b/test/test/test_version.c
similarity index 100%
rename from app/test/test_version.c
rename to test/test/test_version.c
diff --git a/app/test/test_xmmt_ops.h b/test/test/test_xmmt_ops.h
similarity index 100%
rename from app/test/test_xmmt_ops.h
rename to test/test/test_xmmt_ops.h
diff --git a/app/test/virtual_pmd.c b/test/test/virtual_pmd.c
similarity index 100%
rename from app/test/virtual_pmd.c
rename to test/test/virtual_pmd.c
diff --git a/app/test/virtual_pmd.h b/test/test/virtual_pmd.h
similarity index 100%
rename from app/test/virtual_pmd.h
rename to test/test/virtual_pmd.h
-- 
2.9.3

^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH v2 2/5] mk: do not build tests by default
  2017-02-16 14:57   ` [PATCH v2 1/5] " Ferruh Yigit
@ 2017-02-16 14:57     ` Ferruh Yigit
  2017-02-16 14:57     ` [PATCH v2 3/5] mk: add new test-basic make rule Ferruh Yigit
                       ` (3 subsequent siblings)
  4 siblings, 0 replies; 34+ messages in thread
From: Ferruh Yigit @ 2017-02-16 14:57 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: dev, Ferruh Yigit, Bruce Richardson, John McNamara, Keith Wiles

Don't build tests with default "make" command.

Require explicit command to build tests because not everybody interested
in running unit tests.

Following changes done in make rules:
"make test-build"  <--- Added
"make test"        <--- Updated functionality (build + run basic tests)

Now "make test" builds all tests and runs unit test (test).

Thanks to dependency resolving, it is possible to call "make test"
directly after config, "make test" will compile dependent components
(lib and drivers, but not apps).

And a new "make test-build" make rule added which will build
tests but not run unit test. "make test-build" has same dependency
resolving features with "make test"

To include "test" folder into makesystem, existing ROOTDIRS- variable
is used instead of hardcoding folder name into makefiles, current usage
of ROOTDIRS* variables are:

ROOTDIRS-y <-- root level folders prepared and compiled by default
ROOTDIRS-  <-- root level folders prepared but not compiled by default

The preparation is required for dependency resolving and cleaning.

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 GNUmakefile          | 3 ++-
 mk/rte.sdkbuild.mk   | 9 ++++++---
 mk/rte.sdkdepdirs.mk | 2 +-
 mk/rte.sdkroot.mk    | 3 +++
 4 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/GNUmakefile b/GNUmakefile
index b1a5b76..45b7fbb 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -40,6 +40,7 @@ export RTE_SDK
 # directory list
 #
 
-ROOTDIRS-y := buildtools lib drivers app test
+ROOTDIRS-y := buildtools lib drivers app
+ROOTDIRS-  := test
 
 include $(RTE_SDK)/mk/rte.sdkroot.mk
diff --git a/mk/rte.sdkbuild.mk b/mk/rte.sdkbuild.mk
index db6b983..02ff35b 100644
--- a/mk/rte.sdkbuild.mk
+++ b/mk/rte.sdkbuild.mk
@@ -48,7 +48,7 @@ define depdirs_rule
 $(1): $(sort $(LOCAL_DEPDIRS-$(1)))
 endef
 
-$(foreach d,$(ROOTDIRS-y),$(eval $(call depdirs_rule,$(d))))
+$(foreach d,$(ROOTDIRS-y) $(ROOTDIRS-),$(eval $(call depdirs_rule,$(d))))
 drivers: | buildtools
 
 #
@@ -72,9 +72,12 @@ clean: $(CLEANDIRS)
 	$(Q)$(MAKE) -f $(RTE_SDK)/GNUmakefile gcovclean
 	@echo Clean complete
 
+.PHONY: test-build
+test-build: test
+
 .SECONDEXPANSION:
-.PHONY: $(ROOTDIRS-y)
-$(ROOTDIRS-y):
+.PHONY: $(ROOTDIRS-y) $(ROOTDIRS-)
+$(ROOTDIRS-y) $(ROOTDIRS-):
 	@[ -d $(BUILDDIR)/$@ ] || mkdir -p $(BUILDDIR)/$@
 	@echo "== Build $@"
 	$(Q)$(MAKE) S=$@ -f $(RTE_SRCDIR)/$@/Makefile -C $(BUILDDIR)/$@ all
diff --git a/mk/rte.sdkdepdirs.mk b/mk/rte.sdkdepdirs.mk
index 38fd863..1d4b12f 100644
--- a/mk/rte.sdkdepdirs.mk
+++ b/mk/rte.sdkdepdirs.mk
@@ -36,7 +36,7 @@ ifeq (,$(wildcard $(RTE_OUTPUT)/Makefile))
   $(error "need a make config first")
 endif
 
-DEPDIR_FILES = $(addsuffix /.depdirs, $(addprefix $(BUILDDIR)/,$(ROOTDIRS-y)))
+DEPDIR_FILES = $(addsuffix /.depdirs, $(addprefix $(BUILDDIR)/,$(ROOTDIRS-y) $(ROOTDIRS-)))
 
 .PHONY: depdirs
 depdirs: $(RTE_OUTPUT)/.depdirs
diff --git a/mk/rte.sdkroot.mk b/mk/rte.sdkroot.mk
index 04ad523..1bc0f94 100644
--- a/mk/rte.sdkroot.mk
+++ b/mk/rte.sdkroot.mk
@@ -96,6 +96,9 @@ config showconfigs showversion showversionum:
 test fast_test ring_test mempool_test perf_test coverage:
 	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdktest.mk $@
 
+.PHONY: test-buid
+test: test-build
+
 .PHONY: install
 install:
 	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkinstall.mk pre_install
-- 
2.9.3

^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH v2 3/5] mk: add new test-basic make rule
  2017-02-16 14:57   ` [PATCH v2 1/5] " Ferruh Yigit
  2017-02-16 14:57     ` [PATCH v2 2/5] mk: do not build tests by default Ferruh Yigit
@ 2017-02-16 14:57     ` Ferruh Yigit
  2017-02-16 14:57     ` [PATCH v2 4/5] mk: rename test related make rules Ferruh Yigit
                       ` (2 subsequent siblings)
  4 siblings, 0 replies; 34+ messages in thread
From: Ferruh Yigit @ 2017-02-16 14:57 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: dev, Ferruh Yigit, Bruce Richardson, John McNamara, Keith Wiles

Since "make test" and "make test-build" does dependency resolving, they
check for all dependent components (lib and drivers) which takes a few
seconds.

This is a good feature during development, but if the target is only
running unit test, that step is unnecessary, it is possible to compile
once and run unit test multiple times, without checking any code update.

For this purpose, a new make rule "make test-basic" added. Which only
runs the unit test, expects that unit test already compiled.

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 mk/rte.sdkroot.mk | 4 ++--
 mk/rte.sdktest.mk | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/mk/rte.sdkroot.mk b/mk/rte.sdkroot.mk
index 1bc0f94..498a85e 100644
--- a/mk/rte.sdkroot.mk
+++ b/mk/rte.sdkroot.mk
@@ -92,8 +92,8 @@ default: all
 config showconfigs showversion showversionum:
 	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkconfig.mk $@
 
-.PHONY: test fast_test ring_test mempool_test perf_test coverage
-test fast_test ring_test mempool_test perf_test coverage:
+.PHONY: test test-basic fast_test ring_test mempool_test perf_test coverage
+test test-basic fast_test ring_test mempool_test perf_test coverage:
 	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdktest.mk $@
 
 .PHONY: test-buid
diff --git a/mk/rte.sdktest.mk b/mk/rte.sdktest.mk
index 1cdb40b..d61d4d0 100644
--- a/mk/rte.sdktest.mk
+++ b/mk/rte.sdktest.mk
@@ -46,14 +46,14 @@ DIR := $(shell basename $(RTE_OUTPUT))
 #
 # test: launch auto-tests, very simple for now.
 #
-.PHONY: test fast_test perf_test coverage
+.PHONY: test test-basic fast_test perf_test coverage
 
 PERFLIST=ring_perf,mempool_perf,memcpy_perf,hash_perf,timer_perf
 coverage: BLACKLIST=-$(PERFLIST)
 fast_test: BLACKLIST=-$(PERFLIST)
 perf_test: WHITELIST=$(PERFLIST)
 
-test fast_test perf_test:
+test test-basic fast_test perf_test:
 	@mkdir -p $(AUTOTEST_DIR) ; \
 	cd $(AUTOTEST_DIR) ; \
 	if [ -f $(RTE_OUTPUT)/app/test ]; then \
-- 
2.9.3

^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH v2 4/5] mk: rename test related make rules
  2017-02-16 14:57   ` [PATCH v2 1/5] " Ferruh Yigit
  2017-02-16 14:57     ` [PATCH v2 2/5] mk: do not build tests by default Ferruh Yigit
  2017-02-16 14:57     ` [PATCH v2 3/5] mk: add new test-basic make rule Ferruh Yigit
@ 2017-02-16 14:57     ` Ferruh Yigit
  2017-02-16 14:57     ` [PATCH v2 5/5] doc: document test related make rules in make help Ferruh Yigit
  2017-02-28 15:19     ` [PATCH v2 1/5] test: move tests to separate folder Thomas Monjalon
  4 siblings, 0 replies; 34+ messages in thread
From: Ferruh Yigit @ 2017-02-16 14:57 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: dev, Ferruh Yigit, Bruce Richardson, John McNamara, Keith Wiles

Make rules renamed to a common syntax, test-x:
fast_test    -> test-fast
ring_test    -> test-ring
mempool_test -> test-mempool
perf_test    -> test-perf

These are to run various sub-set of the unit tests.

Not touched to make rules that are already following the syntax:
test-basic
test-build
test

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 mk/rte.sdkroot.mk | 4 ++--
 mk/rte.sdktest.mk | 8 ++++----
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/mk/rte.sdkroot.mk b/mk/rte.sdkroot.mk
index 498a85e..7598bde 100644
--- a/mk/rte.sdkroot.mk
+++ b/mk/rte.sdkroot.mk
@@ -92,8 +92,8 @@ default: all
 config showconfigs showversion showversionum:
 	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkconfig.mk $@
 
-.PHONY: test test-basic fast_test ring_test mempool_test perf_test coverage
-test test-basic fast_test ring_test mempool_test perf_test coverage:
+.PHONY: test test-basic test-fast test-ring test-mempool test-perf coverage
+test test-basic test-fast test-ring test-mempool test-perf coverage:
 	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdktest.mk $@
 
 .PHONY: test-buid
diff --git a/mk/rte.sdktest.mk b/mk/rte.sdktest.mk
index d61d4d0..9cc7d59 100644
--- a/mk/rte.sdktest.mk
+++ b/mk/rte.sdktest.mk
@@ -46,14 +46,14 @@ DIR := $(shell basename $(RTE_OUTPUT))
 #
 # test: launch auto-tests, very simple for now.
 #
-.PHONY: test test-basic fast_test perf_test coverage
+.PHONY: test test-basic test-fast test-perf coverage
 
 PERFLIST=ring_perf,mempool_perf,memcpy_perf,hash_perf,timer_perf
 coverage: BLACKLIST=-$(PERFLIST)
-fast_test: BLACKLIST=-$(PERFLIST)
-perf_test: WHITELIST=$(PERFLIST)
+test-fast: BLACKLIST=-$(PERFLIST)
+test-perf: WHITELIST=$(PERFLIST)
 
-test test-basic fast_test perf_test:
+test test-basic test-fast test-perf:
 	@mkdir -p $(AUTOTEST_DIR) ; \
 	cd $(AUTOTEST_DIR) ; \
 	if [ -f $(RTE_OUTPUT)/app/test ]; then \
-- 
2.9.3

^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH v2 5/5] doc: document test related make rules in make help
  2017-02-16 14:57   ` [PATCH v2 1/5] " Ferruh Yigit
                       ` (2 preceding siblings ...)
  2017-02-16 14:57     ` [PATCH v2 4/5] mk: rename test related make rules Ferruh Yigit
@ 2017-02-16 14:57     ` Ferruh Yigit
  2017-02-20 15:23       ` Mcnamara, John
  2017-02-28 15:19     ` [PATCH v2 1/5] test: move tests to separate folder Thomas Monjalon
  4 siblings, 1 reply; 34+ messages in thread
From: Ferruh Yigit @ 2017-02-16 14:57 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: dev, Ferruh Yigit, Bruce Richardson, John McNamara, Keith Wiles

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 doc/build-sdk-quick.txt | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/doc/build-sdk-quick.txt b/doc/build-sdk-quick.txt
index 967ff09..8673b11 100644
--- a/doc/build-sdk-quick.txt
+++ b/doc/build-sdk-quick.txt
@@ -9,6 +9,8 @@ Build commands
 	install          install optionally staged in DESTDIR
 	examples         build examples for given targets (T=)
 	examples_clean   clean examples for given targets (T=)
+	test             compile tests and run basic unit tests
+	test-*           run specific subset of unit tests
 Build variables
 	EXTRA_CPPFLAGS   preprocessor options
 	EXTRA_CFLAGS     compiler options
-- 
2.9.3

^ permalink raw reply related	[flat|nested] 34+ messages in thread

* Re: [PATCH v2 5/5] doc: document test related make rules in make help
  2017-02-16 14:57     ` [PATCH v2 5/5] doc: document test related make rules in make help Ferruh Yigit
@ 2017-02-20 15:23       ` Mcnamara, John
  0 siblings, 0 replies; 34+ messages in thread
From: Mcnamara, John @ 2017-02-20 15:23 UTC (permalink / raw)
  To: Yigit, Ferruh, Thomas Monjalon; +Cc: dev, Richardson, Bruce, Wiles, Keith



> -----Original Message-----
> From: Yigit, Ferruh
> Sent: Thursday, February 16, 2017 2:58 PM
> To: Thomas Monjalon <thomas.monjalon@6wind.com>
> Cc: dev@dpdk.org; Yigit, Ferruh <ferruh.yigit@intel.com>; Richardson,
> Bruce <bruce.richardson@intel.com>; Mcnamara, John
> <john.mcnamara@intel.com>; Wiles, Keith <keith.wiles@intel.com>
> Subject: [PATCH v2 5/5] doc: document test related make rules in make help
> 
> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>

Acked-by: John McNamara <john.mcnamara@intel.com>

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH v2 1/5] test: move tests to separate folder
  2017-02-16 14:57   ` [PATCH v2 1/5] " Ferruh Yigit
                       ` (3 preceding siblings ...)
  2017-02-16 14:57     ` [PATCH v2 5/5] doc: document test related make rules in make help Ferruh Yigit
@ 2017-02-28 15:19     ` Thomas Monjalon
  4 siblings, 0 replies; 34+ messages in thread
From: Thomas Monjalon @ 2017-02-28 15:19 UTC (permalink / raw)
  To: Ferruh Yigit; +Cc: dev, Bruce Richardson, John McNamara, Keith Wiles

2017-02-16 14:57, Ferruh Yigit:
> This is to logically group unit tests into their own folder,
> separating them from "app" folder.
> 
> Hopefully this will make the unit test in DPDK more visible.
> 
> Following binaries moved to "test" folder:
> cmdline-test
> test-acl
> test-pipeline
> test            <-- various DPDK unit tests
> 
> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
> Acked-by: Bruce Richardson <bruce.richardson@intel.com>

I've fixed the MAINTAINERS file and applied the series, thanks

^ permalink raw reply	[flat|nested] 34+ messages in thread

end of thread, other threads:[~2017-02-28 15:19 UTC | newest]

Thread overview: 34+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-02-14 15:13 [RFC 17.05] test: move tests to separate folder Ferruh Yigit
2017-02-14 15:41 ` Bruce Richardson
2017-02-14 15:51   ` Wiles, Keith
2017-02-14 16:12   ` Mcnamara, John
2017-02-15  9:03     ` Thomas Monjalon
2017-02-14 17:07   ` Ferruh Yigit
2017-02-14 17:30     ` Richardson, Bruce
2017-02-15  2:11       ` Yuanhan Liu
2017-02-15 10:06         ` Ferruh Yigit
2017-02-15 11:16           ` Thomas Monjalon
2017-02-15 11:28             ` Ferruh Yigit
2017-02-14 16:15 ` Mcnamara, John
2017-02-15 15:26 ` [PATCH 1/4] " Ferruh Yigit
2017-02-15 15:26   ` [PATCH 2/4] mk: do not build tests by default Ferruh Yigit
2017-02-15 16:58     ` Thomas Monjalon
2017-02-15 17:30       ` Ferruh Yigit
2017-02-16  8:53         ` Thomas Monjalon
2017-02-16 10:07           ` Ferruh Yigit
2017-02-15 15:26   ` [PATCH 3/4] mk: add new test-run make rule Ferruh Yigit
2017-02-15 17:07     ` Bruce Richardson
2017-02-15 17:41       ` Ferruh Yigit
2017-02-16  9:08         ` Bruce Richardson
2017-02-16  9:26     ` Thomas Monjalon
2017-02-16 10:21       ` Ferruh Yigit
2017-02-16 10:44         ` Thomas Monjalon
2017-02-15 15:26   ` [PATCH 4/4] mk: rename test related make rules Ferruh Yigit
2017-02-16  9:10   ` [PATCH 1/4] test: move tests to separate folder Bruce Richardson
2017-02-16 14:57   ` [PATCH v2 1/5] " Ferruh Yigit
2017-02-16 14:57     ` [PATCH v2 2/5] mk: do not build tests by default Ferruh Yigit
2017-02-16 14:57     ` [PATCH v2 3/5] mk: add new test-basic make rule Ferruh Yigit
2017-02-16 14:57     ` [PATCH v2 4/5] mk: rename test related make rules Ferruh Yigit
2017-02-16 14:57     ` [PATCH v2 5/5] doc: document test related make rules in make help Ferruh Yigit
2017-02-20 15:23       ` Mcnamara, John
2017-02-28 15:19     ` [PATCH v2 1/5] test: move tests to separate folder Thomas Monjalon

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.