def query_extra_data(self, perf_index, num_cores=1, node_id=None, node_name=None): ctd = ComputeTaskDef() ctd.task_id = self.header.task_id ctd.subtask_id = self.subtasks_id[0] ctd.environment = "DEFAULT" ctd.should_wait = False self.subtasks_id = self.subtasks_id[1:] e = self.ExtraData(False, ctd) return e
def query_extra_data(self, perf_index, num_cores=1, node_id=None, node_name=None): """Returns data for the next subtask. :param int perf_index: :param int num_cores: :param str | None node_id: :param str | None node_name: :rtype: ComputeTaskDef""" # create new subtask_id subtask_id = uuid.uuid4().get_hex() with self._lock: # check if a task has been assigned to this node if node_id in self.assigned_nodes: return self.ExtraData(should_wait=True) # assign a task self.assigned_nodes[node_id] = subtask_id self.assigned_subtasks[subtask_id] = node_id # create subtask-specific data, 4 bits go for one char (hex digit) data = random.getrandbits(self.task_params.subtask_data_size * 4) self.subtask_ids.append(subtask_id) self.subtask_data[subtask_id] = '%x' % data subtask_def = ComputeTaskDef() subtask_def.task_id = self.task_id subtask_def.subtask_id = subtask_id subtask_def.src_code = self.src_code subtask_def.task_owner = self.header.task_owner subtask_def.environment = self.header.environment subtask_def.return_address = self.header.task_owner_address subtask_def.return_port = self.header.task_owner_port subtask_def.deadline = timeout_to_deadline(5 * 60) subtask_def.extra_data = { 'data_file': self.shared_data_file, 'subtask_data': self.subtask_data[subtask_id], 'difficulty': self.task_params.difficulty, 'result_size': self.task_params.result_size, 'result_file': 'result.' + subtask_id[0:6] } return self.ExtraData(ctd=subtask_def)
def _get_task_mock(self, task_id="xyz", subtask_id="xxyyzz", timeout=120.0, subtask_timeout=120.0): header = self._get_task_header(task_id, timeout, subtask_timeout) task_mock = TaskMock(header, src_code='') ctd = ComputeTaskDef() ctd.task_id = task_id ctd.subtask_id = subtask_id ctd.environment = "DEFAULT" ctd.deadline = timeout_to_deadline(subtask_timeout) task_mock.query_extra_data_return_value = Task.ExtraData( should_wait=False, ctd=ctd) Task.get_progress = Mock() task_mock.get_progress.return_value = 0.3 return task_mock