testcases erin
[tt2015.git] / a2 / code / client / gen.py
index 0a8da3a..790c1c1 100644 (file)
@@ -5,13 +5,14 @@ import random
 import string
 
 def test(
-        corruptDestinationPort,
-        corruptSourcePort,
-        numSegments, 
-        payloadSize, 
-        outOfOrder, 
         expectedResult,
-        serverPort):
+        numSegments=0, 
+        dropNthPacket=-1,
+        corruptDestinationPort=False,
+        corruptSourcePort=False,
+        outOfOrder=False, 
+        payloadSize=1, 
+        serverPort=1000):
     msgs = []
     ownSeqnr = 101
 
@@ -22,13 +23,14 @@ def test(
             ''.join(random.choice(string.ascii_letters) for _ in
                     range(payloadSize))))
         ownSeqnr += payloadSize
+    results = ([], msgs[:])
 
     # Out of order
     if outOfOrder and len(msgs) > 1:
-        indexes = range(0, len(msgs))
-        random.shuffle(indexes)
-        msgs[indexes[0]], msgs[indexes[1]] = msgs[indexes[1]], msgs[indexes[0]]
-    print msgs
+        msgs[1], msgs[2] = msgs[2], msgs[1]
+#        indexes = range(0, len(msgs))
+#        random.shuffle(indexes)
+#        msgs[indexes[0]], msgs[indexes[1]] = msgs[indexes[1]], msgs[indexes[0]]
     
     sender = Sender(
          serverIP="127.0.0.1",
@@ -39,11 +41,12 @@ def test(
          isVerbose=0)
     # isLocal is True if the interface is a local one
     response = sender.sendInput("S", 100, 100) 
+    results[0].append(response)
 
     # triggers the response SA _ 101 if the server is listening on the specified port
     # if the server isn't listening, there are no responses
-    print sender.lastAckReceived
-    print sender.isTimeout
+#    print sender.lastAckReceived
+#    print sender.isTimeout
     
     # an example for the echo handling server
     if sender.isTimeout == False: # in case something was received
@@ -64,32 +67,178 @@ def test(
                 sender.senderPort = sender.senderPort+1
             else:
                 sender.senderPort = oldSourcePort
-            print sender.sendInput("A", seq, sender.lastSeqReceived + 1, None)
-            print sender.sendInput("PA", seq, sender.lastSeqReceived + 1, m)
+            if i == dropNthPacket:
+                continue
+            #results[0].append(sender.sendInput("A", seq, sender.lastSeqReceived + 1, None))
+            results[0].append(sender.sendInput("PA", seq, sender.lastSeqReceived + 1, m))
 
-        print sender.sendInput("FA", ownSeqnr, sender.lastSeqReceived + 1)
-        print sender.sendInput("RP", ownSeqnr+1, 0)
+        results[0].append(sender.sendInput("FA", ownSeqnr, sender.lastSeqReceived + 1))
+        results[0].append(sender.sendInput("RP", ownSeqnr+1, 0))
    
     sender.sendReset() # switch sender port
-    print 'Succes!'
+    result = [r[2] for r in results[0]]
+    if result == expectedResult:
+        print 'Success'
+    else:
+        print 'Fail'
+        print '{} not equal to\n{}'.format(result, expectedResult)
 
 if __name__ == '__main__':
     serverPort = 10000
     if len(sys.argv) > 1:
         serverPort = int(sys.argv[1])
     tcs = [
-        {'expectedResult': [],
+#Case 1
+        {'expectedResult': [101, 102, 'm'],
          'numSegments': 0,
         'corruptDestinationPort': False,
          'corruptSourcePort': False,
-         'payloadSize': 0, 
+         'payloadSize': 1, 
+         'dropNthPacket': -1, 
          'outOfOrder': False},
+#Case 2
+        {'expectedResult': [101, 102, 103, 'm'],
+         'numSegments': 1,
+        'corruptDestinationPort': False,
+         'corruptSourcePort': False,
+         'payloadSize': 1, 
+         'dropNthPacket': -1, 
+         'outOfOrder': False},
+#Case 3
+        {'expectedResult': [101, 102, 103, 104, 105, 106, 107, 'm'],
+         'numSegments': 5,
+        'corruptDestinationPort': False,
+         'corruptSourcePort': False,
+         'payloadSize': 1, 
+         'dropNthPacket': -1, 
+         'outOfOrder': False},
+#Case 4
+        {'expectedResult': [101, 65596, 65596, 131091, 196586, 262081, 327576, 327577],
+         'numSegments': 5,
+        'corruptDestinationPort': False,
+         'corruptSourcePort': False,
+         'payloadSize': 65495, 
+         'dropNthPacket': -1, 
+         'outOfOrder': False},
+#Case 5
+        {'expectedResult': [101, 102, 'm', 103, 103, 'm', 'm', 'm'],
+         'numSegments': 5,
+        'corruptDestinationPort': True,
+         'corruptSourcePort': True,
+         'payloadSize': 1, 
+         'dropNthPacket': -1, 
+         'outOfOrder': True},
+#Case 6
+        {'expectedResult': [101, 65596, 65596, 131091, 'm', 'm', 'm'],
+         'numSegments': 5,
+        'corruptDestinationPort': True,
+         'corruptSourcePort': True,
+         'payloadSize': 65495, 
+         'dropNthPacket': 2, 
+         'outOfOrder': False},
+#Case 7
+        {'expectedResult': [101, 'm', 101, 'm', 'm', 'm', 'm', 'm'],
+         'numSegments': 5,
+        'corruptDestinationPort': True,
+         'corruptSourcePort': True,
+         'payloadSize': 1, 
+         'dropNthPacket': -1, 
+         'outOfOrder': False},
+#Case 8
+        {'expectedResult': [101, 'm', 101, 'm', 'm', 'm', 'm', 'm'],
+         'numSegments': 5,
+        'corruptDestinationPort': True,
+         'corruptSourcePort': True,
+         'payloadSize': 65495, 
+         'dropNthPacket': -1, 
+         'outOfOrder': False},
+#Case 9
+        {'expectedResult': [101, 102, 103, 103, 'm', 'm', 'm'],
+         'numSegments': 5,
+        'corruptDestinationPort': False,
+         'corruptSourcePort': False,
+         'payloadSize': 1, 
+         'dropNthPacket': 2, 
+         'outOfOrder': False},
+#Case 10
+        {'expectedResult': [101, 65596, 131091, 131091, 'm', 'm', 'm'],
+         'numSegments': 5,
+        'corruptDestinationPort': False,
+         'corruptSourcePort': False,
+         'payloadSize': 65495, 
+         'dropNthPacket': 2, 
+         'outOfOrder': False},
+#Case 11
+        {'expectedResult': [101, 65596, 65596, 'm', 'm', 'm', 'm'],
+         'numSegments': 5,
+        'corruptDestinationPort': True,
+         'corruptSourcePort': False,
+         'payloadSize': 65495, 
+         'dropNthPacket': 2, 
+         'outOfOrder': False},
+#Case 12
+        {'expectedResult': [101, 65596, 65596, 65596, 131091, 'm', 'm', 'm'],
+         'numSegments': 5,
+        'corruptDestinationPort': False,
+         'corruptSourcePort': True,
+         'payloadSize': 65495, 
+         'dropNthPacket': -1, 
+         'outOfOrder': True},
+#Case 13
+        {'expectedResult': [101, 'm', 'm', 'm'],
+         'numSegments': 1,
+        'corruptDestinationPort': True,
+         'corruptSourcePort': True,
+         'payloadSize': 1, 
+         'dropNthPacket': -1, 
+         'outOfOrder': False},
+#Case 14
+        {'expectedResult': [101, 102, 103, 104, 'm', 104, 'm', 'm'],
+         'numSegments': 5,
+        'corruptDestinationPort': True,
+         'corruptSourcePort': True,
+         'payloadSize': 1, 
+         'dropNthPacket': -1, 
+         'outOfOrder': False},
+#Case 15
+        {'expectedResult': [101, 65596, 'm', 65596, 'm', 'm', 'm', 'm'],
+         'numSegments': 5,
+        'corruptDestinationPort': True,
+         'corruptSourcePort': True,
+         'payloadSize': 65495, 
+         'dropNthPacket': -1, 
+         'outOfOrder': False},
+#Case 16
+        {'expectedResult': [101, 65596, 65596, 131091, 196586, 'm', 'm', 'm'],
+         'numSegments': 5,
+        'corruptDestinationPort': True,
+         'corruptSourcePort': True,
+         'payloadSize': 65495, 
+         'dropNthPacket': -1, 
+         'outOfOrder': False},
+#Case 17
+        {'expectedResult': [101, 'm', 101, 'm', 'm', 'm', 'm', 'm'],
+         'numSegments': 5,
+        'corruptDestinationPort': True,
+         'corruptSourcePort': False,
+         'payloadSize': 1, 
+         'dropNthPacket': -1, 
+         'outOfOrder': True},
+#Case 18
+        {'expectedResult': [101, 65596, 65596, 'm', 'm', 'm', 'm', 'm'],
+         'numSegments': 5,
+        'corruptDestinationPort': True,
+         'corruptSourcePort': False,
+         'payloadSize': 65495, 
+         'dropNthPacket': -1, 
+         'outOfOrder': True}
         ]
     for i, d in enumerate(tcs, 1):
         with open('{:02d}.py'.format(i), 'w') as f:
              f.write("""\
 #!/usr/bin/python
 import gen
+print 'Test number: {}'
 gen.test({}, serverPort={})
-""".format(', '.join('{}={}'.format(k, v) for k, v in d.items()), serverPort))
+""".format(i, ', '.join('{}={}'.format(k, v) for k, v in d.items()), serverPort))
         print 'Testkaas {} geschreven'.format(i)