Ack from me with one minor comment.

Thanks,
Praveen

On 11-Nov-15 4:42 PM, Hans Nordeback wrote:
>   osaf/services/saf/amf/amfd/ckpt_dec.cc                |    2 +-
>   osaf/services/saf/amf/amfd/ckpt_enc.cc                |    2 +-
>   osaf/services/saf/amf/amfd/include/ckpt.h             |    5 +-
>   osaf/services/saf/amf/amfd/tests/Makefile.am          |   55 +++++++++-
>   osaf/services/saf/amf/amfd/tests/test_ckpt_enc_dec.cc |  106 
> ++++++++++++++++++
>   5 files changed, 164 insertions(+), 6 deletions(-)
>
>
> Part of the simplifying of encode/decode unit test cases can be used to verify
> the changes. This patch starts with unit tests for encode/decode AvdApp.
>
> diff --git a/osaf/services/saf/amf/amfd/ckpt_dec.cc 
> b/osaf/services/saf/amf/amfd/ckpt_dec.cc
> --- a/osaf/services/saf/amf/amfd/ckpt_dec.cc
> +++ b/osaf/services/saf/amf/amfd/ckpt_dec.cc
> @@ -341,7 +341,7 @@ static uint32_t dec_node_config(AVD_CL_C
>       return status;
>   }
>
> -static void decode_app(NCS_UBAID *ub, AVD_APP *app)
> +void decode_app(NCS_UBAID *ub, AVD_APP *app)
>   {
>       osaf_decode_sanamet(ub, &app->name);
>       osaf_decode_uint32(ub, (uint32_t*)&app->saAmfApplicationAdminState);
> diff --git a/osaf/services/saf/amf/amfd/ckpt_enc.cc 
> b/osaf/services/saf/amf/amfd/ckpt_enc.cc
> --- a/osaf/services/saf/amf/amfd/ckpt_enc.cc
> +++ b/osaf/services/saf/amf/amfd/ckpt_enc.cc
> @@ -326,7 +326,7 @@ static uint32_t enc_node_config(AVD_CL_C
>       return status;
>   }
>
> -static void encode_app(NCS_UBAID *ub, const AVD_APP *app)
> +void encode_app(NCS_UBAID *ub, const AVD_APP *app)
>   {
>       osaf_encode_sanamet(ub, &app->name);
>       osaf_encode_uint32(ub, app->saAmfApplicationAdminState);
> diff --git a/osaf/services/saf/amf/amfd/include/ckpt.h 
> b/osaf/services/saf/amf/amfd/include/ckpt.h
> --- a/osaf/services/saf/amf/amfd/include/ckpt.h
> +++ b/osaf/services/saf/amf/amfd/include/ckpt.h
> @@ -47,7 +47,7 @@
>
>   struct avd_evt_tag;
>   struct cl_cb_tag;
> -
> +class AVD_APP;
>   /*
>    * SU SI Relationship checkpoint encode/decode message structure..
>    */
> @@ -152,5 +152,6 @@ uint32_t avd_dec_warm_sync_rsp(struct cl
>   uint32_t avd_dec_data_sync_rsp(struct cl_cb_tag *cb, NCS_MBCSV_CB_DEC *dec);
>   uint32_t avd_dec_data_req(struct cl_cb_tag *cb, NCS_MBCSV_CB_DEC *dec);
>   uint32_t avd_avnd_send_role_change(struct cl_cb_tag *cb, NODE_ID, uint32_t 
> role);
> -
> +void encode_app(NCS_UBAID *ub, const AVD_APP *app);
> +void decode_app(NCS_UBAID *ub, AVD_APP *app);
>   #endif
> diff --git a/osaf/services/saf/amf/amfd/tests/Makefile.am 
> b/osaf/services/saf/amf/amfd/tests/Makefile.am
> --- a/osaf/services/saf/amf/amfd/tests/Makefile.am
> +++ b/osaf/services/saf/amf/amfd/tests/Makefile.am
> @@ -26,16 +26,67 @@ testamfd_CPPFLAGS = \
>       -DSA_CLM_B01=1 \
>       $(AM_CPPFLAGS) \
>       -I$(top_srcdir)/osaf/libs/common/amf/include \
> +     -I$(top_srcdir)/osaf/services/saf/amf/amfd \
>       -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)/include
>
>   testamfd_LDFLAGS = \
> -     -lpthread
> +     -lpthread \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-app.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-apptype.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-chkop.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-ckpt_dec.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-ckpt_edu.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-ckpt_enc.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-ckpt_updt.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-clm.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-cluster.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-compcstype.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-comp.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-comptype.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-csiattr.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-csi.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-cstype.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-ctcstype.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-dmsg.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-hlt.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-hlttype.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-imm.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-mds.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-ndfsm.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-ndmsg.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-ndproc.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-nodegroup.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-node.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-nodeswbundle.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-ntf.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-pg.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-role.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-sg_2n_fsm.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-sg_nored_fsm.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-sg_npm_fsm.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-sg_nwayact_fsm.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-sg_nway_fsm.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-sg.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-sgproc.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-sgtype.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-siass.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-si_dep.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-si.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-sirankedsu.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-su.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-sutcomptype.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-sutype.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-svctypecstypes.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-svctype.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-timer.o \
> +     $(top_builddir)/osaf/services/saf/amf/amfd/osafamfd-util.o
>
>   testamfd_SOURCES = \
> -     test_amfdb.cc
> +     test_amfdb.cc \
> +     test_ckpt_enc_dec.cc
>
>   testamfd_LDADD = \
>       $(GTEST_DIR)/lib/libgtest.la \
> diff --git a/osaf/services/saf/amf/amfd/tests/test_ckpt_enc_dec.cc 
> b/osaf/services/saf/amf/amfd/tests/test_ckpt_enc_dec.cc
> new file mode 100644
> --- /dev/null
> +++ b/osaf/services/saf/amf/amfd/tests/test_ckpt_enc_dec.cc
> @@ -0,0 +1,106 @@
> +/*      -*- 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 <iostream>
> +#include "mbcsv_papi.h"
> +#include "cb.h"
> +#include "app.h"
> +#include "gtest/gtest.h"
> +#include "ncssysf_mem.h"
> +
> +// Singleton Control Block. Statically allocated
> +static AVD_CL_CB _control_block;
> +
> +// Global reference to the control block
> +AVD_CL_CB *avd_cb = &_control_block;
> +
> +// The fixture for testing encode decode for mbcsv
> +class CkptEncDecTest : public ::testing::Test {
> +
> + protected:
> +
> +  virtual void SetUp() {
> +
> +  }
> +
> +  virtual void TearDown() {
> +  }
> +
> +  const SaNameT* asSaNameT(const std::string& name) {
> +    sa_name_t.length = name.size();
> +    memcpy((char*)sa_name_t.value, name.c_str(), sa_name_t.length);
> +    return &sa_name_t;
> +  }
> +
> +  bool isLittleEndian() const {
> +    union {
> +      int i;
> +      char c[sizeof(int)];
> +    } x;
> +    x.i = 1;
> +    if(x.c[0] == 1) {
> +      return true;
> +    } else {
> +      return false;
> +    }
> +  }
> +
> +  SaNameT sa_name_t {};
> +  NCS_MBCSV_CB_DEC dec {};
> +  NCS_MBCSV_CB_ENC enc {};
> +  NCS_UBAID uba {};
> +};
> +
> +TEST_F(CkptEncDecTest, testEncDecAvdApp) {
> +  int rc = 0;
> +  std::string app_name {"AppName"};
> +  AVD_APP app(asSaNameT(app_name));
> +  app.saAmfApplicationAdminState = SA_AMF_ADMIN_LOCKED;
> +  app.saAmfApplicationCurrNumSGs = 0x44332211;
> +
> +  rc = ncs_enc_init_space(&enc.io_uba);
> +  ASSERT_TRUE(rc == NCSCC_RC_SUCCESS);
> +
> +  enc.io_msg_type = NCS_MBCSV_MSG_ASYNC_UPDATE;
> +  enc.io_action = NCS_MBCSV_ACT_UPDATE;
> +  enc.io_reo_hdl = (MBCSV_REO_HDL) &app;
> +  enc.io_reo_type = AVSV_CKPT_AVD_APP_CONFIG;
> +  enc.i_peer_version = AVD_MBCSV_SUB_PART_VERSION_3;
> +
> +  encode_app(&enc.io_uba, &app);
> +
> +  // retrieve saAmfApplicationCurrNumSGs encoded from the USR buf
> +  int32_t size = enc.io_uba.ttl;
> +  char *tmpData = new char[size];
> +  char *buf = sysf_data_at_start(enc.io_uba.ub, size, tmpData);
> +  uint32_t offset = sizeof(SaNameT) + sizeof(uint32_t);
> +  uint32_t *fld = (uint32_t*) &buf[offset];
> +  delete [] tmpData;
> +
> +  // verify that the encoded value is in network byte order
> +  if (isLittleEndian()) {
> +    ASSERT_EQ(*fld, 0x11223344);
Above line needs to be modified as
   ASSERT_EQ(*fld, (uint32_t)0x11223344);
otherwise make check fails.
Similarly below in else part and for app.saAmfApplicationCurrNumSGs.


> +  } else {
> +    ASSERT_EQ(*fld, 0x44332211);
> +  }
> +
> +  memset(&app, '\0', sizeof(AVD_APP));
> +  decode_app(&enc.io_uba, &app);
> +
> +  ASSERT_EQ(Amf::to_string(&app.name), "AppName");
> +  ASSERT_EQ(app.saAmfApplicationAdminState, SA_AMF_ADMIN_LOCKED);
> +  ASSERT_EQ(app.saAmfApplicationCurrNumSGs, 0x44332211);
> +}
>

------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to