mbox

[v2,0/2] add abi version testing to app/test

Message ID 20190822160717.13584-1-mdr@ashroe.eu (mailing list archive)
Headers

Message

Ray Kinsella Aug. 22, 2019, 4:07 p.m. UTC
This patchset adds ABI version testing to the app/test unit test framework,
addressing two issues previously raised during ML conversations on ABI
stability;

1. How do we unit test still supported previous ABI versions?
2. How to we unit test inline functions from still supported previous ABI
versions?

Starting with rte_lpm, I did the following:-

* I reproduced mostly unmodified unit tests for the v2.0 ABI, taken from DPDK
  2.2 and 17.02.
* I reproduced the rte_lpm interface header from v2.0, including the inline
  functions and remapping symbols to their appropriate versions.
* I added support for multiple abi versions to the app/test unit test framework
  to allow users to switch between abi versions (set_abi_version), without
  further polluting the already long list of unit tests available in app/test.

The intention here is that in future as developers need to deprecate APIs, the
associated unit tests may move into the ABI version testing mechanism of the
app/test instead of being replaced by the latest set of unit tests as would be
the case today.

v2:

* Added LPM IPv6 test cases for the v2.0 ABI.
* Fixed a number of checkpatch errors, stop short of substantially reworking
  the test code from the v2.0 ABI. 
* Removed duplicating test cases published in the original v1 patch.

Ray Kinsella (2):
  app/test: add abi version testing functionality
  app/test: lpm abi version testing

 app/test/Makefile                          |   12 +-
 app/test/commands.c                        |  131 +-
 app/test/meson.build                       |    6 +
 app/test/test.c                            |    2 +
 app/test/test.h                            |   48 +-
 app/test/test_lpm.c                        |    3 +-
 app/test/test_lpm6.c                       |    2 +-
 app/test/test_lpm_perf.c                   |  293 +---
 app/test/test_lpm_routes.c                 |  287 ++++
 app/test/test_lpm_routes.h                 |   25 +
 app/test/v2.0/dcompat.h                    |   30 +
 app/test/v2.0/rte_lpm.h                    |  451 +++++
 app/test/v2.0/rte_lpm6.h                   |  198 +++
 app/test/v2.0/test_lpm.c                   | 1139 +++++++++++++
 app/test/v2.0/test_lpm6.c                  | 1748 ++++++++++++++++++++
 app/test/v2.0/test_lpm6_perf.c             |  179 ++
 app/test/v2.0/test_lpm_perf.c              |  212 +++
 app/test/v2.0/test_v20.c                   |   14 +
 doc/guides/contributing/versioning.rst     |    4 +
 lib/librte_eal/common/include/rte_compat.h |    7 +
 20 files changed, 4471 insertions(+), 320 deletions(-)
 create mode 100644 app/test/test_lpm_routes.c
 create mode 100644 app/test/test_lpm_routes.h
 create mode 100644 app/test/v2.0/dcompat.h
 create mode 100644 app/test/v2.0/rte_lpm.h
 create mode 100644 app/test/v2.0/rte_lpm6.h
 create mode 100644 app/test/v2.0/test_lpm.c
 create mode 100644 app/test/v2.0/test_lpm6.c
 create mode 100644 app/test/v2.0/test_lpm6_perf.c
 create mode 100644 app/test/v2.0/test_lpm_perf.c
 create mode 100644 app/test/v2.0/test_v20.c