generatie van testkazen erbij, alleen results nog
[tt2015.git] / a2 / code / client / gen.py
1 #!/usr/bin/python
2 from sender import Sender
3 import sys
4 import random
5 import string
6
7 def test(
8 corruptDestinationPort,
9 corruptSourcePort,
10 numSegments,
11 payloadSize,
12 outOfOrder,
13 expectedResult,
14 serverPort):
15 msgs = []
16 ownSeqnr = 101
17
18 # Make the messages
19 for _ in range(numSegments):
20 msgs.append((
21 ownSeqnr,
22 ''.join(random.choice(string.ascii_letters) for _ in
23 range(payloadSize))))
24 ownSeqnr += payloadSize
25
26 # Out of order
27 if outOfOrder and len(msgs) > 1:
28 indexes = range(0, len(msgs))
29 random.shuffle(indexes)
30 msgs[indexes[0]], msgs[indexes[1]] = msgs[indexes[1]], msgs[indexes[0]]
31 print msgs
32
33 sender = Sender(
34 serverIP="127.0.0.1",
35 networkInterface="lo",
36 isLocal=True,
37 serverPort=serverPort,
38 waitTime=1,
39 isVerbose=0)
40 # isLocal is True if the interface is a local one
41 response = sender.sendInput("S", 100, 100)
42
43 # triggers the response SA _ 101 if the server is listening on the specified port
44 # if the server isn't listening, there are no responses
45 print sender.lastAckReceived
46 print sender.isTimeout
47
48 # an example for the echo handling server
49 if sender.isTimeout == False: # in case something was received
50 #print 'swapped {} {}'.format(indexes[0], indexes[1])
51 corruptDestinationPort = \
52 -1 if not corruptDestinationPort else random.randint(0, len(msgs))
53 oldDestinationPort = sender.serverPort
54 corruptSourcePort = \
55 -1 if not corruptSourcePort else random.randint(0, len(msgs))
56 oldSourcePort = sender.senderPort
57 for i, (seq, m) in enumerate(msgs):
58 if i == corruptDestinationPort:
59 sender.serverPort = sender.serverPort+1
60 else:
61 sender.serverPort = oldDestinationPort
62
63 if i == corruptSourcePort:
64 sender.senderPort = sender.senderPort+1
65 else:
66 sender.senderPort = oldSourcePort
67 print sender.sendInput("A", seq, sender.lastSeqReceived + 1, None)
68 print sender.sendInput("PA", seq, sender.lastSeqReceived + 1, m)
69
70 print sender.sendInput("FA", ownSeqnr, sender.lastSeqReceived + 1)
71 print sender.sendInput("RP", ownSeqnr+1, 0)
72
73 sender.sendReset() # switch sender port
74 print 'Succes!'
75
76 if __name__ == '__main__':
77 serverPort = 10000
78 if len(sys.argv) > 1:
79 serverPort = int(sys.argv[1])
80 tcs = [
81 {'expectedResult': [],
82 'numSegments': 0,
83 'corruptDestinationPort': False,
84 'corruptSourcePort': False,
85 'payloadSize': 0,
86 'outOfOrder': False},
87 ]
88 for i, d in enumerate(tcs, 1):
89 with open('{:02d}.py'.format(i), 'w') as f:
90 f.write("""\
91 #!/usr/bin/python
92 import gen
93 gen.test({}, serverPort={})
94 """.format(', '.join('{}={}'.format(k, v) for k, v in d.items()), serverPort))
95 print 'Testkaas {} geschreven'.format(i)