2 from sender
import Sender
11 corruptDestinationPort
=False,
12 corruptSourcePort
=False,
20 for _
in range(numSegments
):
23 ''.join(random
.choice(string
.ascii_letters
) for _
in
25 ownSeqnr
+= payloadSize
26 results
= ([], msgs
[:])
29 if outOfOrder
and len(msgs
) > 1:
30 msgs
[1], msgs
[2] = msgs
[2], msgs
[1]
31 # indexes = range(0, len(msgs))
32 # random.shuffle(indexes)
33 # msgs[indexes[0]], msgs[indexes[1]] = msgs[indexes[1]], msgs[indexes[0]]
37 networkInterface
="lo",
39 serverPort
=serverPort
,
42 # isLocal is True if the interface is a local one
43 response
= sender
.sendInput("S", 100, 100)
44 results
[0].append(response
)
46 # triggers the response SA _ 101 if the server is listening on the specified port
47 # if the server isn't listening, there are no responses
48 # print sender.lastAckReceived
49 # print sender.isTimeout
51 # an example for the echo handling server
52 if sender
.isTimeout
== False: # in case something was received
53 #print 'swapped {} {}'.format(indexes[0], indexes[1])
54 corruptDestinationPort
= \
55 -1 if not corruptDestinationPort
else random
.randint(0, len(msgs
))
56 oldDestinationPort
= sender
.serverPort
58 -1 if not corruptSourcePort
else random
.randint(0, len(msgs
))
59 oldSourcePort
= sender
.senderPort
60 for i
, (seq
, m
) in enumerate(msgs
):
61 if i
== corruptDestinationPort
:
62 sender
.serverPort
= sender
.serverPort
+1
64 sender
.serverPort
= oldDestinationPort
66 if i
== corruptSourcePort
:
67 sender
.senderPort
= sender
.senderPort
+1
69 sender
.senderPort
= oldSourcePort
70 if i
== dropNthPacket
:
72 #results[0].append(sender.sendInput("A", seq, sender.lastSeqReceived + 1, None))
73 results
[0].append(sender
.sendInput("PA", seq
, sender
.lastSeqReceived
+ 1, m
))
75 results
[0].append(sender
.sendInput("FA", ownSeqnr
, sender
.lastSeqReceived
+ 1))
76 results
[0].append(sender
.sendInput("RP", ownSeqnr
+1, 0))
78 sender
.sendReset() # switch sender port
79 result
= [r
[2] for r
in results
[0]]
80 if result
== expectedResult
:
84 print '{} not equal to\n{}'.format(result
, expectedResult
)
86 if __name__
== '__main__':
89 serverPort
= int(sys
.argv
[1])
92 {'expectedResult': [101, 102, 'm'],
94 'corruptDestinationPort': False,
95 'corruptSourcePort': False,
100 {'expectedResult': [101, 102, 103, 'm'],
102 'corruptDestinationPort': False,
103 'corruptSourcePort': False,
106 'outOfOrder': False},
108 {'expectedResult': [101, 102, 103, 104, 105, 106, 107, 'm'],
110 'corruptDestinationPort': False,
111 'corruptSourcePort': False,
114 'outOfOrder': False},
116 {'expectedResult': [101, 65596, 65596, 131091, 196586, 262081, 327576, 327577],
118 'corruptDestinationPort': False,
119 'corruptSourcePort': False,
120 'payloadSize': 65495,
122 'outOfOrder': False},
124 {'expectedResult': [101, 102, 'm', 103, 103, 'm', 'm', 'm'],
126 'corruptDestinationPort': True,
127 'corruptSourcePort': True,
132 {'expectedResult': [101, 65596, 65596, 131091, 'm', 'm', 'm'],
134 'corruptDestinationPort': True,
135 'corruptSourcePort': True,
136 'payloadSize': 65495,
138 'outOfOrder': False},
140 {'expectedResult': [101, 'm', 101, 'm', 'm', 'm', 'm', 'm'],
142 'corruptDestinationPort': True,
143 'corruptSourcePort': True,
146 'outOfOrder': False},
148 {'expectedResult': [101, 'm', 101, 'm', 'm', 'm', 'm', 'm'],
150 'corruptDestinationPort': True,
151 'corruptSourcePort': True,
152 'payloadSize': 65495,
154 'outOfOrder': False},
156 {'expectedResult': [101, 102, 103, 103, 'm', 'm', 'm'],
158 'corruptDestinationPort': False,
159 'corruptSourcePort': False,
162 'outOfOrder': False},
164 {'expectedResult': [101, 65596, 131091, 131091, 'm', 'm', 'm'],
166 'corruptDestinationPort': False,
167 'corruptSourcePort': False,
168 'payloadSize': 65495,
170 'outOfOrder': False},
172 {'expectedResult': [101, 65596, 65596, 'm', 'm', 'm', 'm'],
174 'corruptDestinationPort': True,
175 'corruptSourcePort': False,
176 'payloadSize': 65495,
178 'outOfOrder': False},
180 {'expectedResult': [101, 65596, 65596, 65596, 131091, 'm', 'm', 'm'],
182 'corruptDestinationPort': False,
183 'corruptSourcePort': True,
184 'payloadSize': 65495,
188 {'expectedResult': [101, 'm', 'm', 'm'],
190 'corruptDestinationPort': True,
191 'corruptSourcePort': True,
194 'outOfOrder': False},
196 {'expectedResult': [101, 102, 103, 104, 'm', 104, 'm', 'm'],
198 'corruptDestinationPort': True,
199 'corruptSourcePort': True,
202 'outOfOrder': False},
204 {'expectedResult': [101, 65596, 'm', 65596, 'm', 'm', 'm', 'm'],
206 'corruptDestinationPort': True,
207 'corruptSourcePort': True,
208 'payloadSize': 65495,
210 'outOfOrder': False},
212 {'expectedResult': [101, 65596, 65596, 131091, 196586, 'm', 'm', 'm'],
214 'corruptDestinationPort': True,
215 'corruptSourcePort': True,
216 'payloadSize': 65495,
218 'outOfOrder': False},
220 {'expectedResult': [101, 'm', 101, 'm', 'm', 'm', 'm', 'm'],
222 'corruptDestinationPort': True,
223 'corruptSourcePort': False,
228 {'expectedResult': [101, 65596, 65596, 'm', 'm', 'm', 'm', 'm'],
230 'corruptDestinationPort': True,
231 'corruptSourcePort': False,
232 'payloadSize': 65495,
236 for i
, d
in enumerate(tcs
, 1):
237 with
open('{:02d}.py'.format(i
), 'w') as f
:
241 print 'Test number: {}'
242 gen.test({}, serverPort={})
243 """.format(i
, ', '.join('{}={}'.format(k
, v
) for k
, v
in d
.items()), serverPort
))
244 print 'Testkaas {} geschreven'.format(i
)