Ejemplo n.º 1
0
        public void EncodeSuccessfulTest()
        {
            //Arragnge
            var videoMssg = new VideoMessage();
            var videoList = new List<VideoData>();
            var screenshotList = new List<ScreenshotData>();

            var encodeProcess = new EncodeProcess(5, _encoder.Object, _videoRepository.Object, _mediaInfoReader.Object, _queueVideoRepository.Object, _fileSystem.Object);

            _encoder.Setup(m => m.EncodeVideo(It.IsAny<VideoMediaInfo>(), It.IsAny<string>(), It.IsAny<string>())).Returns(videoList);
            _encoder.Setup(m => m.EncodeScreenshot(It.IsAny<VideoMediaInfo>(), It.IsAny<string>(), It.IsAny<string>())).Returns(screenshotList);

            var downloadInfo = new DownloadInformation()
                                   {
                                       LocalPath = "local path",
                                       LocalFilePath = "local file path",
                                       QueueInformation = new QueueInformation()
                                                              {
                                                                  VideoMessage = videoMssg
                                                              }
                                   };

            //Act
            var encodeInfo = encodeProcess.ProcessMethod(downloadInfo, new CancellationToken());

            //Assert
            Assert.AreEqual(downloadInfo.QueueInformation.VideoMessage, videoMssg);
            Assert.AreEqual(downloadInfo.LocalFilePath, encodeInfo.DownloadInformation.LocalFilePath);
            Assert.AreEqual(downloadInfo.LocalPath, encodeInfo.DownloadInformation.LocalPath);
            Assert.AreEqual(videoList, encodeInfo.EncodeVideoList);
            Assert.AreEqual(screenshotList, encodeInfo.EncodeScreenshotList);
        }
Ejemplo n.º 2
0
        public void EncodeNotExistVideoTest()
        {
            //Arragnge
            var videoMssg = new VideoMessage();

            var encodeProcess = new EncodeProcess(5, _encoder.Object, _videoRepository.Object, _mediaInfoReader.Object, _queueVideoRepository.Object, _fileSystem.Object);

            _videoRepository.Setup(m => m.ExistsEncodedVideo(It.IsAny<string>())).Returns(false);

            var downloadInfo = new DownloadInformation()
                                   {
                                       LocalPath = "local path",
                                       LocalFilePath = "local file path",
                                       QueueInformation = new QueueInformation()
                                                              {
                                                                  VideoMessage = videoMssg
                                                              }
                                   };

            //Act
            encodeProcess.ProcessMethod(downloadInfo, new CancellationToken());

            //Assert
            _videoRepository.Verify(m => m.SetEncodingState(It.IsAny<string>(), EncodingState.InProcess, EncodingStage.Encoding, null), Times.Once());
            _videoRepository.Verify(m => m.ExistsEncodedVideo(It.IsAny<string>()), Times.Once());
            _mediaInfoReader.Verify(m => m.GetInformation(It.IsAny<string>()), Times.Once());
            _videoRepository.Verify(m => m.FillMediaInfoTables(It.IsAny<Dictionary<Enum, object>>(), It.IsAny<string>()), Times.Once());
            _videoRepository.Verify(m => m.GetVideoMediaInfo(It.IsAny<Dictionary<Enum, object>>()), Times.Once());
            _encoder.Verify(m => m.EncodeVideo(It.IsAny<VideoMediaInfo>(), It.IsAny<string>(), It.IsAny<string>()), Times.Once());
            _encoder.Verify(m => m.EncodeScreenshot(It.IsAny<VideoMediaInfo>(), It.IsAny<string>(), It.IsAny<string>()), Times.Once());
        }
