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))
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))
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]))
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]))
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()
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))
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')
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()
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))
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))