[dpdk-dev,RFC,17.05] test: move tests to separate folder
Checks
Commit Message
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
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
> 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
> -----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
> -----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
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
>
> -----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
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
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?
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
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.
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"
@@ -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
@@ -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
@@ -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
@@ -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); \
new file mode 100644
@@ -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
similarity index 100%
rename from app/cmdline_test/Makefile
rename to test/cmdline_test/Makefile
similarity index 100%
rename from app/cmdline_test/cmdline_test.c
rename to test/cmdline_test/cmdline_test.c
similarity index 100%
rename from app/cmdline_test/cmdline_test.h
rename to test/cmdline_test/cmdline_test.h
similarity index 100%
rename from app/cmdline_test/cmdline_test.py
rename to test/cmdline_test/cmdline_test.py
similarity index 100%
rename from app/cmdline_test/cmdline_test_data.py
rename to test/cmdline_test/cmdline_test_data.py
similarity index 100%
rename from app/cmdline_test/commands.c
rename to test/cmdline_test/commands.c
similarity index 100%
rename from app/test-acl/Makefile
rename to test/test-acl/Makefile
similarity index 100%
rename from app/test-acl/main.c
rename to test/test-acl/main.c
similarity index 100%
rename from app/test-pipeline/Makefile
rename to test/test-pipeline/Makefile
similarity index 100%
rename from app/test-pipeline/config.c
rename to test/test-pipeline/config.c
similarity index 100%
rename from app/test-pipeline/init.c
rename to test/test-pipeline/init.c
similarity index 100%
rename from app/test-pipeline/main.c
rename to test/test-pipeline/main.c
similarity index 100%
rename from app/test-pipeline/main.h
rename to test/test-pipeline/main.h
similarity index 100%
rename from app/test-pipeline/pipeline_acl.c
rename to test/test-pipeline/pipeline_acl.c
similarity index 100%
rename from app/test-pipeline/pipeline_hash.c
rename to test/test-pipeline/pipeline_hash.c
similarity index 100%
rename from app/test-pipeline/pipeline_lpm.c
rename to test/test-pipeline/pipeline_lpm.c
similarity index 100%
rename from app/test-pipeline/pipeline_lpm_ipv6.c
rename to test/test-pipeline/pipeline_lpm_ipv6.c
similarity index 100%
rename from app/test-pipeline/pipeline_stub.c
rename to test/test-pipeline/pipeline_stub.c
similarity index 100%
rename from app/test-pipeline/runtime.c
rename to test/test-pipeline/runtime.c
similarity index 100%
rename from app/test/Makefile
rename to test/test/Makefile
similarity index 100%
rename from app/test/autotest.py
rename to test/test/autotest.py
similarity index 100%
rename from app/test/autotest_data.py
rename to test/test/autotest_data.py
similarity index 100%
rename from app/test/autotest_runner.py
rename to test/test/autotest_runner.py
similarity index 100%
rename from app/test/autotest_test_funcs.py
rename to test/test/autotest_test_funcs.py
similarity index 100%
rename from app/test/commands.c
rename to test/test/commands.c
similarity index 100%
rename from app/test/packet_burst_generator.c
rename to test/test/packet_burst_generator.c
similarity index 100%
rename from app/test/packet_burst_generator.h
rename to test/test/packet_burst_generator.h
similarity index 100%
rename from app/test/process.h
rename to test/test/process.h
similarity index 100%
rename from app/test/resource.c
rename to test/test/resource.c
similarity index 100%
rename from app/test/resource.h
rename to test/test/resource.h
similarity index 100%
rename from app/test/test.c
rename to test/test/test.c
similarity index 100%
rename from app/test/test.h
rename to test/test/test.h
similarity index 100%
rename from app/test/test_acl.c
rename to test/test/test_acl.c
similarity index 100%
rename from app/test/test_acl.h
rename to test/test/test_acl.h
similarity index 100%
rename from app/test/test_alarm.c
rename to test/test/test_alarm.c
similarity index 100%
rename from app/test/test_atomic.c
rename to test/test/test_atomic.c
similarity index 100%
rename from app/test/test_byteorder.c
rename to test/test/test_byteorder.c
similarity index 100%
rename from app/test/test_cmdline.c
rename to test/test/test_cmdline.c
similarity index 100%
rename from app/test/test_cmdline.h
rename to test/test/test_cmdline.h
similarity index 100%
rename from app/test/test_cmdline_cirbuf.c
rename to test/test/test_cmdline_cirbuf.c
similarity index 100%
rename from app/test/test_cmdline_etheraddr.c
rename to test/test/test_cmdline_etheraddr.c
similarity index 100%
rename from app/test/test_cmdline_ipaddr.c
rename to test/test/test_cmdline_ipaddr.c
similarity index 100%
rename from app/test/test_cmdline_lib.c
rename to test/test/test_cmdline_lib.c
similarity index 100%
rename from app/test/test_cmdline_num.c
rename to test/test/test_cmdline_num.c
similarity index 100%
rename from app/test/test_cmdline_portlist.c
rename to test/test/test_cmdline_portlist.c
similarity index 100%
rename from app/test/test_cmdline_string.c
rename to test/test/test_cmdline_string.c
similarity index 100%
rename from app/test/test_common.c
rename to test/test/test_common.c
similarity index 100%
rename from app/test/test_cpuflags.c
rename to test/test/test_cpuflags.c
similarity index 100%
rename from app/test/test_cryptodev.c
rename to test/test/test_cryptodev.c
similarity index 100%
rename from app/test/test_cryptodev.h
rename to test/test/test_cryptodev.h
similarity index 100%
rename from app/test/test_cryptodev_aes_test_vectors.h
rename to test/test/test_cryptodev_aes_test_vectors.h
similarity index 100%
rename from app/test/test_cryptodev_blockcipher.c
rename to test/test/test_cryptodev_blockcipher.c
similarity index 100%
rename from app/test/test_cryptodev_blockcipher.h
rename to test/test/test_cryptodev_blockcipher.h
similarity index 100%
rename from app/test/test_cryptodev_des_test_vectors.h
rename to test/test/test_cryptodev_des_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
similarity index 100%
rename from app/test/test_cryptodev_hash_test_vectors.h
rename to test/test/test_cryptodev_hash_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
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
similarity index 100%
rename from app/test/test_cryptodev_kasumi_test_vectors.h
rename to test/test/test_cryptodev_kasumi_test_vectors.h
similarity index 100%
rename from app/test/test_cryptodev_perf.c
rename to test/test/test_cryptodev_perf.c
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
similarity index 100%
rename from app/test/test_cryptodev_snow3g_test_vectors.h
rename to test/test/test_cryptodev_snow3g_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
similarity index 100%
rename from app/test/test_cryptodev_zuc_test_vectors.h
rename to test/test/test_cryptodev_zuc_test_vectors.h
similarity index 100%
rename from app/test/test_cycles.c
rename to test/test/test_cycles.c
similarity index 100%
rename from app/test/test_debug.c
rename to test/test/test_debug.c
similarity index 100%
rename from app/test/test_devargs.c
rename to test/test/test_devargs.c
similarity index 100%
rename from app/test/test_distributor.c
rename to test/test/test_distributor.c
similarity index 100%
rename from app/test/test_distributor_perf.c
rename to test/test/test_distributor_perf.c
similarity index 100%
rename from app/test/test_eal_flags.c
rename to test/test/test_eal_flags.c
similarity index 100%
rename from app/test/test_eal_fs.c
rename to test/test/test_eal_fs.c
similarity index 100%
rename from app/test/test_efd.c
rename to test/test/test_efd.c
similarity index 100%
rename from app/test/test_efd_perf.c
rename to test/test/test_efd_perf.c
similarity index 100%
rename from app/test/test_errno.c
rename to test/test/test_errno.c
similarity index 100%
rename from app/test/test_func_reentrancy.c
rename to test/test/test_func_reentrancy.c
similarity index 100%
rename from app/test/test_hash.c
rename to test/test/test_hash.c
similarity index 100%
rename from app/test/test_hash_functions.c
rename to test/test/test_hash_functions.c
similarity index 100%
rename from app/test/test_hash_multiwriter.c
rename to test/test/test_hash_multiwriter.c
similarity index 100%
rename from app/test/test_hash_perf.c
rename to test/test/test_hash_perf.c
similarity index 100%
rename from app/test/test_hash_scaling.c
rename to test/test/test_hash_scaling.c
similarity index 100%
rename from app/test/test_interrupts.c
rename to test/test/test_interrupts.c
similarity index 100%
rename from app/test/test_kni.c
rename to test/test/test_kni.c
similarity index 100%
rename from app/test/test_kvargs.c
rename to test/test/test_kvargs.c
similarity index 100%
rename from app/test/test_link_bonding.c
rename to test/test/test_link_bonding.c
similarity index 100%
rename from app/test/test_link_bonding_mode4.c
rename to test/test/test_link_bonding_mode4.c
similarity index 100%
rename from app/test/test_link_bonding_rssconf.c
rename to test/test/test_link_bonding_rssconf.c
similarity index 100%
rename from app/test/test_logs.c
rename to test/test/test_logs.c
similarity index 100%
rename from app/test/test_lpm.c
rename to test/test/test_lpm.c
similarity index 100%
rename from app/test/test_lpm6.c
rename to test/test/test_lpm6.c
similarity index 100%
rename from app/test/test_lpm6_data.h
rename to test/test/test_lpm6_data.h
similarity index 100%
rename from app/test/test_lpm6_perf.c
rename to test/test/test_lpm6_perf.c
similarity index 100%
rename from app/test/test_lpm_perf.c
rename to test/test/test_lpm_perf.c
similarity index 100%
rename from app/test/test_malloc.c
rename to test/test/test_malloc.c
similarity index 100%
rename from app/test/test_mbuf.c
rename to test/test/test_mbuf.c
similarity index 100%
rename from app/test/test_memcpy.c
rename to test/test/test_memcpy.c
similarity index 100%
rename from app/test/test_memcpy_perf.c
rename to test/test/test_memcpy_perf.c
similarity index 100%
rename from app/test/test_memory.c
rename to test/test/test_memory.c
similarity index 100%
rename from app/test/test_mempool.c
rename to test/test/test_mempool.c
similarity index 100%
rename from app/test/test_mempool_perf.c
rename to test/test/test_mempool_perf.c
similarity index 100%
rename from app/test/test_memzone.c
rename to test/test/test_memzone.c
similarity index 100%
rename from app/test/test_meter.c
rename to test/test/test_meter.c
similarity index 100%
rename from app/test/test_mp_secondary.c
rename to test/test/test_mp_secondary.c
similarity index 100%
rename from app/test/test_pci.c
rename to test/test/test_pci.c
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
similarity index 100%
rename from app/test/test_per_lcore.c
rename to test/test/test_per_lcore.c
similarity index 100%
rename from app/test/test_pmd_perf.c
rename to test/test/test_pmd_perf.c
similarity index 100%
rename from app/test/test_pmd_ring.c
rename to test/test/test_pmd_ring.c
similarity index 100%
rename from app/test/test_pmd_ring_perf.c
rename to test/test/test_pmd_ring_perf.c
similarity index 100%
rename from app/test/test_power.c
rename to test/test/test_power.c
similarity index 100%
rename from app/test/test_power_acpi_cpufreq.c
rename to test/test/test_power_acpi_cpufreq.c
similarity index 100%
rename from app/test/test_power_kvm_vm.c
rename to test/test/test_power_kvm_vm.c
similarity index 100%
rename from app/test/test_prefetch.c
rename to test/test/test_prefetch.c
similarity index 100%
rename from app/test/test_red.c
rename to test/test/test_red.c
similarity index 100%
rename from app/test/test_reorder.c
rename to test/test/test_reorder.c
similarity index 100%
rename from app/test/test_resource.c
rename to test/test/test_resource.c
similarity index 100%
rename from app/test/test_ring.c
rename to test/test/test_ring.c
similarity index 100%
rename from app/test/test_ring_perf.c
rename to test/test/test_ring_perf.c
similarity index 100%
rename from app/test/test_rwlock.c
rename to test/test/test_rwlock.c
similarity index 100%
rename from app/test/test_sched.c
rename to test/test/test_sched.c
similarity index 100%
rename from app/test/test_spinlock.c
rename to test/test/test_spinlock.c
similarity index 100%
rename from app/test/test_string_fns.c
rename to test/test/test_string_fns.c
similarity index 100%
rename from app/test/test_table.c
rename to test/test/test_table.c
similarity index 100%
rename from app/test/test_table.h
rename to test/test/test_table.h
similarity index 100%
rename from app/test/test_table_acl.c
rename to test/test/test_table_acl.c
similarity index 100%
rename from app/test/test_table_acl.h
rename to test/test/test_table_acl.h
similarity index 100%
rename from app/test/test_table_combined.c
rename to test/test/test_table_combined.c
similarity index 100%
rename from app/test/test_table_combined.h
rename to test/test/test_table_combined.h
similarity index 100%
rename from app/test/test_table_pipeline.c
rename to test/test/test_table_pipeline.c
similarity index 100%
rename from app/test/test_table_pipeline.h
rename to test/test/test_table_pipeline.h
similarity index 100%
rename from app/test/test_table_ports.c
rename to test/test/test_table_ports.c
similarity index 100%
rename from app/test/test_table_ports.h
rename to test/test/test_table_ports.h
similarity index 100%
rename from app/test/test_table_tables.c
rename to test/test/test_table_tables.c
similarity index 100%
rename from app/test/test_table_tables.h
rename to test/test/test_table_tables.h
similarity index 100%
rename from app/test/test_tailq.c
rename to test/test/test_tailq.c
similarity index 100%
rename from app/test/test_thash.c
rename to test/test/test_thash.c
similarity index 100%
rename from app/test/test_timer.c
rename to test/test/test_timer.c
similarity index 100%
rename from app/test/test_timer_perf.c
rename to test/test/test_timer_perf.c
similarity index 100%
rename from app/test/test_timer_racecond.c
rename to test/test/test_timer_racecond.c
similarity index 100%
rename from app/test/test_version.c
rename to test/test/test_version.c
similarity index 100%
rename from app/test/test_xmmt_ops.h
rename to test/test/test_xmmt_ops.h
similarity index 100%
rename from app/test/virtual_pmd.c
rename to test/test/virtual_pmd.c
similarity index 100%
rename from app/test/virtual_pmd.h
rename to test/test/virtual_pmd.h