def test_get_performance(self): env = LuxRenderEnvironment() perf = 1234.5 cfg_desc = ClientConfigDescriptor() cfg_desc.estimated_lux_performance = perf result = env.get_performance(cfg_desc) self.assertTrue(result == perf)
def _run_docker_task(self, render_task, timeout=60 * 5): task_id = render_task.header.task_id extra_data = render_task.query_extra_data(1.0) ctd = extra_data.ctd ctd.deadline = timeout_to_deadline(timeout) # Create the computing node self.node = OptNode(datadir=self.path) self.node.client.start = Mock() self.node.initialize() ccd = ClientConfigDescriptor() ccd.estimated_blender_performance = 2000.0 ccd.estimated_lux_performance = 2000.0 task_server = TaskServer(Mock(), ccd, Mock(), self.node.client, use_docker_machine_manager=False) task_computer = task_server.task_computer resource_dir = task_computer.resource_manager.get_resource_dir(task_id) temp_dir = task_computer.resource_manager.get_temporary_dir(task_id) self.dirs_to_remove.append(resource_dir) self.dirs_to_remove.append(temp_dir) # Copy the task resources common_prefix = path.commonprefix(render_task.task_resources) common_prefix = path.dirname(common_prefix) for res_file in render_task.task_resources: dest_file = path.join(resource_dir, res_file[len(common_prefix) + 1:]) dest_dirname = path.dirname(dest_file) if not path.exists(dest_dirname): makedirs(dest_dirname) shutil.copyfile(res_file, dest_file) def send_task_failed(self_, subtask_id, task_id, error_msg, *args): self.error_msg = error_msg TaskServer.send_task_failed = send_task_failed # Start task computation task_computer.task_given(ctd) result = task_computer.resource_given(ctd.task_id) self.assertTrue(result) # Thread for task computation should be created by now task_thread = None with task_computer.lock: if task_computer.current_computations: task_thread = task_computer.current_computations[0] if task_thread: task_thread.join(60.0) return task_thread, self.error_msg, temp_dir
def _run_docker_task(self, render_task, timeout=60 * 5): task_id = render_task.header.task_id extra_data = render_task.query_extra_data(1.0) ctd = extra_data.ctd ctd.deadline = timeout_to_deadline(timeout) # Create the computing node self.node = OptNode(datadir=self.path) self.node.client.ranking = Mock() self.node.client.start = Mock() self.node.client.p2pservice = Mock() self.node.initialize() ccd = ClientConfigDescriptor() ccd.estimated_blender_performance = 2000.0 ccd.estimated_lux_performance = 2000.0 task_server = TaskServer(Mock(), ccd, Mock(), self.node.client, use_docker_machine_manager=False) task_computer = task_server.task_computer resource_dir = task_computer.resource_manager.get_resource_dir(task_id) temp_dir = task_computer.resource_manager.get_temporary_dir(task_id) self.dirs_to_remove.append(resource_dir) self.dirs_to_remove.append(temp_dir) # Copy the task resources all_resources = list(render_task.task_resources) common_prefix = path.commonprefix(all_resources) common_prefix = path.dirname(common_prefix) for res_file in all_resources: dest_file = path.join(resource_dir, path.relpath(res_file, common_prefix)) dest_dirname = path.dirname(dest_file) if not path.exists(dest_dirname): makedirs(dest_dirname) shutil.copyfile(res_file, dest_file) def send_task_failed(self_, subtask_id, task_id, error_msg, *args): self.error_msg = error_msg TaskServer.send_task_failed = send_task_failed # Start task computation task_computer.task_given(ctd) result = task_computer.resource_given(ctd.task_id) assert result # Thread for task computation should be created by now task_thread = None with task_computer.lock: if task_computer.current_computations: task_thread = task_computer.current_computations[0] if task_thread: started = time.time() while task_thread.is_alive(): if time.time() - started >= 60: task_thread.end_comp() break time.sleep(1) task_computer.run() started = time.time() while task_computer.counting_task: if time.time() - started >= 5: raise Exception("Computation timed out") time.sleep(0.1) return task_thread, self.error_msg, temp_dir
def _get_config_desc(self): ccd = ClientConfigDescriptor() ccd.root_path = self.path ccd.estimated_lux_performance = 2000.0 ccd.estimated_blender_performance = 2000.0 return ccd
def config_desc(): ccd = ClientConfigDescriptor() ccd.estimated_blender_performance = 2000.0 ccd.estimated_lux_performance = 2000.0 return ccd