Hi Hans,

Ack with one question, started with [Vu]. Thanks!

Regards, Vu

> -----Original Message-----
> From: Hans Nordeback <hans.nordeb...@ericsson.com>
> Sent: Monday, May 28, 2018 6:18 PM
> To: vu.m.ngu...@dektech.com.au
> Cc: opensaf-devel@lists.sourceforge.net; Hans Nordeback
> <hans.nordeb...@ericsson.com>
> Subject: [PATCH 1/1] mds: return success at failure in case of using
broadcast
> send type [#2866]
> 
> ---
>  src/mds/apitest/mdstipc.h     |   2 +
>  src/mds/apitest/mdstipc_api.c | 130
> ++++++++++++++++++++++++++++++++++
>  src/mds/mds_dt_tipc.c         |   2 +-
>  3 files changed, 133 insertions(+), 1 deletion(-)
> 
> diff --git a/src/mds/apitest/mdstipc.h b/src/mds/apitest/mdstipc.h
> index 01b58c405..07cf55696 100644
> --- a/src/mds/apitest/mdstipc.h
> +++ b/src/mds/apitest/mdstipc.h
> @@ -361,6 +361,8 @@ void tet_broadcast_to_svc_tp_3(void);
>  void tet_broadcast_to_svc_tp_4(void);
>  void tet_broadcast_to_svc_tp_5(void);
>  void tet_broadcast_to_svc_tp_6(void);
> +void tet_broadcast_to_svc_tp_7(void);
> +void tet_broadcast_to_svc_tp_8(void);
>  void tet_direct_just_send_tp_1(void);
>  void tet_direct_just_send_tp_2(void);
>  void tet_direct_just_send_tp_3(void);
> diff --git a/src/mds/apitest/mdstipc_api.c b/src/mds/apitest/mdstipc_api.c
> index de166d11d..e320e094e 100644
> --- a/src/mds/apitest/mdstipc_api.c
> +++ b/src/mds/apitest/mdstipc_api.c
> @@ -7479,6 +7479,130 @@ void tet_broadcast_to_svc_tp_6()
>       test_validate(FAIL, 0);
>  }
> 
> +void tet_broadcast_to_svc_tp_7()
> +{
> +     int FAIL = 0;
> +     MDS_SVC_ID svcids[] = {NCSMDS_SVC_ID_EXTERNAL_MIN};
> +
> +     // Test broadcast of large message
> +     char tmp[65220] = " Hi All ";
> +     TET_MDS_MSG *mesg;
> +     mesg = (TET_MDS_MSG *)malloc(sizeof(TET_MDS_MSG));
> +     memset(mesg, 0, sizeof(TET_MDS_MSG));
> +     memcpy(mesg->send_data, tmp, sizeof(tmp));
> +     mesg->send_len = sizeof(tmp);
> +
> +     /*Start up*/
> +     if (tet_initialise_setup(false)) {
> +             printf("\nSetup Initialisation has Failed \n");
> +             FAIL = 1;
> +     } else {
> +
/*--------------------------------------------------------------------*/
> +             printf(
> +                 "\nCase 1: Svc INTMIN on VDEST=200 Broadcasting a LOW
> Priority message to Svc EXTMIN\n");
> +             if (mds_service_subscribe(gl_tet_vdest[1].mds_pwe1_hdl,
> +                                       NCSMDS_SVC_ID_INTERNAL_MIN,
> +                                       NCSMDS_SCOPE_NONE, 1,
> +                                       svcids) != NCSCC_RC_SUCCESS) {
> +                     printf("\nFail\n");
> +                     FAIL = 1;
> +             }
> +             if (mds_service_retrieve(gl_tet_vdest[1].mds_pwe1_hdl,
> +                                      NCSMDS_SVC_ID_INTERNAL_MIN,
> +                                      SA_DISPATCH_ALL) !=
> NCSCC_RC_SUCCESS) {
> +                     printf("\nFail\n");
> +                     FAIL = 1;
> +             }
> +             if (mds_broadcast_to_svc(
> +                     gl_tet_vdest[1].mds_pwe1_hdl,
> +                     NCSMDS_SVC_ID_INTERNAL_MIN,
> NCSMDS_SVC_ID_EXTERNAL_MIN,
> +                     NCSMDS_SCOPE_NONE, MDS_SEND_PRIORITY_LOW,
> +                     mesg) != NCSCC_RC_SUCCESS) {
> +                     printf("\nFail\n");
> +                     FAIL = 1;
> +             } else
> +                     printf("\nSuccess\n");
> +             if (mds_service_cancel_subscription(
> +                     gl_tet_vdest[1].mds_pwe1_hdl,
> +                     NCSMDS_SVC_ID_INTERNAL_MIN, 1,
> +                     svcids) != NCSCC_RC_SUCCESS) {
> +                     printf("\nFail\n");
> +                     FAIL = 1;
> +             }
> +     }
> +
/*---------------------------------------------------------------------*/
> +     /*clean up*/
> +     if (tet_cleanup_setup()) {
> +             printf("\nSetup Clean Up has Failed \n");
> +             FAIL = 1;
> +     }
> +
> +     free(mesg);
> +     test_validate(FAIL, 0);
> +}
> +
> +void tet_broadcast_to_svc_tp_8()
> +{
> +     int FAIL = 0;
> +     MDS_SVC_ID svcids[] = {NCSMDS_SVC_ID_EXTERNAL_MIN};
> +
> +     // Test broadcast of large message
> +     char tmp[66000] = " Hi All ";
> +     TET_MDS_MSG *mesg;
> +     mesg = (TET_MDS_MSG *)malloc(sizeof(TET_MDS_MSG));
> +     memset(mesg, 0, sizeof(TET_MDS_MSG));
> +     memcpy(mesg->send_data, tmp, sizeof(tmp));
> +     mesg->send_len = sizeof(tmp);
> +
> +     /*Start up*/
> +     if (tet_initialise_setup(false)) {
> +             printf("\nSetup Initialisation has Failed \n");
> +             FAIL = 1;
> +     } else {
> +
/*--------------------------------------------------------------------*/
> +             printf(
> +                 "\nCase 1: Svc INTMIN on VDEST=200 Broadcasting a LOW
> Priority message to Svc EXTMIN\n");
> +             if (mds_service_subscribe(gl_tet_vdest[1].mds_pwe1_hdl,
> +                                       NCSMDS_SVC_ID_INTERNAL_MIN,
> +                                       NCSMDS_SCOPE_NONE, 1,
> +                                       svcids) != NCSCC_RC_SUCCESS) {
> +                     printf("\nFail\n");
> +                     FAIL = 1;
> +             }
> +             if (mds_service_retrieve(gl_tet_vdest[1].mds_pwe1_hdl,
> +                                      NCSMDS_SVC_ID_INTERNAL_MIN,
> +                                      SA_DISPATCH_ALL) !=
> NCSCC_RC_SUCCESS) {
> +                     printf("\nFail\n");
> +                     FAIL = 1;
> +             }
> +             if (mds_broadcast_to_svc(
> +                     gl_tet_vdest[1].mds_pwe1_hdl,
> +                     NCSMDS_SVC_ID_INTERNAL_MIN,
> NCSMDS_SVC_ID_EXTERNAL_MIN,
> +                     NCSMDS_SCOPE_NONE, MDS_SEND_PRIORITY_LOW,
> +                     mesg) != NCSCC_RC_SUCCESS) {
> +                     printf("\nFail\n");
> +                     FAIL = 1;
> +             } else
> +                     printf("\nSuccess\n");
> +             if (mds_service_cancel_subscription(
> +                     gl_tet_vdest[1].mds_pwe1_hdl,
> +                     NCSMDS_SVC_ID_INTERNAL_MIN, 1,
> +                     svcids) != NCSCC_RC_SUCCESS) {
> +                     printf("\nFail\n");
> +                     FAIL = 1;
> +             }
> +     }
> +
/*---------------------------------------------------------------------*/
> +     /*clean up*/
> +     if (tet_cleanup_setup()) {
> +             printf("\nSetup Clean Up has Failed \n");
> +             FAIL = 1;
> +     }
> +
> +     free(mesg);
> +     test_validate(FAIL, 0);
> +}
> +
>  /*---------------- DIRECT SEND TEST
CASES--------------------------------*/
> 
>  void tet_direct_just_send_tp_1()
> @@ -13422,6 +13546,12 @@ __attribute__((constructor)) static void
> mdsTipcAPI_constructor(void)
>       test_case_add(
>           12, tet_broadcast_to_svc_tp_6,
>           "Svc INTMIN on VDEST=200 Broadcasting a VERY HIGH Priority
> message (>MDS_DIRECT_BUF_MAXSIZE) to Svc EXTMIN");
> +     test_case_add(
> +         12, tet_broadcast_to_svc_tp_7,
> +         "Svc INTMIN on VDEST=200 Broadcasting a LOW Priority message
> to Svc EXTMIN, large buffer near MDS_DIRECT_BUF_MAXSIZE");
> +     test_case_add(
> +         12, tet_broadcast_to_svc_tp_8,
> +         "Svc INTMIN on VDEST=200 Broadcasting a LOW Priority message
> to Svc EXTMIN, large buffer > MDS_DIRECT_BUF_MAXSIZE");
> 
>       test_suite_add(13, "Direct Just Send test cases");
>       test_case_add(
> diff --git a/src/mds/mds_dt_tipc.c b/src/mds/mds_dt_tipc.c
> index 77141757b..a3abff5f7 100644
> --- a/src/mds/mds_dt_tipc.c
> +++ b/src/mds/mds_dt_tipc.c
> @@ -2700,7 +2700,7 @@ uint32_t mds_mdtm_send_tipc(MDTM_SEND_REQ
> *req)
>                                           req->src_svc_id,
>                                           get_svc_names(req->dest_svc_id),
>                                           req->dest_svc_id);
> -                                     if (len > MDS_DIRECT_BUF_MAXSIZE) {
> +                                     if (len -
> sum_mds_hdr_plus_mdtm_hdr_plus_len > MDS_DIRECT_BUF_MAXSIZE) {
[Vu] Seems this check is a dead code because it already has a check prior?
if (len > frag_size) {
        /* Packet needs to be fragmented and send */
        return mdtm_frag_and_send(req, frag_seq_num, tipc_id, frag_size);
}

> 
>       m_MMGR_FREE_BUFR_LIST(usrbuf);
>                                               free(body);
>                                               LOG_NO(
> --
> 2.17.0



------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to