예제 #1
0
 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
예제 #2
0
 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)
예제 #3
0
 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)
예제 #4
0
 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
예제 #5
0
 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)
예제 #6
0
    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]
예제 #7
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)
예제 #8
0
 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')
예제 #9
0
 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