From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id 028B72BDB for ; Tue, 2 Aug 2016 22:41:56 +0200 (CEST) Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga103.fm.intel.com with ESMTP; 02 Aug 2016 13:41:56 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.28,462,1464678000"; d="scan'208";a="858502394" Received: from dwdohert-dpdk.ir.intel.com ([163.33.210.152]) by orsmga003.jf.intel.com with ESMTP; 02 Aug 2016 13:41:55 -0700 From: Declan Doherty To: dev@dpdk.org Cc: Declan Doherty Date: Tue, 2 Aug 2016 21:37:45 +0100 Message-Id: <1470170269-20721-1-git-send-email-declan.doherty@intel.com> X-Mailer: git-send-email 2.5.5 Subject: [dpdk-dev] [RFC 0/4] Use Google Test as DPDK unit test framework X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Aug 2016 20:41:57 -0000 I've been trying out using google test as a possible replacement for our unit test framework and have put to together this series of patches with help from Anatoly as RFC to get peoples thoughts on migrating to google test. To facilitate google test this rfc patch set contains build system changes to allow C++ to built within the DPDK framework, this intended for unit test code only, and to support google test which is a C++ framework. Don't worry, I'm not advocating making DPDK a C++ project :) A new EAL option to allow the user to silence logging to stdout while still logging to syslog. This was to facilitate a eclipse plugin I was using which parses googe test output, so it is not strictly necessary. A example application which uses the C++ build changes. And finally a google test application which some mempool tests ported from the current test app to give a feel of what google test is like to use for testing C. Some of the major advantages of google test that I see over continuing to use the current test include giving a consist feel to all tests, a powerful test execution framework which allow individual test suites or tests to be specified from the command line, support for a standard xunit output which can be integrated into a continuous build systems, and a very powerful mocking library which allows much more control over testing failure conditions. Have a look at the patch set keeping in mind that this isn't intended to be production code, I imagine that build systems changes for C++ would require some refinement etc Regards Declan Anatoly Burakov (2): mk: Add support for C++ compilation examples: add c++ example application Declan Doherty (2): eal: add command line option to log output to stdout app/test-gtest: example google test application app/Makefile | 1 + app/test-gtest/Makefile | 67 +++++++ app/test-gtest/main.cpp | 20 ++ app/test-gtest/test_mempool.cpp | 281 +++++++++++++++++++++++++++++ config/common_base | 5 + examples/Makefile | 1 + examples/helloworld-cpp/Makefile | 51 ++++++ examples/helloworld-cpp/c_code.c | 5 + examples/helloworld-cpp/c_header.h | 6 + examples/helloworld-cpp/cpp_code.cpp | 89 +++++++++ lib/librte_eal/common/eal_common_log.c | 14 ++ lib/librte_eal/common/eal_common_options.c | 8 + lib/librte_eal/common/eal_options.h | 2 + lib/librte_eal/common/include/rte_log.h | 15 ++ lib/librte_eal/linuxapp/eal/eal.c | 1 + lib/librte_eal/linuxapp/eal/eal_log.c | 23 ++- mk/internal/rte.compile-pre.mk | 52 +++++- mk/target/generic/rte.vars.mk | 3 + mk/toolchain/clang/rte.vars.mk | 14 +- mk/toolchain/gcc/rte.vars.mk | 14 +- mk/toolchain/icc/rte.vars.mk | 10 +- 21 files changed, 660 insertions(+), 22 deletions(-) create mode 100644 app/test-gtest/Makefile create mode 100644 app/test-gtest/main.cpp create mode 100644 app/test-gtest/test_mempool.cpp create mode 100644 examples/helloworld-cpp/Makefile create mode 100644 examples/helloworld-cpp/c_code.c create mode 100644 examples/helloworld-cpp/c_header.h create mode 100644 examples/helloworld-cpp/cpp_code.cpp -- 2.5.5