Ejemplo n.º 3
0
        public void EncodeNotExistVideoTest()
        {
            //Arragnge
            var videoMssg = new VideoMessage();

            var encodeProcess = new EncodeProcess(5, _encoder.Object, _videoRepository.Object, _mediaInfoReader.Object, _queueVideoRepository.Object, _fileSystem.Object);

            _videoRepository.Setup(m => m.ExistsEncodedVideo(It.IsAny <string>())).Returns(false);

            var downloadInfo = new DownloadInformation()
            {
                LocalPath        = "local path",
                LocalFilePath    = "local file path",
                QueueInformation = new QueueInformation()
                {
                    VideoMessage = videoMssg
                }
            };

            //Act
            encodeProcess.ProcessMethod(downloadInfo, new CancellationToken());

            //Assert
            _videoRepository.Verify(m => m.SetEncodingState(It.IsAny <string>(), EncodingState.InProcess, EncodingStage.Encoding, null), Times.Once());
            _videoRepository.Verify(m => m.ExistsEncodedVideo(It.IsAny <string>()), Times.Once());
            _mediaInfoReader.Verify(m => m.GetInformation(It.IsAny <string>()), Times.Once());
            _videoRepository.Verify(m => m.FillMediaInfoTables(It.IsAny <Dictionary <Enum, object> >(), It.IsAny <string>()), Times.Once());
            _videoRepository.Verify(m => m.GetVideoMediaInfo(It.IsAny <Dictionary <Enum, object> >()), Times.Once());
            _encoder.Verify(m => m.EncodeVideo(It.IsAny <VideoMediaInfo>(), It.IsAny <string>(), It.IsAny <string>()), Times.Once());
            _encoder.Verify(m => m.EncodeScreenshot(It.IsAny <VideoMediaInfo>(), It.IsAny <string>(), It.IsAny <string>()), Times.Once());
        }
Ejemplo n.º 4
0
        public void EncodeSuccessfulTest()
        {
            //Arragnge
            var videoMssg      = new VideoMessage();
            var videoList      = new List <VideoData>();
            var screenshotList = new List <ScreenshotData>();

            var encodeProcess = new EncodeProcess(5, _encoder.Object, _videoRepository.Object, _mediaInfoReader.Object, _queueVideoRepository.Object, _fileSystem.Object);

            _encoder.Setup(m => m.EncodeVideo(It.IsAny <VideoMediaInfo>(), It.IsAny <string>(), It.IsAny <string>())).Returns(videoList);
            _encoder.Setup(m => m.EncodeScreenshot(It.IsAny <VideoMediaInfo>(), It.IsAny <string>(), It.IsAny <string>())).Returns(screenshotList);

            var downloadInfo = new DownloadInformation()
            {
                LocalPath        = "local path",
                LocalFilePath    = "local file path",
                QueueInformation = new QueueInformation()
                {
                    VideoMessage = videoMssg
                }
            };

            //Act
            var encodeInfo = encodeProcess.ProcessMethod(downloadInfo, new CancellationToken());

            //Assert
            Assert.AreEqual(downloadInfo.QueueInformation.VideoMessage, videoMssg);
            Assert.AreEqual(downloadInfo.LocalFilePath, encodeInfo.DownloadInformation.LocalFilePath);
            Assert.AreEqual(downloadInfo.LocalPath, encodeInfo.DownloadInformation.LocalPath);
            Assert.AreEqual(videoList, encodeInfo.EncodeVideoList);
            Assert.AreEqual(screenshotList, encodeInfo.EncodeScreenshotList);
        }
