[dpdk-dev,RFC,17.05] test: move tests to separate folder

Message ID 20170214151326.7554-1-ferruh.yigit@intel.com (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Ferruh Yigit Feb. 14, 2017, 3:13 p.m. UTC
  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%)
  

Comments

Bruce Richardson Feb. 14, 2017, 3:41 p.m. UTC | #1
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
  
Wiles, Keith Feb. 14, 2017, 3:51 p.m. UTC | #2
> 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
  
John McNamara Feb. 14, 2017, 4:12 p.m. UTC | #3
> -----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
  
John McNamara Feb. 14, 2017, 4:15 p.m. UTC | #4
> -----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
  
Ferruh Yigit Feb. 14, 2017, 5:07 p.m. UTC | #5
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
>
  
Bruce Richardson Feb. 14, 2017, 5:30 p.m. UTC | #6
> -----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
  
Yuanhan Liu Feb. 15, 2017, 2:11 a.m. UTC | #7
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
  
Thomas Monjalon Feb. 15, 2017, 9:03 a.m. UTC | #8
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?
  
Ferruh Yigit Feb. 15, 2017, 10:06 a.m. UTC | #9
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
  
Thomas Monjalon Feb. 15, 2017, 11:16 a.m. UTC | #10
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.
  
Ferruh Yigit Feb. 15, 2017, 11:28 a.m. UTC | #11
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"
  

Patch

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