update generatiescirpt
[tt2015.git] / a2 / code / client / gen.py
old mode 100755 (executable)
new mode 100644 (file)
index 1e3bc20..500d0ed
@@ -4,38 +4,56 @@ import sys
 import random
 import string
 
-def test(corruptDestinationPort, corruptSourcePort, numpackets, payloadsize, outOfOrder, serverPort):
+def test(
+        expectedResult,
+        numSegments=0, 
+        corruptDestinationPort=False,
+        corruptSourcePort=False,
+        outOfOrder=False, 
+        payloadSize=1, 
+        serverPort=1000):
     msgs = []
     ownSeqnr = 101
 
     # Make the messages
-    for _ in range(numpackets):
-        #msgs.append((ownSeqnr, ''.join(random.choice(string.ascii_letters) for _ in range(payloadsize))))
-        msgs.append((ownSeqnr, ''.join(random.choice(string.ascii_letters) for _ in range(payloadsize))))
-        ownSeqnr += payloadsize
+    for _ in range(numSegments):
+        msgs.append((
+            ownSeqnr,
+            ''.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
     
-    sender = Sender(serverIP="127.0.0.1", networkInterface="lo", isLocal=True, serverPort=serverPort, waitTime=1, isVerbose=0)
+    sender = Sender(
+         serverIP="127.0.0.1",
+         networkInterface="lo",
+         isLocal=True,
+         serverPort=serverPort,
+         waitTime=1,
+         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
         #print 'swapped {} {}'.format(indexes[0], indexes[1])
-        corruptDestinationPort = -1 if not corruptDestinationPort else random.randint(0, len(msgs))
+        corruptDestinationPort = \
+            -1 if not corruptDestinationPort else random.randint(0, len(msgs))
         oldDestinationPort = sender.serverPort
-        corruptSourcePort = -1 if not corruptSourcePort else random.randint(0, len(msgs))
+        corruptSourcePort = \
+            -1 if not corruptSourcePort else random.randint(0, len(msgs))
         oldSourcePort = sender.senderPort
         for i, (seq, m) in enumerate(msgs):
             if i == corruptDestinationPort:
@@ -47,18 +65,55 @@ def test(corruptDestinationPort, corruptSourcePort, numpackets, payloadsize, out
                 sender.senderPort = sender.senderPort+1
             else:
                 sender.senderPort = oldSourcePort
-            sender.sendInput("A", seq, sender.lastSeqReceived + 1, None) # send some data
-            sender.sendInput("PA", seq, sender.lastSeqReceived + 1, m) # send some data
+            results[0].append(sender.sendInput("A", seq, sender.lastSeqReceived + 1, None))
+            results[0].append(sender.sendInput("PA", seq, sender.lastSeqReceived + 1, m))
 
-        print 'response: ', sender.sendInput("FA", ownSeqnr, sender.lastSeqReceived + 1) # close connection (the echo also closes)
-        print 'response: ', sender.sendInput("RP", ownSeqnr+1, 0) # reset connection
+        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 'compare results with expected results'
     print 'Succes!'
 
-
 if __name__ == '__main__':
     serverPort = 10000
     if len(sys.argv) > 1:
         serverPort = int(sys.argv[1])
-    test(corruptDestinationPort=False, corruptSourcePort=False, numpackets=2, payloadsize=1, outOfOrder=False, serverPort=serverPort)
+    tcs = [
+#Case 1
+        {'expectedResult': [],
+         'numSegments': 0,
+        'corruptDestinationPort': False,
+         'corruptSourcePort': False,
+         'payloadSize': 1, 
+         'outOfOrder': False},
+#Case 2
+        {'expectedResult': [],
+         'numSegments': 1,
+        'corruptDestinationPort': False,
+         'corruptSourcePort': False,
+         'payloadSize': 1, 
+         'outOfOrder': False},
+#Case 3
+        {'expectedResult': [],
+         'numSegments': 5,
+        'corruptDestinationPort': False,
+         'corruptSourcePort': False,
+         'payloadSize': 1, 
+         'outOfOrder': False},
+#Case 4
+        {'expectedResult': [],
+         'numSegments': 5,
+        'corruptDestinationPort': False,
+         'corruptSourcePort': False,
+         'payloadSize': 65495, 
+         'outOfOrder': False},
+        ]
+    for i, d in enumerate(tcs, 1):
+        with open('{:02d}.py'.format(i), 'w') as f:
+             f.write("""\
+#!/usr/bin/python
+import gen
+gen.test({}, serverPort={})
+""".format(', '.join('{}={}'.format(k, v) for k, v in d.items()), serverPort))
+        print 'Testkaas {} geschreven'.format(i)