Ejemplo n.º 5
0
        public void BrunchOfDeleteTest()
        {
            //Arragnge
            var videoMsg = new VideoMessage()
            {
                Delete = true
            };

            var encodeProcess = new EncodeProcess(5, _encoder.Object, _videoRepository.Object, _mediaInfoReader.Object, _queueVideoRepository.Object, _fileSystem.Object);
            var downloadInfo  = new DownloadInformation()
            {
                QueueInformation = new QueueInformation()
                {
                    VideoMessage = videoMsg
                }
            };
            //Act
            var encodeInfo = encodeProcess.ProcessMethod(downloadInfo, new CancellationToken());

            //Assert
            Assert.AreEqual(downloadInfo, encodeInfo.DownloadInformation);

            _videoRepository.Verify(m => m.SetEncodingState(It.IsAny <string>(), EncodingState.InProcess, EncodingStage.Encoding, null), Times.Never());
            _mediaInfoReader.Verify(m => m.GetInformation(It.IsAny <string>()), Times.Never());
            _videoRepository.Verify(m => m.FillMediaInfoTables(It.IsAny <Dictionary <Enum, object> >(), It.IsAny <string>()), Times.Never());
            _videoRepository.Verify(m => m.GetVideoMediaInfo(It.IsAny <Dictionary <Enum, object> >()), Times.Never());
            _encoder.Verify(m => m.EncodeVideo(It.IsAny <VideoMediaInfo>(), It.IsAny <string>(), It.IsAny <string>()), Times.Never());
            _encoder.Verify(m => m.EncodeScreenshot(It.IsAny <VideoMediaInfo>(), It.IsAny <string>(), It.IsAny <string>()), Times.Never());
        }
        public void EncodeTest()
        {
            //Arrange
            var cloudStorageConfiguration = new CloudStorageConfiguration(CloudStorageAccount.DevelopmentStorageAccount, new Version());

            var queueVideoRepository = new QueueVideoRepository(cloudStorageConfiguration.StorageAccount.CreateCloudQueueClient());
            var videoRepository      = new FakeVideoRepository(_blobSource, _blobDestination);
            var screenshotRepository = new FakeScreenshotRepository(_blobDestination);
            var mediaInfoReader      = new MediaInfoReader();
            var encoder           = new Encoder();
            var fileSystemWrapper = new FileSystemWrapper();

            var queueProcess    = new QueueProcess(1000, queueVideoRepository);
            var downloadProcess = new DownloadProcess(5, videoRepository, fileSystemWrapper);
            var encoderProcess  = new EncodeProcess(5, encoder, videoRepository, mediaInfoReader, queueVideoRepository, fileSystemWrapper);
            var uploadProcess   = new UploadProcess(5, videoRepository, screenshotRepository, fileSystemWrapper);
            var finishProcess   = new FinishProcess(queueVideoRepository, videoRepository, fileSystemWrapper);

            var queueContainer    = new ProcessContainer <object, QueueInformation, DownloadInformation>(queueProcess, downloadProcess);
            var downloadContainer = new ProcessContainer <QueueInformation, DownloadInformation, EncodeInformation>(downloadProcess, encoderProcess);
            var encoderContainer  = new ProcessContainer <DownloadInformation, EncodeInformation, UploadInformation>(encoderProcess, uploadProcess);
            var uploadContainer   = new ProcessContainer <EncodeInformation, UploadInformation, object>(uploadProcess, finishProcess);

            var processManager = new EncodeProcessManager(queueVideoRepository.DeleteMessageLocal);

            processManager.Add(queueContainer);
            processManager.Add(downloadContainer);
            processManager.Add(encoderContainer);
            processManager.Add(uploadContainer);

            var timer = new Timer(UpdateMessages, queueVideoRepository, (int)queueVideoRepository.InvisibleTime.TotalMilliseconds / 2, (int)queueVideoRepository.InvisibleTime.TotalMilliseconds / 2);

            //Act & Assert
            Task task = processManager.Start();

            StartQueueWork();

            Thread.Sleep(30000);


            while (queueVideoRepository.ApproximateMessageCount > 0)
            {
                Thread.Sleep(60000);
            }

            //Thread.Sleep(50*60*1000);

            processManager.Stop();

            task.Wait();
        }
        public void EncodeTest()
        {
            //Arrange
            var cloudStorageConfiguration = new CloudStorageConfiguration(CloudStorageAccount.DevelopmentStorageAccount, new Version());

            var queueVideoRepository = new QueueVideoRepository(cloudStorageConfiguration.StorageAccount.CreateCloudQueueClient());
            var videoRepository = new FakeVideoRepository(_blobSource, _blobDestination);
            var screenshotRepository = new FakeScreenshotRepository(_blobDestination);
            var mediaInfoReader = new MediaInfoReader();
            var encoder = new Encoder();
            var fileSystemWrapper = new FileSystemWrapper();

            var queueProcess = new QueueProcess(1000, queueVideoRepository);
            var downloadProcess = new DownloadProcess(5, videoRepository, fileSystemWrapper);
            var encoderProcess = new EncodeProcess(5, encoder, videoRepository, mediaInfoReader, queueVideoRepository, fileSystemWrapper);
            var uploadProcess = new UploadProcess(5, videoRepository, screenshotRepository, fileSystemWrapper);
            var finishProcess = new FinishProcess(queueVideoRepository, videoRepository, fileSystemWrapper);

            var queueContainer = new ProcessContainer<object, QueueInformation, DownloadInformation>(queueProcess, downloadProcess);
            var downloadContainer = new ProcessContainer<QueueInformation, DownloadInformation, EncodeInformation>(downloadProcess, encoderProcess);
            var encoderContainer = new ProcessContainer<DownloadInformation, EncodeInformation, UploadInformation>(encoderProcess, uploadProcess);
            var uploadContainer = new ProcessContainer<EncodeInformation, UploadInformation, object>(uploadProcess, finishProcess);

            var processManager = new EncodeProcessManager(queueVideoRepository.DeleteMessageLocal);
            processManager.Add(queueContainer);
            processManager.Add(downloadContainer);
            processManager.Add(encoderContainer);
            processManager.Add(uploadContainer);

            var timer = new Timer(UpdateMessages, queueVideoRepository, (int) queueVideoRepository.InvisibleTime.TotalMilliseconds/2, (int) queueVideoRepository.InvisibleTime.TotalMilliseconds/2);

            //Act & Assert
            Task task = processManager.Start();
            StartQueueWork();

            Thread.Sleep(30000);


            while (queueVideoRepository.ApproximateMessageCount > 0)
            {
                Thread.Sleep(60000);
            }

            //Thread.Sleep(50*60*1000);

            processManager.Stop();

            task.Wait();
        }
