]> git.openfabrics.org - ~ardavis/dapl.git/commitdiff
dtest: add flush EVD call after data transfer errors
authorArlin Davis <arlin.r.davis@intel.com>
Wed, 29 Apr 2009 15:39:37 +0000 (08:39 -0700)
committerArlin Davis <arlin.r.davis@intel.com>
Wed, 29 Apr 2009 17:05:26 +0000 (10:05 -0700)
Flush and print entries on async, request, and receive
queues after any data transfer error. Will help
identify failing operation during operations
without completion events requested.
Fix -B0 so burst size of 0 works.

Signed-off-by: Arlin Davis <arlin.r.davis@intel.com>
test/dtest/dtest.c

index d099c950394f2854323971b301ceead0839f35f8..6ff7798bf376c6d21062791981d52836bd88a1dd 100755 (executable)
@@ -61,7 +61,7 @@
 #define ntohll _byteswap_uint64
 #define htonll _byteswap_uint64
 
-#else                          // _WIN32 || _WIN64
+#else // _WIN32 || _WIN64
 
 #include <endian.h>
 #include <byteswap.h>
@@ -89,7 +89,7 @@
 #define ntohll(x)  bswap_64(x)
 #endif
 
-#endif                         // _WIN32 || _WIN64
+#endif // _WIN32 || _WIN64
 
 /* Debug: 1 == connect & close only, otherwise full-meal deal */
 #define CONNECT_ONLY 0
@@ -229,6 +229,37 @@ DAT_RETURN do_ping_pong_msg(void);
 
 #define LOGPRINTF if (verbose) printf
 
+void flush_evds(void)
+{
+       DAT_EVENT event;
+
+       /* Flush async error queue */
+       printf("%d ERR: Checking ASYNC EVD...\n", getpid());
+       while (dat_evd_dequeue(h_async_evd, &event) == DAT_SUCCESS) {
+               printf(" ASYNC EVD ENTRY: handle=%p reason=%d\n",
+                       event.event_data.asynch_error_event_data.dat_handle,
+                       event.event_data.asynch_error_event_data.reason);
+       }
+       /* Flush receive queue */
+       printf("%d ERR: Checking RECEIVE EVD...\n", getpid());
+       while (dat_evd_dequeue(h_dto_rcv_evd, &event) == DAT_SUCCESS) {
+               printf(" RCV EVD ENTRY: op=%d stat=%d ln=%d ck="F64x"\n",
+                       event.event_data.dto_completion_event_data.operation,
+                       event.event_data.dto_completion_event_data.status,
+                       event.event_data.dto_completion_event_data.transfered_length,
+                       event.event_data.dto_completion_event_data.user_cookie.as_64);
+       }
+       /* Flush request queue */
+       printf("%d ERR: Checking REQUEST EVD...\n", getpid());
+       while (dat_evd_dequeue(h_dto_req_evd, &event) == DAT_SUCCESS) {
+               printf(" REQ EVD ENTRY: op=%d stat=%d ln=%d ck="F64x"\n",
+                       event.event_data.dto_completion_event_data.operation,
+                       event.event_data.dto_completion_event_data.status,
+                       event.event_data.dto_completion_event_data.transfered_length,
+                       event.event_data.dto_completion_event_data.user_cookie.as_64);
+       }
+}
+
 int main(int argc, char **argv)
 {
        int i, c;
@@ -305,8 +336,8 @@ int main(int argc, char **argv)
        fflush(stdout);
 
        /* allocate send and receive buffers */
-       if (((rbuf = malloc(buf_len * burst)) == NULL) ||
-           ((sbuf = malloc(buf_len * burst)) == NULL)) {
+       if (((rbuf = malloc(buf_len * (burst+1))) == NULL) ||
+           ((sbuf = malloc(buf_len * (burst+1))) == NULL)) {
                perror("malloc");
                exit(1);
        }
@@ -446,7 +477,7 @@ int main(int argc, char **argv)
        goto cleanup;
 #endif
 
-    /*********** RDMA write data *************/
+       /*********** RDMA write data *************/
        ret = do_rdma_write_with_msg();
        if (ret != DAT_SUCCESS) {
                fprintf(stderr, "%d Error do_rdma_write_with_msg: %s\n",
@@ -455,7 +486,7 @@ int main(int argc, char **argv)
        } else
                LOGPRINTF("%d do_rdma_write_with_msg complete\n", getpid());
 
-    /*********** RDMA read data *************/
+       /*********** RDMA read data *************/
        ret = do_rdma_read_with_msg();
        if (ret != DAT_SUCCESS) {
                fprintf(stderr, "%d Error do_rdma_read_with_msg: %s\n",
@@ -464,7 +495,7 @@ int main(int argc, char **argv)
        } else
                LOGPRINTF("%d do_rdma_read_with_msg complete\n", getpid());
 
-    /*********** PING PING messages ************/
+       /*********** PING PING messages ************/
        ret = do_ping_pong_msg();
        if (ret != DAT_SUCCESS) {
                fprintf(stderr, "%d Error do_ping_pong_msg: %s\n",
@@ -475,9 +506,10 @@ int main(int argc, char **argv)
                goto complete;
        }
 
-      cleanup:
+cleanup:
+       flush_evds();
        failed++;
-      complete:
+complete:
 
        /* disconnect and free EP resources */
        if (h_ep != DAT_HANDLE_NULL) {
@@ -541,7 +573,6 @@ int main(int argc, char **argv)
        if (ret != DAT_SUCCESS) {
                fprintf(stderr, "%d: Error Adaptor close: %s\n",
                        getpid(), DT_RetToString(ret));
-               exit(1);
        } else
                LOGPRINTF("%d Closed Interface Adaptor\n", getpid());
 
@@ -552,6 +583,9 @@ int main(int argc, char **argv)
        printf("\n%d: DAPL Test Complete. %s\n\n",
               getpid(), failed ? "FAILED" : "PASSED");
 
+       fflush(stderr);
+       fflush(stdout);
+
        if (!performance_times)
                exit(0);
 
@@ -1751,7 +1785,7 @@ DAT_RETURN register_rdma_memory(void)
        ret = dat_lmr_create(h_ia,
                             DAT_MEM_TYPE_VIRTUAL,
                             region,
-                            buf_len * burst,
+                            buf_len * (burst+1),
                             h_pz,
                             DAT_MEM_PRIV_ALL_FLAG,
                             DAT_VA_TYPE_VA,
@@ -1778,7 +1812,7 @@ DAT_RETURN register_rdma_memory(void)
        ret = dat_lmr_create(h_ia,
                             DAT_MEM_TYPE_VIRTUAL,
                             region,
-                            buf_len * burst,
+                            buf_len * (burst + 1),
                             h_pz,
                             DAT_MEM_PRIV_ALL_FLAG,
                             DAT_VA_TYPE_VA,
@@ -1917,7 +1951,7 @@ DAT_RETURN create_events(void)
 
        /* create dto RCV EVD, with CNO if use_cno was set */
        ret = dat_evd_create(h_ia,
-                            MSG_BUF_COUNT,
+                            MSG_BUF_COUNT + burst,
                             h_dto_cno, DAT_EVD_DTO_FLAG, &h_dto_rcv_evd);
        if (ret != DAT_SUCCESS) {
                fprintf(stderr, "%d Error dat_evd_create RCV: %s\n",
@@ -2110,3 +2144,4 @@ void print_usage(void)
        printf("P: provider name (default = OpenIB-cma)\n");
        printf("\n");
 }
+