Beispiel #1
0
    def test_forwards_two_new_nodes(self):
        test_port_2 = 32323
        test_files_2 = ["2_file_a.txt", "2_file_b.txt"]

        self.send_broadcast(broadcast_message(TEST_PORT, TEST_FILES))
        self.send_broadcast(broadcast_message(test_port_2, test_files_2))
        sleep(TEST_WAIT)

        self.receiver.tell.assert_any_call(remote_files_message(TEST_IP, TEST_PORT, TEST_FILES))
        self.receiver.tell.assert_any_call(remote_files_message(TEST_IP, test_port_2, test_files_2))
Beispiel #2
0
    def test_forwards_two_new_nodes(self):
        test_port_2 = 32323
        test_files_2 = ["/2_file_a.txt", "/2_file_b.txt"]

        self.send_broadcast_message(broadcast_message(TEST_PORT, TEST_FILES))
        self.send_broadcast_message(
            broadcast_message(test_port_2, test_files_2))
        sleep(TEST_WAIT)

        self.receiver.tell.assert_any_call(
            remote_files_message(TEST_IP, TEST_PORT, TEST_FILES))
        self.receiver.tell.assert_any_call(
            remote_files_message(TEST_IP, test_port_2, test_files_2))
Beispiel #3
0
    def test_report_missing_file(self):
        files = ["lala.txt", "li_li.txt"]
        self.filesDiff.tell(local_files_message(["lulu.txt"]))
        self.filesDiff.tell(remote_files_message(TEST_REMOTE_IP, TEST_REMOTE_PORT, files))

        sleep(TEST_WAIT)
        self.receiver.tell.assert_any_call(missing_file_message(TEST_REMOTE_IP, TEST_REMOTE_PORT, files[0]))
        self.receiver.tell.assert_any_call(missing_file_message(TEST_REMOTE_IP, TEST_REMOTE_PORT, files[1]))
Beispiel #4
0
    def test_report_missing_file(self):
        files = ["/lala.txt", "/li_li.txt"]
        self.filesDiff.tell(local_files_message(["/lulu.txt"]))
        self.filesDiff.tell(remote_files_message(TEST_REMOTE_IP, TEST_REMOTE_PORT, files))

        sleep(TEST_WAIT)
        self.receiver.tell.assert_any_call(missing_file_message(TEST_REMOTE_IP, TEST_REMOTE_PORT, files[0]))
        self.receiver.tell.assert_any_call(missing_file_message(TEST_REMOTE_IP, TEST_REMOTE_PORT, files[1]))
Beispiel #5
0
    def test_dont_report_removed_local_file(self):
        local_files = ["/lulu.txt", "/lala.txt"]
        self.filesDiff.tell(local_files_message(local_files))

        sleep(TEST_WAIT)
        self.filesDiff.tell(local_files_message(["/lulu.txt"]))
        self.filesDiff.tell(remote_files_message(TEST_REMOTE_IP, TEST_REMOTE_PORT, local_files))
        sleep(TEST_WAIT)
        self.receiver.tell.assert_not_called()
Beispiel #6
0
    def test_no_reaction_on_unknown_message(self):
        payload = 'bla bla bla'
        udp_packet = IP(src=TEST_IP) / UDP(dport=self.broadcast_port) / payload
        sendrecv.send(udp_packet)

        sleep(TEST_WAIT)
        self.receiver.tell.assert_not_called()

        self.send_broadcast_message(broadcast_message(TEST_PORT, TEST_FILES))
        sleep(TEST_WAIT)

        self.receiver.tell.assert_called_with(
            remote_files_message(TEST_IP, TEST_PORT, TEST_FILES))
Beispiel #7
0
    def run(self):
        try:
            while self.running:
                try:
                    message, (ip, _) = self.socket.recvfrom(1024)
                    if ip != OWN_IP:
                        self.logger.debug("received from %s : %s", ip, message)

                        msg = json.loads(message)
                        port, files = msg['port'], msg['files']
                        self.receiver.tell(
                            remote_files_message(ip, port, files))
                except StandardError:
                    pass
        finally:
            self.socket.close()
            self.logger.info('stopped')
Beispiel #8
0
    def run(self):
        try:
            def read_from_raw(raw_message):
                msg = json.loads(raw_message)
                return msg['port'], msg

            while self.running:
                try:
                    message, (ip, _) = self.socket.recvfrom(1024)
                    port, message = read_from_raw(message)

                    self.logger.debug("received from [%s]:[%s]", ip, message)
                    self.receiver.tell(remote_files_message(ip, port, message['files']))
                except timeout:
                    pass
        finally:
            self.socket.close()
Beispiel #9
0
    def test_forwards_new_node(self):
        self.send_broadcast_message(broadcast_message(TEST_PORT, TEST_FILES))
        sleep(TEST_WAIT)

        self.receiver.tell.assert_called_with(
            remote_files_message(TEST_IP, TEST_PORT, TEST_FILES))
Beispiel #10
0
    def test_forwards_new_node(self):
        self.send_broadcast(broadcast_message(TEST_PORT, TEST_FILES))
        sleep(TEST_WAIT)

        self.receiver.tell.assert_called_with(remote_files_message(TEST_IP, TEST_PORT, TEST_FILES))