aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Williams <alex.williams@ni.com>2019-11-04 15:54:35 -0800
committerMartin Braun <martin.braun@ettus.com>2019-11-26 12:21:33 -0800
commit70ed069b6e36b1823339cb0ac48f383c992de3b0 (patch)
tree9910b21f4ab84a81f6b2c1b51afed9a1a3f7f7e7
parent80ec3fee4298d5b0defd98db7dcf1a01f49e9778 (diff)
downloaduhd-70ed069b6e36b1823339cb0ac48f383c992de3b0.tar.gz
uhd-70ed069b6e36b1823339cb0ac48f383c992de3b0.tar.bz2
uhd-70ed069b6e36b1823339cb0ac48f383c992de3b0.zip
tests: Add check for life on DPDK port
-rw-r--r--host/tests/CMakeLists.txt21
-rw-r--r--host/tests/dpdk_port_test.cpp41
2 files changed, 62 insertions, 0 deletions
diff --git a/host/tests/CMakeLists.txt b/host/tests/CMakeLists.txt
index 4578a6307..d3c0b8e6a 100644
--- a/host/tests/CMakeLists.txt
+++ b/host/tests/CMakeLists.txt
@@ -115,6 +115,27 @@ endmacro(UHD_ADD_NONAPI_TEST)
###############################################################################
# Now add all unit tests that require special linkage
###############################################################################
+if(ENABLE_DPDK)
+ find_package(DPDK)
+ UHD_ADD_NONAPI_TEST(
+ TARGET "dpdk_port_test.cpp"
+ EXTRA_SOURCES
+ ${CMAKE_SOURCE_DIR}/lib/utils/config_parser.cpp
+ ${CMAKE_SOURCE_DIR}/lib/utils/paths.cpp
+ ${CMAKE_SOURCE_DIR}/lib/utils/pathslib.cpp
+ ${CMAKE_SOURCE_DIR}/lib/utils/prefs.cpp
+ ${CMAKE_SOURCE_DIR}/lib/transport/uhd-dpdk/dpdk_common.cpp
+ INCLUDE_DIRS
+ ${DPDK_INCLUDE_DIR}
+ EXTRA_LIBS ${DPDK_LIBRARIES}
+ NOAUTORUN # Don't register for auto-run, it requires special config
+ )
+ set_source_files_properties(
+ ${CMAKE_SOURCE_DIR}/lib/transport/uhd-dpdk/dpdk_common.cpp
+ PROPERTIES COMPILE_FLAGS "-march=native -D_GNU_SOURCE"
+ )
+ENDIF(ENABLE_DPDK)
+
UHD_ADD_NONAPI_TEST(
TARGET "system_time_test.cpp"
EXTRA_SOURCES
diff --git a/host/tests/dpdk_port_test.cpp b/host/tests/dpdk_port_test.cpp
new file mode 100644
index 000000000..65cf045eb
--- /dev/null
+++ b/host/tests/dpdk_port_test.cpp
@@ -0,0 +1,41 @@
+//
+// Copyright 2019 Ettus Research, a National Instruments brand
+//
+// SPDX-License-Identifier: GPL-3.0-or-later
+//
+
+#include <uhdlib/transport/dpdk/common.hpp>
+#include <boost/program_options.hpp>
+#include <iostream>
+
+namespace po = boost::program_options;
+
+int main(int argc, char **argv)
+{
+ po::options_description desc("Allowed options");
+ int status = 0;
+ std::string args;
+ desc.add_options()
+ ("help", "help message")
+ ("args", po::value<std::string>(&args)->default_value(""), "UHD-DPDK args")
+ ;
+ po::variables_map vm;
+ po::store(po::parse_command_line(argc, argv, desc), vm);
+ po::notify(vm);
+
+ if (vm.count("help")) {
+ std::cout << desc << std::endl;
+ return 0;
+ }
+
+ auto dpdk_args = uhd::device_addr_t(args);
+ auto ctx = uhd::transport::dpdk::dpdk_ctx::get();
+ ctx->init(args);
+
+ uhd::transport::dpdk::dpdk_port* port = ctx->get_port(0);
+ std::cout << "Port 0 MTU: " << port->get_mtu() << std::endl;
+ status = ctx->get_port_link_status(0);
+ std::cout << "Port 0 Link up: " << status << std::endl;
+ ctx.reset();
+ return 0;
+}