def setUp(self):
     """
     Setup for command generate tests.
     """
     self.video = Video(veda_id='XXXXXXXX2016-V00TEST')
     self.encode = Encode(video_object=self.video, profile_name=None)
     self.command_generate = CommandGenerate(VideoObject=self.video,
                                             EncodeObject=self.encode)
 def setUpClass(cls):
     super(ApiCommunicateTest, cls).setUpClass()
     cls.Video = Video(
         veda_id='XXXXXXXX2016-V00TEST'
     )
     cls.Video.valid = True
     cls.veda_video_status = 'veda status'
     cls.val_video_status = 'val status'
示例#3
0
    def setUp(self):
        super(VideoWorkerTest, self).setUp()
        self.VW = VideoWorker(**{'workdir': '/dummy-work-dir'})

        # Provide dummy values for Video Worker.
        self.VW.VideoObject = Video(veda_id='XXXXXXXX2016-V00TEST')
        self.VW.VideoObject.valid = True
        self.VW.output_file = 'dummy-outfile'
        self.VW.source_file = 'dummy-sourcefile'
示例#4
0
    def run(self):
        self.settings = get_config()

        if self.encode_profile is None:
            logger.error('No Encode Profile Specified')
            return

        self.VideoObject = Video(veda_id=self.veda_id, )

        if self.source_file is not None:
            self.VideoObject.mezz_filepath = os.path.join(
                self.workdir, self.source_file)

        self.VideoObject.activate()
        if not self.VideoObject.valid:
            logger.error('{id} : Invalid Video Data'.format(
                id=self.VideoObject.veda_id))
            return

        if not os.path.exists(self.workdir):
            os.mkdir(self.workdir)

        logger.info('{id} | {encoding} : Ready for Encode'.format(
            id=self.VideoObject.veda_id, encoding=self.encode_profile))
        # Pipeline Steps :
        #   I. Intake
        #     Ib. Validate Mezz
        #   II. change status in APIs
        #   III. Generate Encode Command
        #   IV. Execute Encodes
        #     IVa. Validate Products
        #   (*)V. Deliver Encodes (sftp and others?), retrieve URLs
        #   (*)VI. Change Status in APIs, add URLs
        #   VII. Clean Directory

        self._engine_intake()

        if not self.VideoObject.valid:
            logger.error('Invalid Video / Local')
            return

        if self.VideoObject.val_id is not None:
            self._update_api()

        # generate video images command and update S3 and edxval
        # run against 'hls' encode only
        if self.encode_profile == 'hls':
            # Run HLS encode
            self._hls_pipeline()
            # Auto-video Images
            VideoImages(video_object=self.VideoObject,
                        work_dir=self.workdir,
                        source_file=self.source_file,
                        jobid=self.jobid,
                        settings=self.settings).create_and_update()

        else:
            self._static_pipeline()
        logger.info('{id} | {encoding} : Encode Complete'.format(
            id=self.VideoObject.veda_id, encoding=self.encode_profile))
        if self.endpoint_url is not None and self.VideoObject.veda_id is not None:
            # Integrate with main
            veda_id = self.veda_id
            encode_profile = self.encode_profile
            deliverable_route.apply_async(
                (veda_id, encode_profile),
                queue=self.settings['celery_deliver_queue'])
        logger.info(
            '{id} | {encoding} : encoded file queued for delivery'.format(
                id=self.VideoObject.veda_id, encoding=self.encode_profile))
        # Clean up workdir
        if self.jobid is not None:
            shutil.rmtree(self.workdir)