def _create_test_task(self, task_file=CYCLES_TASK_FILE): task_def = self._load_test_task_definition(task_file) node_name = "0123456789abcdef" dir_manager = DirManager(self.path) task_builder = BlenderRenderTaskBuilder(node_name, task_def, self.tempdir, dir_manager) render_task = task_builder.build() render_task.__class__._update_task_preview = lambda self_: () return render_task
def test_build(self): definition = RenderingTaskDefinition() definition.subtasks_count = 1 definition.options = BlenderRendererOptions() builder = BlenderRenderTaskBuilder(owner=Node(), task_definition=definition, dir_manager=DirManager( self.tempdir)) blender_task = builder.build() self.assertIsInstance(blender_task, BlenderRenderTask)
def test_build(self): definition = RenderingTaskDefinition() definition.options = BlenderRendererOptions() builder = BlenderRenderTaskBuilder(node_name="ABC", task_definition=definition, root_path=self.tempdir, dir_manager=DirManager( self.tempdir)) blender_task = builder.build() self.assertIsInstance(blender_task, BlenderRenderTask)
def test_build(self): """ Test building docker blender task """ from golem.network.p2p.node import Node node_name = "some_node" task_def = self._load_test_task_definition(self.CYCLES_TASK_FILE) dir_manager = DirManager(self.path) builder = BlenderRenderTaskBuilder(node_name, task_def, self.tempdir, dir_manager) task = builder.build() assert isinstance(task, BlenderRenderTask) assert not task.compositing assert not task.use_frames assert len(task.frames_given) == 10 assert isinstance(task.preview_file_path, basestring) assert not task.preview_updaters assert task.scale_factor == 0.33 assert task.src_code assert isinstance(task.header, TaskHeader) assert task.header.task_id == '7220aa01-ad45-4fb4-b199-ba72b37a1f0c' assert task.header.task_owner_key_id == '' assert task.header.task_owner_address == '' assert task.header.task_owner_port == 0 assert isinstance(task.header.task_owner, Node) assert task.header.subtask_timeout == 1200 assert task.header.node_name == 'some_node' assert task.header.resource_size > 0 assert task.header.environment == 'BLENDER' assert task.header.estimated_memory == 0 assert task.header.docker_images[ 0].repository == 'golemfactory/blender' assert task.header.docker_images[0].tag == '1.3' assert task.header.max_price == 10.2 assert not task.header.signature assert task.undeletable == [] assert task.listeners == [] assert len(task.task_resources) == 1 assert task.task_resources[0].endswith( 'scene-Helicopter-27-cycles.blend') assert task.total_tasks == 6 assert task.last_task == 0 assert task.num_tasks_received == 0 assert task.subtasks_given == {} assert task.num_failed_subtasks == 0 assert task.full_task_timeout == 14400 assert task.counting_nodes == {} assert task.stdout == {} assert task.stderr == {} assert task.results == {} assert task.res_files == {} assert path.isdir(task.tmp_dir) assert task.verificator.verification_options is None
def test_build(self): """ Test building docker blender task """ from golem.network.p2p.node import Node node_name = "some_node" task_def = self._get_test_task_definition() dir_manager = DirManager(self.path) builder = BlenderRenderTaskBuilder( Node(node_name=node_name, key='dd72b37a1f0c', pub_addr='1.2.3.4', pub_port=40102), task_def, dir_manager) task = builder.build() assert isinstance(task, BlenderRenderTask) assert not task.compositing assert not task.use_frames assert len(task.frames_given) == 5 assert isinstance(task.preview_file_path, str) assert not task.preview_updaters assert task.scale_factor == 0.8 assert task.src_code assert isinstance(task.header, TaskHeader) assert task.header.task_id == '7220aa01-ad45-4fb4-b199-ba72b37a1f0c' assert task.header.task_owner.key == 'dd72b37a1f0c' assert task.header.task_owner.pub_addr == '1.2.3.4' assert task.header.task_owner.pub_port == 40102 assert isinstance(task.header.task_owner, Node) assert task.header.subtask_timeout == 1200 assert task.header.task_owner.node_name == 'some_node' assert task.header.resource_size > 0 assert task.header.environment == 'BLENDER' assert task.header.estimated_memory == 0 assert task.docker_images[0].repository == 'golemfactory/blender' assert task.docker_images[0].tag == '1.4' assert task.header.max_price == 10.2 assert not task.header.signature assert task.listeners == [] assert len(task.task_resources) == 1 assert task.task_resources[0].endswith( 'scene-Helicopter-27-cycles.blend') assert task.total_tasks == 6 assert task.last_task == 0 assert task.num_tasks_received == 0 assert task.subtasks_given == {} assert task.num_failed_subtasks == 0 assert task.timeout == 14400 assert task.counting_nodes == {} assert task.stdout == {} assert task.stderr == {} assert task.results == {} assert task.res_files == {} assert path.isdir(task.tmp_dir)
def test_run(self): benchmark = BlenderBenchmark() task_definition = benchmark.task_definition task_state = TaskDesc() task_state.status = TaskStatus.notStarted task_state.definition = task_definition dir_manager = DirManager(self.path) task = Task.build_task( BlenderRenderTaskBuilder("node name", task_definition, self.path, dir_manager)) result = [None] def success(*_): result[0] = True def error(*_): result[0] = False self.br = BenchmarkRunner(task, self.path, success, error, benchmark) self.br.run() if self.br.tt: self.br.tt.join() assert result[0]
def test_build_correct_format(self): task_type = BlenderTaskTypeInfo() task_dict = self._task_dictionary output_format = task_dict.get('options').get('format') definition = BlenderRenderTaskBuilder.build_full_definition( task_type, task_dict) self.assertEqual(definition.output_format, output_format)
def test_build_unsupported_format(self): task_type = BlenderTaskTypeInfo() task_dict = self._task_dictionary output_format = 'JPG' task_dict['options']['format'] = output_format definition = BlenderRenderTaskBuilder.build_full_definition( task_type, task_dict) self.assertEqual(definition.output_format, 'PNG')
def test_advanced_verification(self): bb = BlenderBenchmark() td = bb.task_definition td.verification_options = AdvanceRenderingVerificationOptions() td.verification_options.type = 'forAll' dm = DirManager(self.tempdir) builder = BlenderRenderTaskBuilder(node_name="ABC", task_definition=bb.task_definition, root_path=self.tempdir, dir_manager=dm) task = builder.build() tmpdir = dm.get_task_temporary_dir(task.header.task_id, True) ed = task.query_extra_data(1000, 4, "NODE_ID", "NODE_NAME") file_ = path.join(tmpdir, 'preview.bmp') img = Image.new("RGB", (task.res_x, task.res_y)) img.save(file_, "BMP") task.computation_finished(ed.ctd.subtask_id, [file_], 1) assert task.subtasks_given[ed.ctd.subtask_id]['status'] == \ SubtaskStatus.failure