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); }
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()); }
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()); }
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); }
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(); }
/// <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)); }
/// <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; }
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()); }
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()); }
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()); }