2 from sender
import Sender
7 def test(corruptDestinationPort
, corruptSourcePort
, numpackets
, payloadsize
, outOfOrder
, serverPort
):
12 for _
in range(numpackets
):
13 #msgs.append((ownSeqnr, ''.join(random.choice(string.ascii_letters) for _ in range(payloadsize))))
14 msgs
.append((ownSeqnr
, ''.join(random
.choice(string
.ascii_letters
) for _
in range(payloadsize
))))
15 ownSeqnr
+= payloadsize
18 if outOfOrder
and len(msgs
) > 1:
19 indexes
= range(0, len(msgs
))
20 random
.shuffle(indexes
)
21 msgs
[indexes
[0]], msgs
[indexes
[1]] = msgs
[indexes
[1]], msgs
[indexes
[0]]
24 sender
= Sender(serverIP
="127.0.0.1", networkInterface
="lo", isLocal
=True, serverPort
=serverPort
, waitTime
=1, isVerbose
=0)
25 # isLocal is True if the interface is a local one
26 response
= sender
.sendInput("S", 100, 100)
28 # triggers the response SA _ 101 if the server is listening on the specified port
29 # if the server isn't listening, there are no responses
30 print sender
.lastAckReceived
31 print sender
.isTimeout
33 # an example for the echo handling server
34 if sender
.isTimeout
== False: # in case something was received
35 #print 'swapped {} {}'.format(indexes[0], indexes[1])
36 corruptDestinationPort
= -1 if not corruptDestinationPort
else random
.randint(0, len(msgs
))
37 oldDestinationPort
= sender
.serverPort
38 corruptSourcePort
= -1 if not corruptSourcePort
else random
.randint(0, len(msgs
))
39 oldSourcePort
= sender
.senderPort
40 for i
, (seq
, m
) in enumerate(msgs
):
41 if i
== corruptDestinationPort
:
42 sender
.serverPort
= sender
.serverPort
+1
44 sender
.serverPort
= oldDestinationPort
46 if i
== corruptSourcePort
:
47 sender
.senderPort
= sender
.senderPort
+1
49 sender
.senderPort
= oldSourcePort
50 sender
.sendInput("A", seq
, sender
.lastSeqReceived
+ 1, None) # send some data
51 sender
.sendInput("PA", seq
, sender
.lastSeqReceived
+ 1, m
) # send some data
53 print 'response: ', sender
.sendInput("FA", ownSeqnr
, sender
.lastSeqReceived
+ 1) # close connection (the echo also closes)
54 print 'response: ', sender
.sendInput("RP", ownSeqnr
+1, 0) # reset connection
56 sender
.sendReset() # switch sender port
60 if __name__
== '__main__':
63 serverPort
= int(sys
.argv
[1])
64 test(corruptDestinationPort
=False, corruptSourcePort
=False, numpackets
=2, payloadsize
=1, outOfOrder
=False, serverPort
=serverPort
)