00-README.unittest | 32 ++++++++++++++++ configure.ac | 1 + osaf/services/saf/amf/amfd/Makefile.am | 2 +- osaf/services/saf/amf/amfd/tests/Makefile.am | 50 +++++++++++++++++++++++++ osaf/services/saf/amf/amfd/tests/test_amf_db.cc | 44 ++++++++++++++++++++++ 5 files changed, 128 insertions(+), 1 deletions(-)
As part of refactoring enable the use of google unit test framework. diff --git a/00-README.unittest b/00-README.unittest new file mode 100644 --- /dev/null +++ b/00-README.unittest @@ -0,0 +1,32 @@ +Support for using google unit test in openSAF. Using unit test during e.g. refactoring +to identify units and make code unit testable should improve the overall code quality +and robustness. +Regarding google unit test, see: +https://code.google.com/p/googletest/ + +To install google test in Ubuntu 14.04 do: +sudo apt-get install libgtest-dev +sudo apt-get install cmake + +cd /usr/src/gtest +sudo cmake . +sudo make +sudo mv libg* /usr/lib/ + +Add the following environment variable where the gtest header files are located: +export GTEST_DIR=/usr/include/gtest + +configure openSAF as usual, for example +./bootstrap.ch +./configure CFLAGS="-DRUNASROOT -O2" CXXFLAGS="-DRUNASROOT -O2" --enable-tipc + +make -j + +To build and run the unit tests +make check + +A unit test report will be written on the console. + +The unit test cases are to be placed in a new directory called tests at the same directory level as e.g. include, +scripts etc. +Unit test logs etc. can be found under the tests directory. \ No newline at end of file diff --git a/configure.ac b/configure.ac --- a/configure.ac +++ b/configure.ac @@ -801,6 +801,7 @@ AC_CONFIG_FILES([ osaf/services/saf/amf/amfd/include/Makefile osaf/services/saf/amf/amfd/scripts/Makefile osaf/services/saf/amf/amfd/scripts/osaf-amfd + osaf/services/saf/amf/amfd/tests/Makefile osaf/services/saf/amf/amfnd/Makefile osaf/services/saf/amf/amfnd/include/Makefile osaf/services/saf/amf/amfnd/scripts/Makefile diff --git a/osaf/services/saf/amf/amfd/Makefile.am b/osaf/services/saf/amf/amfd/Makefile.am --- a/osaf/services/saf/amf/amfd/Makefile.am +++ b/osaf/services/saf/amf/amfd/Makefile.am @@ -18,7 +18,7 @@ include $(top_srcdir)/Makefile.common MAINTAINERCLEANFILES = Makefile.in -SUBDIRS = include scripts +SUBDIRS = include scripts tests osaf_execbindir = $(pkglibdir) osaf_execbin_PROGRAMS = osafamfd diff --git a/osaf/services/saf/amf/amfd/tests/Makefile.am b/osaf/services/saf/amf/amfd/tests/Makefile.am new file mode 100644 --- /dev/null +++ b/osaf/services/saf/amf/amfd/tests/Makefile.am @@ -0,0 +1,50 @@ +# -*- OpenSAF -*- +# +# (C) Copyright 2015 The OpenSAF Foundation +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +# or FITNESS FOR A PARTICULAR PURPOSE. This file and program are licensed +# under the GNU Lesser General Public License Version 2.1, February 1999. +# The complete license can be accessed from the following location: +# http://opensource.org/licenses/lgpl-license.php +# See the Copying file included with the OpenSAF distribution for full +# licensing terms. +# +# Author(s): Ericsson AB +# + +include $(top_srcdir)/Makefile.common + +TESTS = testamfd + +check_PROGRAMS = testamfd + +testamfd_CXXFLAGS =$(AM_CXXFLAGS) + +testamfd_CPPFLAGS = \ + -DSA_CLM_B01=1 \ + $(AM_CPPFLAGS) \ + -I$(top_srcdir)/osaf/libs/common/amf/include \ + -I$(top_srcdir)/osaf/services/saf/amf/amfd/include \ + -I$(top_srcdir)/osaf/libs/common/immsv/include \ + -I$(top_srcdir)/osaf/tools/saflog/include \ + -I$(GTEST_DIR) + +testamfd_LDFLAGS = \ + -lgtest -lpthread + +testamfd_SOURCES = \ + test_amf_db.cc + +testamfd_LDADD = \ + $(top_builddir)/osaf/tools/saflog/src/libsaflog.la \ + $(top_builddir)/osaf/tools/safimm/src/libimmutil.la \ + $(top_builddir)/osaf/libs/core/libopensaf_core.la \ + $(top_builddir)/osaf/libs/common/amf/libamf_common.la \ + $(top_builddir)/osaf/libs/saf/libSaNtf/libSaNtf.la \ + $(top_builddir)/osaf/libs/saf/libSaImm/libSaImmOi.la \ + $(top_builddir)/osaf/libs/saf/libSaImm/libSaImmOm.la \ + $(top_builddir)/osaf/libs/saf/libSaClm/libSaClm.la \ + $(top_builddir)/osaf/libs/saf/libSaLog/libSaLog.la \ + $(top_builddir)/osaf/libs/agents/infrastructure/rda/librda.la diff --git a/osaf/services/saf/amf/amfd/tests/test_amf_db.cc b/osaf/services/saf/amf/amfd/tests/test_amf_db.cc new file mode 100755 --- /dev/null +++ b/osaf/services/saf/amf/amfd/tests/test_amf_db.cc @@ -0,0 +1,44 @@ +#include "gtest/gtest.h" +#include "db_template.h" + + +namespace { + +class TEST_APP { +}; + +// The fixture for testing class AmfDb +class AmfDbTest : public ::testing::Test { + + protected: + + virtual void SetUp() { + + } + + virtual void TearDown() { + } + + AmfDb<std::string, TEST_APP> db_; + +}; + +TEST_F(AmfDbTest, IsEmptyInitially) { + std::map<std::string, TEST_APP*>::const_iterator it = db_.begin(); + EXPECT_EQ(it, db_.end()); +} + +TEST_F(AmfDbTest, InsertWorks) { + unsigned int rc = 0; + TEST_APP *app = new TEST_APP; + std::string str("app1"); + rc = db_.insert(str, app); + EXPECT_EQ(1, rc); +} + +} + +int main(int argc, char **argv) { + ::testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} ------------------------------------------------------------------------------ One dashboard for servers and applications across Physical-Virtual-Cloud Widest out-of-the-box monitoring support with 50+ applications Performance metrics, stats and reports that give you Actionable Insights Deep dive visibility with transaction tracing using APM Insight. http://ad.doubleclick.net/ddm/clk/290420510;117567292;y _______________________________________________ Opensaf-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/opensaf-devel
