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'
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'
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)