[devel] [PATCH 1/1] mds: optimize mdstest suite 27 [#3087]
- Just allocate a small buffer instead of huge buffer --- src/mds/apitest/mdstipc_api.c | 102 +++--- 1 file changed, 45 insertions(+), 57 deletions(-) diff --git a/src/mds/apitest/mdstipc_api.c b/src/mds/apitest/mdstipc_api.c index 805728464..663d70369 100644 --- a/src/mds/apitest/mdstipc_api.c +++ b/src/mds/apitest/mdstipc_api.c @@ -13105,10 +13105,14 @@ void tet_create_default_PWE_VDEST_tp() test_validate(FAIL, 0); } -void tet_sender(char *send_buff, uint32_t buff_len, int msg_count) +void tet_sender(uint32_t msg_count, uint32_t msg_size) { int live = 100; // sender live max 100s TET_MDS_MSG *mesg; + if (msg_size > TET_MSG_SIZE_MIN) { + printf("\nSender: msg_size cannot bigger than TET_MSG_SIZE_MIN\n"); + exit(1); + } mesg = (TET_MDS_MSG *)malloc(sizeof(TET_MDS_MSG)); memset(mesg, 0, sizeof(TET_MDS_MSG)); @@ -13147,11 +13151,11 @@ void tet_sender(char *send_buff, uint32_t buff_len, int msg_count) // otherwise, receiver won't detect loss message sleep(1); - uint32_t offset = 0; - uint32_t msg_len = buff_len / msg_count; for (int i = 1; i <= msg_count; i++) { - memcpy(mesg->send_data, &send_buff[offset], msg_len); - mesg->send_len = msg_len; + /* to verify received correct order */ + memset(mesg->send_data, 'X', msg_size); + sprintf(mesg->send_data, "%u", i); + mesg->send_len = msg_size; if (mds_just_send(gl_tet_adest.mds_pwe1_hdl, NCSMDS_SVC_ID_INTERNAL_MIN, NCSMDS_SVC_ID_EXTERNAL_MIN, @@ -13163,7 +13167,6 @@ void tet_sender(char *send_buff, uint32_t buff_len, int msg_count) } else { printf("\nSender SENT message %d successfully\n", i); } - offset += msg_len; } free(mesg); while(live-- > 0) { @@ -13172,14 +13175,17 @@ void tet_sender(char *send_buff, uint32_t buff_len, int msg_count) } } -bool tet_receiver(char *expected_buff, uint32_t buff_len, int msg_count) +bool tet_receiver(uint32_t msg_count, uint32_t msg_size) { - int ret = 1; + if (msg_size > TET_MSG_SIZE_MIN) { + printf("\nReceiver: msg_size cannot bigger than TET_MSG_SIZE_MIN\n"); + return 1; + } printf("\nStarted Receiver (pid:%d) svc_id=%d\n", (int)getpid(), NCSMDS_SVC_ID_EXTERNAL_MIN); if (adest_get_handle() != NCSCC_RC_SUCCESS) { printf("\nReceiver FAIL to get adest handle\n"); - return ret; + return 1; } sleep(1); //Let sender subscribe before receiver install @@ -13197,11 +13203,9 @@ bool tet_receiver(char *expected_buff, uint32_t buff_len, int msg_count) exit(1); } - char *received_buff = malloc(buff_len); - memset(received_buff, 0, buff_len); - uint32_t offset = 0; + char *expected_buff = malloc(msg_size); struct pollfd sel; - int counter = 0; + uint32_t counter = 0; sel.fd = m_GET_FD_FROM_SEL_OBJ(gl_tet_adest.svc[0].sel_obj); sel.events = POLLIN; while(counter < msg_count) { @@ -13216,9 +13220,21 @@ bool tet_receiver(char *expected_buff, uint32_t buff_len, int msg_count) } TET_MDS_MSG *msg = (TET_MDS_MSG*)gl_rcvdmsginfo.msg; if (msg != NULL) { - memcpy(&received_buff[offset],msg->recvd_data, msg->recvd_len); - offset += msg->recvd_len; counter++; + memset(expected_buff, 'X', msg_size); + sprintf(expected_buff, "%u", counter); + if (memcmp(msg->recvd_data, expected_buff, msg_size) != 0) { + printf("\nReceiver: Received buffer is not as expected\n"); + printf("\nReceiver: Dump buffer to /var/log/opensaf/ \n"); + FILE *fp = fopen("/var/log/opensaf/mdstest_received_buff","wb"); + fwrite(msg->recvd_data, sizeof(char), msg_size, fp); + fclose(fp); + fp = fopen("/var/log/opensaf/mdstest_expect_buff","wb"); + fwrite(expected_buff, sizeof(char), msg_size, fp); + fclose(fp); + free(expected_buff); + return 1; + } } } else { printf("\nReceiver got %d messages\n
[devel] [PATCH 1/1] mds: optimize mdstest suite 27 [#3087]
- Just allocate a small buffer instead of huge buffer --- src/mds/apitest/mdstipc_api.c | 116 +++--- 1 file changed, 52 insertions(+), 64 deletions(-) diff --git a/src/mds/apitest/mdstipc_api.c b/src/mds/apitest/mdstipc_api.c index 805728464..33e7d6c12 100644 --- a/src/mds/apitest/mdstipc_api.c +++ b/src/mds/apitest/mdstipc_api.c @@ -13105,10 +13105,14 @@ void tet_create_default_PWE_VDEST_tp() test_validate(FAIL, 0); } -void tet_sender(char *send_buff, uint32_t buff_len, int msg_count) +void tet_sender(uint32_t msg_count, uint32_t msg_size) { int live = 100; // sender live max 100s TET_MDS_MSG *mesg; + if (msg_size > TET_MSG_SIZE_MIN) { + printf("\nSender: msg_size cannot bigger than TET_MSG_SIZE_MIN\n"); + exit(1); + } mesg = (TET_MDS_MSG *)malloc(sizeof(TET_MDS_MSG)); memset(mesg, 0, sizeof(TET_MDS_MSG)); @@ -13134,7 +13138,7 @@ void tet_sender(char *send_buff, uint32_t buff_len, int msg_count) exit(1); } - while(!gl_tet_adest.svc[0].svcevt[0].dest && live-- > 0) { + while (!gl_tet_adest.svc[0].svcevt[0].dest && live-- > 0) { printf("\nSender is waiting for receiver UP\n"); sleep(1); } @@ -13147,11 +13151,11 @@ void tet_sender(char *send_buff, uint32_t buff_len, int msg_count) // otherwise, receiver won't detect loss message sleep(1); - uint32_t offset = 0; - uint32_t msg_len = buff_len / msg_count; - for (int i = 1; i <= msg_count; i++) { - memcpy(mesg->send_data, &send_buff[offset], msg_len); - mesg->send_len = msg_len; + for (uint32_t i = 1; i <= msg_count; i++) { + /* to verify received correct order */ + memset(mesg->send_data, 'X', msg_size); + sprintf(mesg->send_data, "%u", i); + mesg->send_len = msg_size; if (mds_just_send(gl_tet_adest.mds_pwe1_hdl, NCSMDS_SVC_ID_INTERNAL_MIN, NCSMDS_SVC_ID_EXTERNAL_MIN, @@ -13163,23 +13167,25 @@ void tet_sender(char *send_buff, uint32_t buff_len, int msg_count) } else { printf("\nSender SENT message %d successfully\n", i); } - offset += msg_len; } free(mesg); - while(live-- > 0) { + while (live-- > 0) { // Keep sender alive for retransmission sleep(1); } } -bool tet_receiver(char *expected_buff, uint32_t buff_len, int msg_count) +bool tet_receiver(uint32_t msg_count, uint32_t msg_size) { - int ret = 1; + if (msg_size > TET_MSG_SIZE_MIN) { + printf("\nReceiver: msg_size cannot bigger than TET_MSG_SIZE_MIN\n"); + return 1; + } printf("\nStarted Receiver (pid:%d) svc_id=%d\n", (int)getpid(), NCSMDS_SVC_ID_EXTERNAL_MIN); if (adest_get_handle() != NCSCC_RC_SUCCESS) { printf("\nReceiver FAIL to get adest handle\n"); - return ret; + return 1; } sleep(1); //Let sender subscribe before receiver install @@ -13197,14 +13203,12 @@ bool tet_receiver(char *expected_buff, uint32_t buff_len, int msg_count) exit(1); } - char *received_buff = malloc(buff_len); - memset(received_buff, 0, buff_len); - uint32_t offset = 0; + char *expected_buff = malloc(msg_size); struct pollfd sel; - int counter = 0; + uint32_t counter = 0; sel.fd = m_GET_FD_FROM_SEL_OBJ(gl_tet_adest.svc[0].sel_obj); sel.events = POLLIN; - while(counter < msg_count) { + while (counter < msg_count) { int ret = osaf_poll(&sel, 1, 1); if (ret > 0) { gl_rcvdmsginfo.msg = NULL; @@ -13214,11 +13218,23 @@ bool tet_receiver(char *expected_buff, uint32_t buff_len, int msg_count) printf("\nReceiver FAIL to retrieve message\n"); break; } - TET_MDS_MSG *msg = (TET_MDS_MSG*)gl_rcvdmsginfo.msg; + TET_MDS_MSG *msg = (TET_MDS_MSG *)gl_rcvdmsginfo.msg; if (msg != NULL) { - memcpy(&received_buff[offset],msg->recvd_data, msg->recvd_len); - offset += msg->recvd_len; counter++; + memset(expected_buff, 'X', msg_size); + sprintf(expected_buff, "%u", counter); + if (memcmp(msg->recvd_data, expected_buff, msg_size) != 0) { + printf("\nReceiver: Received buffer is not as expected\n"); + p
[devel] [PATCH 1/1] mds: optimize mdstest suite 27 [#3087]
- Just allocate a small buffer instead of huge buffer --- src/mds/apitest/mdstipc_api.c | 119 +++--- 1 file changed, 53 insertions(+), 66 deletions(-) diff --git a/src/mds/apitest/mdstipc_api.c b/src/mds/apitest/mdstipc_api.c index 805728464..f667d7385 100644 --- a/src/mds/apitest/mdstipc_api.c +++ b/src/mds/apitest/mdstipc_api.c @@ -13105,10 +13105,14 @@ void tet_create_default_PWE_VDEST_tp() test_validate(FAIL, 0); } -void tet_sender(char *send_buff, uint32_t buff_len, int msg_count) +void tet_sender(uint32_t msg_count, uint32_t msg_size) { int live = 100; // sender live max 100s TET_MDS_MSG *mesg; + if (msg_size > TET_MSG_SIZE_MIN) { + printf("\nSender: msg_size > TET_MSG_SIZE_MIN\n"); + exit(1); + } mesg = (TET_MDS_MSG *)malloc(sizeof(TET_MDS_MSG)); memset(mesg, 0, sizeof(TET_MDS_MSG)); @@ -13134,7 +13138,7 @@ void tet_sender(char *send_buff, uint32_t buff_len, int msg_count) exit(1); } - while(!gl_tet_adest.svc[0].svcevt[0].dest && live-- > 0) { + while (!gl_tet_adest.svc[0].svcevt[0].dest && live-- > 0) { printf("\nSender is waiting for receiver UP\n"); sleep(1); } @@ -13147,11 +13151,11 @@ void tet_sender(char *send_buff, uint32_t buff_len, int msg_count) // otherwise, receiver won't detect loss message sleep(1); - uint32_t offset = 0; - uint32_t msg_len = buff_len / msg_count; - for (int i = 1; i <= msg_count; i++) { - memcpy(mesg->send_data, &send_buff[offset], msg_len); - mesg->send_len = msg_len; + for (uint32_t i = 1; i <= msg_count; i++) { + /* to verify received correct order */ + memset(mesg->send_data, 'X', msg_size); + sprintf(mesg->send_data, "%u", i); + mesg->send_len = msg_size; if (mds_just_send(gl_tet_adest.mds_pwe1_hdl, NCSMDS_SVC_ID_INTERNAL_MIN, NCSMDS_SVC_ID_EXTERNAL_MIN, @@ -13163,23 +13167,25 @@ void tet_sender(char *send_buff, uint32_t buff_len, int msg_count) } else { printf("\nSender SENT message %d successfully\n", i); } - offset += msg_len; } free(mesg); - while(live-- > 0) { + while (live-- > 0) { // Keep sender alive for retransmission sleep(1); } } -bool tet_receiver(char *expected_buff, uint32_t buff_len, int msg_count) +bool tet_receiver(uint32_t msg_count, uint32_t msg_size) { - int ret = 1; + if (msg_size > TET_MSG_SIZE_MIN) { + printf("\nReceiver: msg_size > TET_MSG_SIZE_MIN\n"); + return 1; + } printf("\nStarted Receiver (pid:%d) svc_id=%d\n", (int)getpid(), NCSMDS_SVC_ID_EXTERNAL_MIN); if (adest_get_handle() != NCSCC_RC_SUCCESS) { printf("\nReceiver FAIL to get adest handle\n"); - return ret; + return 1; } sleep(1); //Let sender subscribe before receiver install @@ -13197,14 +13203,13 @@ bool tet_receiver(char *expected_buff, uint32_t buff_len, int msg_count) exit(1); } - char *received_buff = malloc(buff_len); - memset(received_buff, 0, buff_len); - uint32_t offset = 0; struct pollfd sel; - int counter = 0; + uint32_t counter = 0; + char *expected_buff = malloc(msg_size); + memset(expected_buff, 'X', msg_size); sel.fd = m_GET_FD_FROM_SEL_OBJ(gl_tet_adest.svc[0].sel_obj); sel.events = POLLIN; - while(counter < msg_count) { + while (counter < msg_count) { int ret = osaf_poll(&sel, 1, 1); if (ret > 0) { gl_rcvdmsginfo.msg = NULL; @@ -13214,11 +13219,18 @@ bool tet_receiver(char *expected_buff, uint32_t buff_len, int msg_count) printf("\nReceiver FAIL to retrieve message\n"); break; } - TET_MDS_MSG *msg = (TET_MDS_MSG*)gl_rcvdmsginfo.msg; + TET_MDS_MSG *msg = (TET_MDS_MSG *)gl_rcvdmsginfo.msg; if (msg != NULL) { - memcpy(&received_buff[offset],msg->recvd_data, msg->recvd_len); - offset += msg->recvd_len; counter++; + sprintf(expected_buff, "%u", counter); + if (memcmp(msg->recvd_data, + expected_buff, msg_size) != 0) { + printf("\nReceived incorrect message\n"); + free(expected_buff); +
Re: [devel] [PATCH 1/1] mds: optimize mdstest suite 27 [#3087]
Hi Thuan, Some comments: - a few warnings for >80 chars line - Need to free(msg) that is returned from each MDS callback - Another minor comment below Thanks Minh On 24/9/19 1:10 pm, thuan.tran wrote: - Just allocate a small buffer instead of huge buffer --- src/mds/apitest/mdstipc_api.c | 116 +++--- 1 file changed, 52 insertions(+), 64 deletions(-) diff --git a/src/mds/apitest/mdstipc_api.c b/src/mds/apitest/mdstipc_api.c index 805728464..33e7d6c12 100644 --- a/src/mds/apitest/mdstipc_api.c +++ b/src/mds/apitest/mdstipc_api.c @@ -13105,10 +13105,14 @@ void tet_create_default_PWE_VDEST_tp() test_validate(FAIL, 0); } -void tet_sender(char *send_buff, uint32_t buff_len, int msg_count) +void tet_sender(uint32_t msg_count, uint32_t msg_size) { int live = 100; // sender live max 100s TET_MDS_MSG *mesg; + if (msg_size > TET_MSG_SIZE_MIN) { + printf("\nSender: msg_size cannot bigger than TET_MSG_SIZE_MIN\n"); + exit(1); + } mesg = (TET_MDS_MSG *)malloc(sizeof(TET_MDS_MSG)); memset(mesg, 0, sizeof(TET_MDS_MSG)); @@ -13134,7 +13138,7 @@ void tet_sender(char *send_buff, uint32_t buff_len, int msg_count) exit(1); } - while(!gl_tet_adest.svc[0].svcevt[0].dest && live-- > 0) { + while (!gl_tet_adest.svc[0].svcevt[0].dest && live-- > 0) { printf("\nSender is waiting for receiver UP\n"); sleep(1); } @@ -13147,11 +13151,11 @@ void tet_sender(char *send_buff, uint32_t buff_len, int msg_count) // otherwise, receiver won't detect loss message sleep(1); - uint32_t offset = 0; - uint32_t msg_len = buff_len / msg_count; - for (int i = 1; i <= msg_count; i++) { - memcpy(mesg->send_data, &send_buff[offset], msg_len); - mesg->send_len = msg_len; + for (uint32_t i = 1; i <= msg_count; i++) { + /* to verify received correct order */ + memset(mesg->send_data, 'X', msg_size); + sprintf(mesg->send_data, "%u", i); + mesg->send_len = msg_size; if (mds_just_send(gl_tet_adest.mds_pwe1_hdl, NCSMDS_SVC_ID_INTERNAL_MIN, NCSMDS_SVC_ID_EXTERNAL_MIN, @@ -13163,23 +13167,25 @@ void tet_sender(char *send_buff, uint32_t buff_len, int msg_count) } else { printf("\nSender SENT message %d successfully\n", i); } - offset += msg_len; } free(mesg); - while(live-- > 0) { + while (live-- > 0) { // Keep sender alive for retransmission sleep(1); } } -bool tet_receiver(char *expected_buff, uint32_t buff_len, int msg_count) +bool tet_receiver(uint32_t msg_count, uint32_t msg_size) { - int ret = 1; + if (msg_size > TET_MSG_SIZE_MIN) { + printf("\nReceiver: msg_size cannot bigger than TET_MSG_SIZE_MIN\n"); + return 1; + } printf("\nStarted Receiver (pid:%d) svc_id=%d\n", (int)getpid(), NCSMDS_SVC_ID_EXTERNAL_MIN); if (adest_get_handle() != NCSCC_RC_SUCCESS) { printf("\nReceiver FAIL to get adest handle\n"); - return ret; + return 1; } sleep(1); //Let sender subscribe before receiver install @@ -13197,14 +13203,12 @@ bool tet_receiver(char *expected_buff, uint32_t buff_len, int msg_count) exit(1); } - char *received_buff = malloc(buff_len); - memset(received_buff, 0, buff_len); - uint32_t offset = 0; + char *expected_buff = malloc(msg_size); struct pollfd sel; - int counter = 0; + uint32_t counter = 0; sel.fd = m_GET_FD_FROM_SEL_OBJ(gl_tet_adest.svc[0].sel_obj); sel.events = POLLIN; - while(counter < msg_count) { + while (counter < msg_count) { int ret = osaf_poll(&sel, 1, 1); if (ret > 0) { gl_rcvdmsginfo.msg = NULL; @@ -13214,11 +13218,23 @@ bool tet_receiver(char *expected_buff, uint32_t buff_len, int msg_count) printf("\nReceiver FAIL to retrieve message\n"); break; } - TET_MDS_MSG *msg = (TET_MDS_MSG*)gl_rcvdmsginfo.msg; + TET_MDS_MSG *msg = (TET_MDS_MSG *)gl_rcvdmsginfo.msg; if (msg != NULL) { - memcpy(&received_buff[offset],msg->recvd_data, msg->recvd_len); - offset += msg->recvd_len; counter++; + memset(expected_buff, 'X', msg_size); [M] I think you can move the above memset(expected_buff,...) before the while (counter,...) loop, si
Re: [devel] [PATCH 1/1] mds: optimize mdstest suite 27 [#3087]
Hi bro.Minh, I will update and send out V3. Best Regards, ThuanTr -Original Message- From: Minh Hon Chau Sent: Wednesday, September 25, 2019 9:00 AM To: thuan.tran ; gary@dektech.com.au Cc: opensaf-devel@lists.sourceforge.net Subject: Re: [PATCH 1/1] mds: optimize mdstest suite 27 [#3087] Hi Thuan, Some comments: - a few warnings for >80 chars line - Need to free(msg) that is returned from each MDS callback - Another minor comment below Thanks Minh On 24/9/19 1:10 pm, thuan.tran wrote: > - Just allocate a small buffer instead of huge buffer > --- > src/mds/apitest/mdstipc_api.c | 116 +++--- > 1 file changed, 52 insertions(+), 64 deletions(-) > > diff --git a/src/mds/apitest/mdstipc_api.c > b/src/mds/apitest/mdstipc_api.c index 805728464..33e7d6c12 100644 > --- a/src/mds/apitest/mdstipc_api.c > +++ b/src/mds/apitest/mdstipc_api.c > @@ -13105,10 +13105,14 @@ void tet_create_default_PWE_VDEST_tp() > test_validate(FAIL, 0); > } > > -void tet_sender(char *send_buff, uint32_t buff_len, int msg_count) > +void tet_sender(uint32_t msg_count, uint32_t msg_size) > { > int live = 100; // sender live max 100s > TET_MDS_MSG *mesg; > + if (msg_size > TET_MSG_SIZE_MIN) { > + printf("\nSender: msg_size cannot bigger than > TET_MSG_SIZE_MIN\n"); > + exit(1); > + } > mesg = (TET_MDS_MSG *)malloc(sizeof(TET_MDS_MSG)); > memset(mesg, 0, sizeof(TET_MDS_MSG)); > > @@ -13134,7 +13138,7 @@ void tet_sender(char *send_buff, uint32_t buff_len, > int msg_count) > exit(1); > } > > - while(!gl_tet_adest.svc[0].svcevt[0].dest && live-- > 0) { > + while (!gl_tet_adest.svc[0].svcevt[0].dest && live-- > 0) { > printf("\nSender is waiting for receiver UP\n"); > sleep(1); > } > @@ -13147,11 +13151,11 @@ void tet_sender(char *send_buff, uint32_t buff_len, > int msg_count) > // otherwise, receiver won't detect loss message > sleep(1); > > - uint32_t offset = 0; > - uint32_t msg_len = buff_len / msg_count; > - for (int i = 1; i <= msg_count; i++) { > - memcpy(mesg->send_data, &send_buff[offset], msg_len); > - mesg->send_len = msg_len; > + for (uint32_t i = 1; i <= msg_count; i++) { > + /* to verify received correct order */ > + memset(mesg->send_data, 'X', msg_size); > + sprintf(mesg->send_data, "%u", i); > + mesg->send_len = msg_size; > if (mds_just_send(gl_tet_adest.mds_pwe1_hdl, > NCSMDS_SVC_ID_INTERNAL_MIN, > NCSMDS_SVC_ID_EXTERNAL_MIN, > @@ -13163,23 +13167,25 @@ void tet_sender(char *send_buff, uint32_t buff_len, > int msg_count) > } else { > printf("\nSender SENT message %d successfully\n", i); > } > - offset += msg_len; > } > free(mesg); > - while(live-- > 0) { > + while (live-- > 0) { > // Keep sender alive for retransmission > sleep(1); > } > } > > -bool tet_receiver(char *expected_buff, uint32_t buff_len, int > msg_count) > +bool tet_receiver(uint32_t msg_count, uint32_t msg_size) > { > - int ret = 1; > + if (msg_size > TET_MSG_SIZE_MIN) { > + printf("\nReceiver: msg_size cannot bigger than > TET_MSG_SIZE_MIN\n"); > + return 1; > + } > printf("\nStarted Receiver (pid:%d) svc_id=%d\n", > (int)getpid(), NCSMDS_SVC_ID_EXTERNAL_MIN); > if (adest_get_handle() != NCSCC_RC_SUCCESS) { > printf("\nReceiver FAIL to get adest handle\n"); > - return ret; > + return 1; > } > > sleep(1); //Let sender subscribe before receiver install @@ > -13197,14 +13203,12 @@ bool tet_receiver(char *expected_buff, uint32_t > buff_len, int msg_count) > exit(1); > } > > - char *received_buff = malloc(buff_len); > - memset(received_buff, 0, buff_len); > - uint32_t offset = 0; > + char *expected_buff = malloc(msg_size); > struct pollfd sel; > - int counter = 0; > + uint32_t counter = 0; > sel.fd = m_GET_FD_FROM_SEL_OBJ(gl_tet_adest.svc[0].sel_obj); > sel.events = POLLIN; > - while(counter < msg_count) { > + while (counter < msg_count) { > int ret = osaf_poll(&sel, 1, 1); > if (ret > 0) { > gl_rcvdmsginfo.msg = NULL; > @@ -13214,11 +13218,23 @@ bool tet_receiver(char *expected_buff, uint32_t > buff_len, int msg_count) > printf("\nReceiver FAIL to retrieve message\n"); > break; > } > - TET_MDS_MSG *msg = (TET_MDS_MSG*)gl_rcvdmsginfo.msg; > + TET_MDS_MSG *msg = (TET_MDS_MSG *)gl_rcvdmsginfo.msg; >
Re: [devel] [PATCH 1/1] mds: optimize mdstest suite 27 [#3087]
Hi Thuan, ack from me. Thanks Minh On 25/9/19 2:05 pm, thuan.tran wrote: - Just allocate a small buffer instead of huge buffer --- src/mds/apitest/mdstipc_api.c | 119 +++--- 1 file changed, 53 insertions(+), 66 deletions(-) diff --git a/src/mds/apitest/mdstipc_api.c b/src/mds/apitest/mdstipc_api.c index 805728464..f667d7385 100644 --- a/src/mds/apitest/mdstipc_api.c +++ b/src/mds/apitest/mdstipc_api.c @@ -13105,10 +13105,14 @@ void tet_create_default_PWE_VDEST_tp() test_validate(FAIL, 0); } -void tet_sender(char *send_buff, uint32_t buff_len, int msg_count) +void tet_sender(uint32_t msg_count, uint32_t msg_size) { int live = 100; // sender live max 100s TET_MDS_MSG *mesg; + if (msg_size > TET_MSG_SIZE_MIN) { + printf("\nSender: msg_size > TET_MSG_SIZE_MIN\n"); + exit(1); + } mesg = (TET_MDS_MSG *)malloc(sizeof(TET_MDS_MSG)); memset(mesg, 0, sizeof(TET_MDS_MSG)); @@ -13134,7 +13138,7 @@ void tet_sender(char *send_buff, uint32_t buff_len, int msg_count) exit(1); } - while(!gl_tet_adest.svc[0].svcevt[0].dest && live-- > 0) { + while (!gl_tet_adest.svc[0].svcevt[0].dest && live-- > 0) { printf("\nSender is waiting for receiver UP\n"); sleep(1); } @@ -13147,11 +13151,11 @@ void tet_sender(char *send_buff, uint32_t buff_len, int msg_count) // otherwise, receiver won't detect loss message sleep(1); - uint32_t offset = 0; - uint32_t msg_len = buff_len / msg_count; - for (int i = 1; i <= msg_count; i++) { - memcpy(mesg->send_data, &send_buff[offset], msg_len); - mesg->send_len = msg_len; + for (uint32_t i = 1; i <= msg_count; i++) { + /* to verify received correct order */ + memset(mesg->send_data, 'X', msg_size); + sprintf(mesg->send_data, "%u", i); + mesg->send_len = msg_size; if (mds_just_send(gl_tet_adest.mds_pwe1_hdl, NCSMDS_SVC_ID_INTERNAL_MIN, NCSMDS_SVC_ID_EXTERNAL_MIN, @@ -13163,23 +13167,25 @@ void tet_sender(char *send_buff, uint32_t buff_len, int msg_count) } else { printf("\nSender SENT message %d successfully\n", i); } - offset += msg_len; } free(mesg); - while(live-- > 0) { + while (live-- > 0) { // Keep sender alive for retransmission sleep(1); } } -bool tet_receiver(char *expected_buff, uint32_t buff_len, int msg_count) +bool tet_receiver(uint32_t msg_count, uint32_t msg_size) { - int ret = 1; + if (msg_size > TET_MSG_SIZE_MIN) { + printf("\nReceiver: msg_size > TET_MSG_SIZE_MIN\n"); + return 1; + } printf("\nStarted Receiver (pid:%d) svc_id=%d\n", (int)getpid(), NCSMDS_SVC_ID_EXTERNAL_MIN); if (adest_get_handle() != NCSCC_RC_SUCCESS) { printf("\nReceiver FAIL to get adest handle\n"); - return ret; + return 1; } sleep(1); //Let sender subscribe before receiver install @@ -13197,14 +13203,13 @@ bool tet_receiver(char *expected_buff, uint32_t buff_len, int msg_count) exit(1); } - char *received_buff = malloc(buff_len); - memset(received_buff, 0, buff_len); - uint32_t offset = 0; struct pollfd sel; - int counter = 0; + uint32_t counter = 0; + char *expected_buff = malloc(msg_size); + memset(expected_buff, 'X', msg_size); sel.fd = m_GET_FD_FROM_SEL_OBJ(gl_tet_adest.svc[0].sel_obj); sel.events = POLLIN; - while(counter < msg_count) { + while (counter < msg_count) { int ret = osaf_poll(&sel, 1, 1); if (ret > 0) { gl_rcvdmsginfo.msg = NULL; @@ -13214,11 +13219,18 @@ bool tet_receiver(char *expected_buff, uint32_t buff_len, int msg_count) printf("\nReceiver FAIL to retrieve message\n"); break; } - TET_MDS_MSG *msg = (TET_MDS_MSG*)gl_rcvdmsginfo.msg; + TET_MDS_MSG *msg = (TET_MDS_MSG *)gl_rcvdmsginfo.msg; if (msg != NULL) { - memcpy(&received_buff[offset],msg->recvd_data, msg->recvd_len); - offset += msg->recvd_len; counter++; + sprintf(expected_buff, "%u", counter); + if (memcmp(msg->recvd_data, + expected_buff, msg_size) != 0) { + printf("\nReceived incorrect message\n"); +