Ejemplo n.º 8
0
        /// <summary>
        /// The neroAacEnc process has exited.
        /// </summary>
        /// <param name="sender">
        /// The sender.
        /// </param>
        /// <param name="e">
        /// The EventArgs.
        /// </param>
        private void EncodeProcessExited(object sender, EventArgs e)
        {
            if (_encodePipe != null)
            {
                try
                {
                    if (!_encodePipeState.IsCompleted)
                    {
                        _encodePipe.EndWaitForConnection(_encodePipeState);
                    }
                }
                catch (Exception exc)
                {
                    Log.Error(exc);
                }
            }

            try
            {
                EncodeProcess.CancelErrorRead();
            }
            catch (Exception exc)
            {
                Log.Error(exc);
            }

            _encoderIsRunning = false;

            _currentTask.ExitCode = EncodeProcess.ExitCode;
            Log.Info($"Exit Code: {_currentTask.ExitCode:0}");

            if (_currentTask.ExitCode == 0)
            {
                _currentTask.TempFiles.Add(_inputFile);
                _currentTask.TempFiles.Add(_audio.TempFile);
                _currentTask.TempFiles.Add(_audio.TempFile + ".d2a");
                _currentTask.TempFiles.Add(_audio.TempFile + ".ffindex");
                _audio.TempFile = _outputFile;
                AudioHelper.GetStreamInfo(_audio);
            }

            _currentTask.CompletedStep = _currentTask.NextStep;
            IsEncoding = false;
            InvokeEncodeCompleted(new EncodeCompletedEventArgs(true, null, string.Empty));
        }
Ejemplo n.º 9
0
 /// <summary>
 /// Kill the CLI process
 /// </summary>
 public override void Stop()
 {
     try
     {
         if (EncodeProcess != null && !EncodeProcess.HasExited)
         {
             _encoderIsRunning = false;
             Thread.Sleep(200);
             EncodeProcess.Kill();
         }
         if (DecodeProcess != null && !DecodeProcess.HasExited)
         {
             _decoderIsRunning = false;
             Thread.Sleep(200);
             DecodeProcess.Kill();
         }
     }
     catch (Exception exc)
     {
         Log.Error(exc);
     }
     IsEncoding = false;
 }
