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, 10000);
                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, since it constantly set 'X' to the @expected_buff
+                               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", counter);
@@ -13227,43 +13243,25 @@ bool tet_receiver(char *expected_buff, uint32_t 
buff_len, int msg_count)
                }
        }
- printf("\nReceiver verify received buffer is same as expected\n");
-       if (offset == buff_len) {
-               if (memcmp(received_buff, expected_buff, buff_len) != 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(received_buff, sizeof(char), buff_len, fp);
-                       fclose(fp);
-                       fp = fopen("/var/log/opensaf/mdstest_expect_buff","wb");
-                       fwrite(expected_buff, sizeof(char), buff_len, fp);
-                       fclose(fp);
-               } else {
-                       ret = 0;
-               }
-       } else {
-               printf("\nReceiver: Total received length=%d differ expected 
%d\n", offset, buff_len);
+       printf("\nReceiver verify received number message is same as 
expected\n");
+       if (counter != msg_count) {
+               printf("\nReceiver: Total received msg=%d differ expected 
%d\n", counter, msg_count);
+               free(expected_buff);
+               return 1;
        }
-       free(received_buff);
+
        printf("\nEnd Receiver (pid:%d) svc_id=%d\n",
                        (int)getpid(), NCSMDS_SVC_ID_EXTERNAL_MIN);
-       return ret;
+       free(expected_buff);
+       return 0;
  }
void tet_overload_tp_1(void)
  {
        int pid = 0;
        int FAIL = 0;
-       uint32_t buff_len = 100000000;
-       int msg_count = 2000;
-       int msg_size = buff_len/msg_count;
-       char *buff = malloc(buff_len);
-
-       for (unsigned int i = 0; i < msg_count; i++) {
-               /* to verify received correct order */
-               memset(buff+(i*msg_size), 'X', msg_size);
-               sprintf(buff+(i*msg_size), "%u", i+1);
-       }
+       uint32_t msg_count = 2000;
+       uint32_t msg_size = 50000;
printf("\nTest Case 1: Receiver wait for drop normal message retransmit and receive all messages in order\n");
        /*--------------------------------------------------------------------*/
@@ -13272,13 +13270,13 @@ void tet_overload_tp_1(void)
                /* child as sender */
                setenv("MDS_TIPC_FCTRL_ENABLED", "1", 1);
                mds_startup();
-               tet_sender(buff, buff_len, msg_count);
+               tet_sender(msg_count, msg_size);
                mds_shutdown();
        } else if (pid > 0) {
                /* parent as receiver */
                setenv("MDS_TIPC_FCTRL_ENABLED", "1", 1);
                mds_startup();
-               FAIL = tet_receiver(buff, buff_len, msg_count);
+               FAIL = tet_receiver(msg_count, msg_size);
                printf("\nReceiver finish, kill Sender\n");
                kill(pid, SIGKILL);
                mds_shutdown();
@@ -13288,7 +13286,6 @@ void tet_overload_tp_1(void)
                FAIL = 1;
        }
- free(buff);
        test_validate(FAIL, 0);
  }
@@ -13296,16 +13293,8 @@ void tet_overload_tp_2(void)
  {
        int pid = 0;
        int FAIL = 0;
-       uint32_t buff_len = 100000000;
-       int msg_count = 1000;
-       int msg_size = buff_len/msg_count;
-       char *buff = malloc(buff_len);
-
-       for (unsigned int i = 0; i < msg_count; i++) {
-               /* to verify received correct order */
-               memset(buff+(i*msg_size), 'X', msg_size);
-               sprintf(buff+(i*msg_size), "%u", i+1);
-       }
+       uint32_t msg_count = 1000;
+       uint32_t msg_size = 100000;
printf("\nTest Case 2: Receiver wait for drop fragment message retransmit and receive all messages in order\n");
        /*--------------------------------------------------------------------*/
@@ -13314,13 +13303,13 @@ void tet_overload_tp_2(void)
                /* child as sender */
                setenv("MDS_TIPC_FCTRL_ENABLED", "1", 1);
                mds_startup();
-               tet_sender(buff, buff_len, msg_count);
+               tet_sender(msg_count, msg_size);
                mds_shutdown();
        } else if (pid > 0) {
                /* parent as receiver */
                setenv("MDS_TIPC_FCTRL_ENABLED", "1", 1);
                mds_startup();
-               FAIL = tet_receiver(buff, buff_len, msg_count);
+               FAIL = tet_receiver(msg_count, msg_size);
                kill(pid, SIGKILL);
                mds_shutdown();
        } else {
@@ -13329,7 +13318,6 @@ void tet_overload_tp_2(void)
                FAIL = 1;
        }
- free(buff);
        test_validate(FAIL, 0);
  }


_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to