test/raw: run selftest on all devices
authorBruce Richardson <bruce.richardson@intel.com>
Thu, 10 Sep 2020 16:47:15 +0000 (17:47 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Tue, 6 Oct 2020 07:26:20 +0000 (09:26 +0200)
Rather than having each rawdev provide its own autotest command, we can
instead just use the generic rawdev_autotest to test any and all available
rawdevs.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: Kevin Laatz <kevin.laatz@intel.com>
app/test/test_rawdev.c
doc/guides/rel_notes/release_20_11.rst

index d8d9595..7e2fb2c 100644 (file)
 static int
 test_rawdev_selftest_impl(const char *pmd, const char *opts)
 {
+       int ret;
+
+       printf("\n### Test rawdev infrastructure using skeleton driver\n");
        rte_vdev_init(pmd, opts);
-       return rte_rawdev_selftest(rte_rawdev_get_dev_id(pmd));
+       ret = rte_rawdev_selftest(rte_rawdev_get_dev_id(pmd));
+       rte_vdev_uninit(pmd);
+       return ret;
 }
 
 static int
@@ -24,7 +29,32 @@ test_rawdev_selftest_skeleton(void)
        return test_rawdev_selftest_impl("rawdev_skeleton", "");
 }
 
-REGISTER_TEST_COMMAND(rawdev_autotest, test_rawdev_selftest_skeleton);
+static int
+test_rawdev_selftests(void)
+{
+       const int count = rte_rawdev_count();
+       int ret = 0;
+       int i;
+
+       /* basic sanity on rawdev infrastructure */
+       if (test_rawdev_selftest_skeleton() < 0)
+               return -1;
+
+       /* now run self-test on all rawdevs */
+       if (count > 0)
+               printf("\n### Run selftest on each available rawdev\n");
+       for (i = 0; i < count; i++) {
+               int result = rte_rawdev_selftest(i);
+               printf("Rawdev %u (%s) selftest: %s\n", i,
+                               rte_rawdevs[i].name,
+                               result == 0 ? "Passed" : "Failed");
+               ret |=  result;
+       }
+
+       return ret;
+}
+
+REGISTER_TEST_COMMAND(rawdev_autotest, test_rawdev_selftests);
 
 static int
 test_rawdev_selftest_ioat(void)
index a3fdbfa..d2d57ba 100644 (file)
@@ -209,6 +209,11 @@ API Changes
   and the function ``rte_rawdev_queue_conf_get()``
   from ``void`` to ``int`` allowing the return of error codes from drivers.
 
+* rawdev: The running of a drivers ``selftest()`` function can now be done
+  using the ``rawdev_autotest`` command in the ``dpdk-test`` binary. This
+  command now calls the self-test function for each rawdev found on the
+  system, and does not require a specific command per device type.
+
 * stack: the experimental tag has been dropped from the stack library, and its
   interfaces are considered stable as of DPDK 20.11.