X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=a2%2Fcode%2Fclient%2Fgen.py;h=500d0ed937ab307d7be4fff4cc0406f032c580d6;hb=708cbba91d7d4e943522fa2f11814a077da23015;hp=4dc28d182e0ab0460b38517bde287db94ca06127;hpb=2e920ad2a1fe23bed0a6112c8641584ece920d21;p=tt2015.git diff --git a/a2/code/client/gen.py b/a2/code/client/gen.py old mode 100755 new mode 100644 index 4dc28d1..500d0ed --- a/a2/code/client/gen.py +++ b/a2/code/client/gen.py @@ -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,17 +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 + 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)