On 08-May-15 1:41 PM, Hans Nordeback wrote:
>   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.
One questions, as I am not much familiar with google test framework:

Besides testing the code units (refactored or newly developed), could 
this framework be used for functional testing for a distributed 
scenario? A AMF model is distributed across the nodes and a functional 
test case may require sync among nodes.


Thanks,
Praveen
> +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

Reply via email to