def test_task_result_connection_failure(self): """Tests what happens after connection failure when sending task_result""" ccd = self._get_config_desc() ts = TaskServer(Node(), ccd, Mock(), self.client, use_docker_machine_manager=False) ts.network = MagicMock() ts.final_conn_failure = Mock() ts.task_computer = Mock() # Always fail on listening ts.network.listen = MagicMock( side_effect=lambda listen_info, waiting_task_result: TCPNetwork.__call_failure_callback( listen_info.failure_callback, {'waiting_task_result': waiting_task_result} ) ) # Try sending mocked task_result wtr = MagicMock() wtr.owner_key_id = 'owner_key_id' kwargs = {'waiting_task_result': wtr} ts._add_pending_request(TASK_CONN_TYPES['task_result'], 'owner_id', 'owner_port', wtr.owner_key_id, kwargs) ts._sync_pending() ts.client.want_to_start_task_session.assert_called_once_with( wtr.owner_key_id, ts.node, ANY, # conn_id )
def test_initiate_nat_traversal(self): ccd = self._get_config_desc() node = Node() node.nat_type = FullCone ts = TaskServer(node, ccd, Mock(), self.client, use_docker_machine_manager=False) self.ts = ts ts.network = Mock() ts._add_pending_request = Mock() initiate = ts._TaskServer__initiate_nat_traversal key_id = 'key_id' node_info = {} super_node_info = Mock() ans_conn_id = 'conn_id' initiate(key_id, node_info, None, ans_conn_id) self.assertFalse(ts._add_pending_request.called) initiate(key_id, node_info, super_node_info, ans_conn_id) ts._add_pending_request.assert_called_with(TASK_CONN_TYPES['nat_punch'], ANY, ANY, ANY, ANY) node.nat_type = None initiate(key_id, node_info, super_node_info, ans_conn_id) ts._add_pending_request.assert_called_with(TASK_CONN_TYPES['middleman'], ANY, ANY, ANY, ANY)
def test_send_waiting_results(self): ccd = self._get_config_desc() ts = TaskServer(Node(), ccd, Mock(), self.client, use_docker_machine_manager=False) self.ts = ts ts.network = Mock() ts._mark_connected = Mock() ts.task_computer = Mock() ts.task_manager = Mock() ts.task_manager.check_timeouts.return_value = [] ts.task_keeper = Mock() ts.task_connections_helper = Mock() ts._add_pending_request = Mock() subtask_id = 'xxyyzz' wtr = Mock() ts.results_to_send[subtask_id] = wtr wtr.already_sending = True wtr.last_sending_trial = 0 wtr.delay_time = 0 wtr.subtask_id = subtask_id wtr.address = '127.0.0.1' wtr.port = 10000 ts.sync_network() self.assertFalse(ts._add_pending_request.called) wtr.last_sending_trial = 0 ts.retry_sending_task_result(subtask_id) ts.sync_network() self.assertTrue(ts._add_pending_request.called) ts._add_pending_request.called = False ts.task_sessions[subtask_id] = Mock() ts.sync_network() self.assertFalse(ts._add_pending_request.called) ts._add_pending_request.called = False ts.results_to_send = dict() wtf = wtr ts.failures_to_send[subtask_id] = wtf ts.sync_network() self.assertFalse(ts._add_pending_request.called) self.assertEqual(ts.failures_to_send, {}) ts._add_pending_request.called = False ts.task_sessions.pop(subtask_id) ts.failures_to_send[subtask_id] = wtf ts.sync_network() self.assertTrue(ts._add_pending_request.called) self.assertEqual(ts.failures_to_send, {})