Ejemplo n.º 10
0
        public void EncodeExceptionHandlerTest()
        {
            //Arrange
            const string localPath     = "local path";
            var          videoMsg      = new VideoMessage();
            var          encodeProcess = new EncodeProcess(5, _encoder.Object, _videoRepository.Object, _mediaInfoReader.Object, _queueVideoRepository.Object, _fileSystem.Object);

            var downloadInfo = new DownloadInformation()
            {
                LocalPath        = localPath,
                QueueInformation = new QueueInformation()
                {
                    VideoMessage = videoMsg
                }
            };

            //Act
            encodeProcess.ExceptionHandler(new Exception(), downloadInfo);

            //Asert
            _videoRepository.Verify(m => m.SetEncodingState(It.IsAny <string>(), EncodingState.Failed, EncodingStage.Encoding, null), Times.Once());
            _fileSystem.Verify(m => m.DirectoryDelete(localPath), Times.Once());
            _queueVideoRepository.Verify(m => m.DeleteMessage(videoMsg), Times.Once());
        }
Ejemplo n.º 11
0
        public void EncodeExceptionHandlerTest()
        {
            //Arrange
            const string localPath = "local path";
            var videoMsg = new VideoMessage();
            var encodeProcess = new EncodeProcess(5, _encoder.Object, _videoRepository.Object, _mediaInfoReader.Object, _queueVideoRepository.Object, _fileSystem.Object);

             var downloadInfo = new DownloadInformation()
                                   {
                                       LocalPath=localPath,
                                       QueueInformation = new QueueInformation()
                                                              {
                                                                  VideoMessage = videoMsg
                                                              }
                                   };

            //Act
            encodeProcess.ExceptionHandler(new Exception(), downloadInfo);

            //Asert
            _videoRepository.Verify(m=>m.SetEncodingState(It.IsAny<string>(),EncodingState.Failed, EncodingStage.Encoding, null), Times.Once());
            _fileSystem.Verify(m=>m.DirectoryDelete(localPath), Times.Once());
            _queueVideoRepository.Verify(m=>m.DeleteMessage(videoMsg), Times.Once());
        }
Ejemplo n.º 12
0
        public void BrunchOfDeleteTest()
        {
            //Arragnge
            var videoMsg = new VideoMessage() {Delete = true};

            var encodeProcess = new EncodeProcess(5, _encoder.Object, _videoRepository.Object, _mediaInfoReader.Object, _queueVideoRepository.Object, _fileSystem.Object);
            var downloadInfo = new DownloadInformation()
                                   {
                                       QueueInformation = new QueueInformation()
                                                              {
                                                                  VideoMessage = videoMsg
                                                              }
                                   };
            //Act
            var encodeInfo = encodeProcess.ProcessMethod(downloadInfo, new CancellationToken());

            //Assert
            Assert.AreEqual(downloadInfo, encodeInfo.DownloadInformation);

            _videoRepository.Verify(m => m.SetEncodingState(It.IsAny<string>(), EncodingState.InProcess, EncodingStage.Encoding, null), Times.Never());
            _mediaInfoReader.Verify(m => m.GetInformation(It.IsAny<string>()), Times.Never());
            _videoRepository.Verify(m => m.FillMediaInfoTables(It.IsAny<Dictionary<Enum, object>>(), It.IsAny<string>()), Times.Never());
            _videoRepository.Verify(m => m.GetVideoMediaInfo(It.IsAny<Dictionary<Enum, object>>()), Times.Never());
            _encoder.Verify(m => m.EncodeVideo(It.IsAny<VideoMediaInfo>(), It.IsAny<string>(), It.IsAny<string>()), Times.Never());
            _encoder.Verify(m => m.EncodeScreenshot(It.IsAny<VideoMediaInfo>(), It.IsAny<string>(), It.IsAny<string>()), Times.Never());

        }