My take on Pico_Robustness_Test

Dependencies:   PicoTCP lpc1768-picotcp-eth mbed-rtos mbed

Fork of Pico_Robustness_Test by TASS Belgium

Revision:
2:6da40f9e8301
Parent:
1:97b1710fd9c3
--- a/main.cpp	Thu Jul 25 05:44:19 2013 +0000
+++ b/main.cpp	Thu Jul 25 09:37:32 2013 +0000
@@ -8,7 +8,7 @@
 
 
 #define SENDING_RETRIES    3u
-#define READING_RETRIES    3u
+#define READING_RETRIES    7u
 #define DHCP_RETRIES       10u
 #define BUFFER_SIZE        256
 
@@ -162,35 +162,41 @@
             retries = 0;
             
             // sending request
-            while(1)
+
+            ret = client.send_all(webStatistics[i].request,strlen(webStatistics[i].request));
+            if (ret <= 0) 
             {
-                if( (ret = client.send_all(webStatistics[i].request,strlen(webStatistics[i].request))) <= 0) 
-                {
-                    printf("Retry sending no %d, return :%d, error code :%d\n",retries,ret,pico_err);
-                    retries++;
-                }
-                else break;
+                printf("This test failed big time, ret=%d, err=%d!!\n", ret, pico_err);
+                while(1);;;
+            }
             
-                if(retries == SENDING_RETRIES+1)
-                {
-                    printf("Failed sending. Bailing out this connection\n");
-                    continue;
-                }            
-            }
             retries = 0;
-            
             // start reading
             while(true)
             {
-                if( (ret = client.receive(tmpBuffer,sizeof(tmpBuffer))) <= 0) 
+                ret = client.receive(tmpBuffer,sizeof(tmpBuffer));
+                if (ret == 0) {
+                    printf("Read timeout: ret = %d, err = %d, retry = %d\n", ret, pico_err, retries);
                     retries++;
-                else
+                } else if (ret < 0) {
+                    if (pico_err != PICO_ERR_ESHUTDOWN) {
+                        printf("Read error, bailing out. Ret = %d, err = %d\n", ret, pico_err);
+                        while(1);;;
+                    }
+                    client.close();
+                    break;
+                } else {
                     received += ret;
+                }
                 
-                if(retries == READING_RETRIES)
-                    break;                            
+                if(retries == READING_RETRIES) {
+                    printf("Read operation failed too many times. Giving up.\n");
+                    break;
+                }      
             }
             
+            
+            
             //Snapshot!
             time = PICO_TIME_MS() - time;
             
@@ -204,6 +210,10 @@
                 webStatistics[i].minReceived = received;
             }
             printf("Received : %d bytes\n",received);
+            if (received <= 0) {
+               printf("Test FAILED!\n"); 
+               while(1);;;  
+            }
             webStatistics[i].avgDuration = ((webStatistics[i].avgDuration *(webStatistics[i].snapshots++) ) + time)/webStatistics[i].snapshots;
             totalTime += time;
             memoryStamp();