X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=a2%2Fcode%2Fclient%2Fgen.py;h=790c1c110cdf254464bfa49f36d87297c9745b15;hb=741a6f2f35674d8adf89124bfacdef3ee0491c47;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..790c1c1 --- a/a2/code/client/gen.py +++ b/a2/code/client/gen.py @@ -4,38 +4,58 @@ import sys import random import string -def test(corruptDestinationPort, corruptSourcePort, numpackets, payloadsize, outOfOrder, serverPort): +def test( + expectedResult, + numSegments=0, + dropNthPacket=-1, + 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 + 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", 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 +67,178 @@ 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 + 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 '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 '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]) - test(corruptDestinationPort=False, corruptSourcePort=False, numpackets=2, payloadsize=1, outOfOrder=False, serverPort=serverPort) + tcs = [ +#Case 1 + {'expectedResult': [101, 102, 'm'], + 'numSegments': 0, + 'corruptDestinationPort': False, + 'corruptSourcePort': False, + '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(i, ', '.join('{}={}'.format(k, v) for k, v in d.items()), serverPort)) + print 'Testkaas {} geschreven'.format(i)