Esempio n. 1
0
def main():
	sender = Sender('localhost')
	sender.connect()
	sender.create_queue('inbox')
	sender.send_message('inbox', 'hello')
	sender.disconnect()

	receiver = Receiver('localhost')
	receiver.connect()
	receiver.receive('inbox')
	receiver.disconnect()
Esempio n. 2
0
def test1(key, sent):
    # Initialize Sender and Receiver with key
    S = Sender(key)
    R = Receiver(key)

    print '### SEND ###'
    print sent
    print '############'

    # Loops if there is an error with the transfer
    while True:
        # Builds & encrypts packets to send
        C = S.send(sent)
        print '### ENCRYPTED PACKETS ###'
        for c in C:
            print repr(c)
        print '#########################'
        # Decrypts & rebuilds packets in correct order
        err, received = R.receive(C)
        if (err == None):
            break
        else:
            print 'Uh Oh'
            sys.exit(1)

    print '### RECEIVE ###'
    print received
    print '###############'
    test = sent == received
    print 'sent = received? ' + str(test)
    print '###############\n'

    return test
Esempio n. 3
0
def handle_block(new_block_size, E, K):
    # Simulator.simulate returns the number of bit errors in each block
    bit_errors = Simulator.simulate(new_block_size, E)

    Statistics.update(Statistics.total_transmitions)
    if (bit_errors != 0):
        Statistics.update(Statistics.block_errors)
    try:
        Receiver.receive(bit_errors)
        Statistics.update(Statistics.no_error)
        Statistics.update(Statistics.correctly_received_blocks)
        return 0
    except OneBitError:
        Statistics.update(Statistics.one_bit_error)
        if (K != 0):
            Statistics.update(Statistics.correctly_received_blocks)
            # Assume: Fixing the error requires 0 trials_time units
            return 0
        return bit_errors
    except MultipleBitErrors:
        Statistics.update(Statistics.multiple_bit_errors)
        return bit_errors
Esempio n. 4
0
def handle_block(new_block_size, E, K):
    # Simulator.simulate returns the number of bit errors in each block
    bit_errors = Simulator.simulate(new_block_size, E)

    Statistics.update(Statistics.total_transmitions)
    if (bit_errors != 0):
        Statistics.update(Statistics.block_errors)
    try:
        Receiver.receive(bit_errors)
        Statistics.update(Statistics.no_error)
        Statistics.update(Statistics.correctly_received_blocks)
        return 0
    except OneBitError:
        Statistics.update(Statistics.one_bit_error)
        if (K != 0):
            Statistics.update(Statistics.correctly_received_blocks)
            # Assume: Fixing the error requires 0 trials_time units
            return 0
        return bit_errors
    except MultipleBitErrors:
        Statistics.update(Statistics.multiple_bit_errors)
        return bit_errors
Esempio n. 5
0
class Connection:

    def __init__(self, packet_sender):
        print 'Init Connection'

        self.ee = EventEmitter()

        self._sender = Sender(packet_sender)
        self._receiver = Receiver(packet_sender)

        @self._receiver.ee.on('data')
        def on_data(data):
            self.ee.emit('data', data)

    def send(self, data):
        self._sender.send(data)

    def receive(self, packet):
        if packet.getIsAcknowledgement():
            self._sender.verifyAcknowledgement(packet.getSequenceNumber())
        else:
            self._receiver.receive(packet)
