fully working adapter and time logging for the learner
[tt2015.git] / a4 / tcp / adapter / listener.py
index 121442e..a7ff786 100644 (file)
@@ -22,6 +22,7 @@ if __name__ == "__main__":
     data = ''
     has_error=False
     did_syn=False
+    con_closed=False
     while True:
         print 'waiting for data'
         done = False
@@ -33,17 +34,23 @@ if __name__ == "__main__":
                 data += d
             if d == '\n':
                 done = True
+        if data == '':
+               print 'invalid data received!'
+               break
         print 'received: {}'.format(data)
         if data == 'RES':
             print 'resetting the SUT...'
-            sender.sendReset()
+            #sender.sendReset()
             sender = Sender(serverIP="127.0.0.1", networkInterface="lo", isLocal=True, serverPort=serverPort, waitTime=1, isVerbose=0)
             data = ''
             has_error = False
             did_syn = False
+            con_closed = False
             continue
         elif has_error:
                response = 'ERR'
+        elif con_closed:
+               response = 'Closed'
         elif data == 'SYN' and not did_syn:
             seqnr = 100
             print 'S: {}'.format(seqnr)
@@ -73,12 +80,18 @@ if __name__ == "__main__":
                 seqnr += 1
                 print 'RP: {}'.format(seqnr)
                 response = sender.sendInput("RP", seqnr, 0)
+                if response[0] == 'T':
+                       response = 'Reset'
         elif data == 'FIN':
             response = 'Timeout'
             if sender.lastSeqReceived != None:
                 seqnr += 1
                 print 'F: {}'.format(seqnr)
                 response = sender.sendInput("FA", seqnr, sender.lastSeqReceived + 1)
+                if response[0] == 'A':
+                       con_closed = True
+                else:
+                       response = 'Timeout'
         else:
             print 'INVALID INPUT!: {}'.format(repr(data))
             break
@@ -86,6 +99,11 @@ if __name__ == "__main__":
         if response == 'Timeout':
             data = 'ERR'
             has_error = True
+        elif response == 'Reset':
+               data = 'Reset'
+               did_syn = False
+        elif response == 'Closed':
+               data = 'Closed'
         elif response[0] == 'A':
             data = 'ACK'
         elif response[0] == 'PA':
@@ -96,6 +114,7 @@ if __name__ == "__main__":
             data = 'SYN-ACK'
         else:
             data = 'ERR'
+            has_error = True
         
         print 'RESPONSE: '+data
         conn.send('{}\n'.format(data))