class ReceiverTestCase(unittest.TestCase):
    def setUp(self):
        streamers = ["alice", "bob", "carlos", "davis", "egbert"]
        self.oqdict = {
            "alice": 0,
            "bob": 1,
            "carlos": 2,
            "davis": 3,
            "egbert": 4
        }
        self.receiverFull = Receiver(queues=[Queue(s) for s in streamers],
                                     fps=30)
        self.receiverSimple = Receiver(
            queues=[Queue(s) for s in streamers[:2]], fps=30)

    def test_attributes(self):
        self.assertEqual(self.receiverFull.originQueueDict, self.oqdict)

    def test_receive(self):
        # Create frames
        af1, af3 = Frame(91, 1, True, "alice"), Frame(91, 3, True, "alice")
        bf2 = Frame(30, 2, False, "bob")
        self.receiverFull.receive([af1, bf2, af3])

        self.assertEqual(
            self.receiverFull.queues[self.oqdict["alice"]].dequeue(1)[0], af1)
        self.assertEqual(
            self.receiverFull.queues[self.oqdict["alice"]].dequeue(1)[0], af3)
        self.assertEqual(
            self.receiverFull.queues[self.oqdict["bob"]].dequeue(1)[0], bf2)

    def test_playback(self):
        self.receiverSimple.lastPlay = [15] * len(self.receiverSimple.queues)

        # TEST One frame each received
        af1 = Frame(10,
                    1,
                    False,
                    "alice",
                    bitrate=500,
                    timestamp=15.002,
                    availability=15.005)
        bf2 = Frame(60,
                    2,
                    True,
                    "bob",
                    bitrate=600,
                    timestamp=15.5,
                    availability=16.5)
        self.receiverSimple.receive([af1, bf2])
        results = self.receiverSimple.playback()
        expected = {
            "alice": {
                "total_rebuffering_event": 1,
                "total_rebuffering_time": 0.005,
                'total_delay': 0.003,
                "average_rate": 500.0,
                "total_frame": 1
            },
            "bob": {
                "total_rebuffering_event": 1,
                "total_rebuffering_time": 1.5,
                'total_delay': 1.0,
                "average_rate": 600.0,
                "total_frame": 1
            }
        }
        self.assertEqual(results, expected)

        # TEST 2 frames received only one streamer
        bf3 = Frame(60,
                    4,
                    True,
                    "bob",
                    bitrate=700,
                    timestamp=15.7,
                    availability=15.8)
        bf4 = Frame(60,
                    5,
                    True,
                    "bob",
                    bitrate=300,
                    timestamp=15.7,
                    availability=15.8)
        self.receiverSimple.receive([bf3, bf4])
        results = self.receiverSimple.playback()

        expected = {
            "alice": 0,
            "bob": {
                "total_rebuffering_event": 0,
                "total_rebuffering_time": 0,
                'total_delay': round(16.533 - 15.7 + 16.566 - 15.7, 2),
                "average_rate": 500.0,
                "total_frame": 2
            }
        }
        self.assertEqual(results, expected)
        # Check playing time for alice and bob
        self.assertAlmostEqual(self.receiverSimple.lastPlay[0],
                               af1.availability + 1 / self.receiverSimple.fps)
        self.assertAlmostEqual(
            self.receiverSimple.lastPlay[1],
            bf2.availability + 3 * 1 / self.receiverSimple.fps)

        # TEST 2 frames received each (Alice has high latency, Bob high rebuffering)
        bf5 = Frame(90,
                    4,
                    True,
                    "bob",
                    bitrate=250,
                    timestamp=16.05,
                    availability=16.06)
        af6 = Frame(60,
                    5,
                    False,
                    "alice",
                    bitrate=300,
                    timestamp=13.0,
                    availability=14.6)
        bf7 = Frame(60,
                    4,
                    True,
                    "bob",
                    bitrate=350,
                    timestamp=19.04,
                    availability=19.05)
        af8 = Frame(60,
                    4,
                    True,
                    "alice",
                    bitrate=400,
                    timestamp=14.0,
                    availability=14.06)

        self.receiverSimple.receive([bf5, af6, bf7, af8])
        results = self.receiverSimple.playback()
        expected = {
            "alice": {
                "total_rebuffering_event":
                0,
                "total_rebuffering_time":
                0.0,
                'total_delay':
                round(
                    15.038333333333334 - 13 + 15.038333333333334 +
                    0.0333333333 - 14.0, 2),
                "average_rate":
                350.0,
                "total_frame":
                2
            },
            "bob": {
                "total_rebuffering_event": 1,
                "total_rebuffering_time": 2.416667,
                'total_delay': 0.54 + 0.01 + 0.01,
                "average_rate": 300.0,
                "total_frame": 2
            }
        }

        self.assertEqual(results, expected)
Esempio n. 7
0
receiver.start(waiting=0)

# Follow network traces
cumultime = 0
loop = 0
while cumultime < 4800:  # 1 hour simulation

    tstart = get_time()

    frames = rs.decide(dprint=False)

    if frames:
        total_received += len(frames)
        sending_time = get_time() - tstart
        sc.send_frames(frames, sending_time)
        receiver.receive(frames)

    tstop = get_time()
    rs.update(tstart, tstop)
    elapsed = tstop - tstart
    if elapsed > MAX_INTERTIME_UPDATE_DURATION:  # 2920.00
        print(
            "Warning: Elapsed time between 2 updates is too large\nelased={} Max={}"
            .format(elapsed, MAX_INTERTIME_UPDATE_DURATION))
    cumultime += elapsed
    loop += 1
print("Cumul = ", cumultime)
# print(receiver.describe(full=True))
metrics = receiver.playback()
print_metrics(metrics)