public void Setup() { _progress = new StringBuilderProgress(); _pathToTestRoot = Path.Combine(Path.GetTempPath(), "ChorusHistoryPaneTest"); // Don't use 'standard' ChorusTest, since it will fial, if the tests are run in seperate processes (R# 6). if (Directory.Exists(_pathToTestRoot)) Directory.Delete(_pathToTestRoot, true); Directory.CreateDirectory(_pathToTestRoot); string pathToText = WriteTestFile("version one of my pretend txt"); RepositorySetup.MakeRepositoryForTest(_pathToTestRoot, "bob",_progress); _project = new ProjectFolderConfiguration(_pathToTestRoot); _project.FolderPath = _pathToTestRoot; _project.IncludePatterns.Add(pathToText); _project.FolderPath = _pathToTestRoot; var revisionListOptions = new RevisionListOptions(); revisionListOptions.RevisionsToShowFilter = ShowRevisionPredicate; _model = new RevisionInRepositoryModel(HgRepository.CreateOrUseExisting(_project.FolderPath, new NullProgress()), null, revisionListOptions); _model.ProgressDisplay = _progress; }
public void CommandWith10Line_NoCallbackOption_Get10LinesSynchronously() { var progress = new StringBuilderProgress(); var result = CommandLineRunner.Run(App, "CommandLineRunnerTest", null, string.Empty, 100, progress, null); Assert.IsTrue(result.StandardOutput.Contains("0")); Assert.IsTrue(result.StandardOutput.Contains("9")); }
public void CommandWith10Line_NoCallbackOption_TimeoutAfter3s() { var progress = new StringBuilderProgress(); var result = CommandLineRunner.Run(App, "CommandLineRunnerTest", null, string.Empty, 3, progress, null); Assert.That(result.DidTimeOut, Is.True); Assert.That(result.StandardOutput, Is.Null); Assert.That(result.StandardError, Contains.Substring("Timed Out after waiting 3 seconds.")); }
public void CommandWith10Line_CallbackOption_Get10LinesAsynchronously() { var progress = new StringBuilderProgress(); int linesReceivedAsynchronously = 0; CommandLineRunner.Run(App, "CommandLineRunnerTest", null, string.Empty, 100, progress, s => ++linesReceivedAsynchronously); // The test fails on Linux because progress gets called 10x for StdOutput plus // 1x for StdError (probably on the closing of the stream), so linesReceivedAsync is 11. // It also failes about 4% of the time on TC Windows agents Assert.AreEqual(10, linesReceivedAsynchronously); }
/// <summary> /// Review: this is fragile and expensive. We're doing real internet traffic and creating real objects on S3 and parse.com /// which (to a very small extent) costs us real money. This will be slow. Also, under S3 eventual consistency rules, /// there is no guarantee that the data we just created will actually be retrievable immediately. /// </summary> /// <param name="bookName"></param> /// <param name="id"></param> /// <param name="uploader"></param> /// <param name="data"></param> /// <returns></returns> public Tuple <string, string> UploadAndDownLoadNewBook(string bookName, string id, string uploader, string data, bool isTemplate = false) { // Create a book folder with meta.json that includes an uploader and id and some other files. var originalBookFolder = MakeBook(bookName, id, uploader, data, true); if (isTemplate) { var metadata = BookMetaData.FromFolder(originalBookFolder); metadata.IsSuitableForMakingShells = true; metadata.WriteToFolder(originalBookFolder); } // The files that actually get uploaded omit some of the ones in the folder. // The only omitted one that messes up current unit tests is meta.bak var filesToUpload = Directory.GetFiles(originalBookFolder).Where(p => !p.EndsWith(".bak") && !p.Contains(BookStorage.PrefixForCorruptHtmFiles)); int fileCount = filesToUpload.Count(); Login(); //HashSet<string> notifications = new HashSet<string>(); var progress = new SIL.Progress.StringBuilderProgress(); var s3Id = _uploader.UploadBook(originalBookFolder, progress); var uploadMessages = progress.Text.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); var expectedFileCount = fileCount + 2; // should get one per file, plus one for metadata, plus one for book order #if DEBUG ++expectedFileCount; // and if in debug mode, then plus one for S3 ID #endif Assert.That(uploadMessages.Length, Is.EqualTo(expectedFileCount), "Uploaded file counts do not match"); Assert.That(progress.Text, Does.Contain( LocalizationManager.GetString("PublishTab.Upload.UploadingBookMetadata", "Uploading book metadata", "In this step, Bloom is uploading things like title, languages, & topic tags to the bloomlibrary.org database."))); Assert.That(progress.Text, Does.Contain(Path.GetFileName(filesToUpload.First()))); _uploader.WaitUntilS3DataIsOnServer(BloomS3Client.UnitTestBucketName, originalBookFolder); var dest = _workFolderPath.CombineForPath("output"); Directory.CreateDirectory(dest); _downloadedBooks.Clear(); var url = BookUpload.BloomS3UrlPrefix + BloomS3Client.UnitTestBucketName + "/" + s3Id; var newBookFolder = _downloader.HandleDownloadWithoutProgress(url, dest); Assert.That(Directory.GetFiles(newBookFolder).Length, Is.EqualTo(fileCount + 1), "Book order was not added during upload"); // book order is added during upload Assert.That(_downloadedBooks.Count, Is.EqualTo(1)); Assert.That(_downloadedBooks[0].FolderPath, Is.EqualTo(newBookFolder)); // Todo: verify that metadata was transferred to Parse.com return(new Tuple <string, string>(originalBookFolder, newBookFolder)); }
public void ShowAndDoWork(Action<IProgress, DoWorkEventArgs> work) { Progress.ProgressIndicator = ProgressBar; Progress.AddStatusProgress(StatusLabel); ProgressString = new StringBuilderProgress(); Progress.AddMessageProgress(ProgressString); //Progress.AddMessageProgress(_messageLabelProgress); _backgroundWorker.RunWorkerCompleted += (sender, e) => Close(); _backgroundWorker.WorkerReportsProgress = true; _backgroundWorker.WorkerSupportsCancellation = true; _backgroundWorker.ProgressChanged += new ProgressChangedEventHandler(_backgroundWorker_ProgressChanged); _backgroundWorker.DoWork += (sender, arg) => work(Progress, arg); ShowDialog(); }
public void ShowAndDoWork(Action<IProgress> work) { _work = work; Progress.ProgressIndicator = ProgressBar; Progress.AddStatusProgress(_status); Progress.AddMessageProgress(_messageLabelProgress); Progress.Add(new ApplicationDoEventsProgress());//this will keep our UI alive var stringProgress = new StringBuilderProgress(); Progress.Add(stringProgress); Application.Idle += StartWorking; ShowDialog(); if (Progress.ErrorEncountered) { SIL.Reporting.ErrorReport.NotifyUserOfProblem("There was a problem performing that operation.\r\n\r\n"+stringProgress.Text); } }
public void UploadSmokeTest() { using(var folder = new TemporaryFolder("Upload Smoke Test")) { File.WriteAllText(folder.Combine("hello there.txt"), "hello there"); using(var bookZip = TempFile.WithFilenameInTempFolder("Upload Smoketest.zip")) { var zip = new BloomZipFile(bookZip.Path); zip.AddDirectory(folder.FolderPath); zip.Save(); var progress = new StringBuilderProgress(); ProblemBookUploader.UploadBook(BloomS3Client.UnitTestBucketName, bookZip.Path,progress); Assert.IsTrue(progress.Text.Contains("Success"), progress.Text); } } }
public void Setup() { _progress = new StringBuilderProgress(); _pathToTestRoot = Path.Combine(Path.GetTempPath(), "ChorusTest"); Directory.CreateDirectory(_pathToTestRoot); _pathToText = Path.Combine(_pathToTestRoot, "foo.txt"); File.WriteAllText(_pathToText, "version one of my pretend txt"); RepositorySetup.MakeRepositoryForTest(_pathToTestRoot, "bob",_progress); _project = new ProjectFolderConfiguration(_pathToTestRoot); _project.FolderPath = _pathToTestRoot; _project.IncludePatterns.Add(_pathToText); _project.FolderPath = _pathToTestRoot; _repository = new HgRepository(_project.FolderPath, _progress); }
public void Setup() { _progress = new StringBuilderProgress(); }
private bool IsSharedFolderRepositoryReachable(RepositoryAddress repoAddress, out string logString) { // We want to know if we can connect, but we don't want to bother the user with extraneous information. // But we DO want the diagnostic information available. logString = string.Empty; var progress = new StringBuilderProgress() { ShowVerbose = true }; var result = repoAddress.CanConnect(_repository, "", progress); if (!result) logString = progress.Text; return result; }
private bool IsInternetRepositoryReachable(RepositoryAddress repoAddress, out string logString) { logString = string.Empty; var progress = new StringBuilderProgress(){ShowVerbose = true}; var result = repoAddress.CanConnect(_repository, repoAddress.Name, progress); if (!result) logString = progress.Text; return result; }
public void Setup() { _progress = new StringBuilderProgress(); _resultDom = new XmlDocument(); }
/// <summary> /// Review: this is fragile and expensive. We're doing real internet traffic and creating real objects on S3 and parse.com /// which (to a very small extent) costs us real money. This will be slow. Also, under S3 eventual consistency rules, /// there is no guarantee that the data we just created will actually be retrievable immediately. /// </summary> /// <param name="bookName"></param> /// <param name="id"></param> /// <param name="uploader"></param> /// <param name="data"></param> /// <returns></returns> public Tuple<string, string> UploadAndDownLoadNewBook(string bookName, string id, string uploader, string data, bool isTemplate = false) { // Create a book folder with meta.json that includes an uploader and id and some other files. var originalBookFolder = MakeBook(bookName, id, uploader, data); if (isTemplate) { var metadata = BookMetaData.FromFolder(originalBookFolder); metadata.IsSuitableForMakingShells = true; metadata.WriteToFolder(originalBookFolder); } int fileCount = Directory.GetFiles(originalBookFolder).Length; Login(); //HashSet<string> notifications = new HashSet<string>(); var progress = new SIL.Progress.StringBuilderProgress(); var s3Id = _transfer.UploadBook(originalBookFolder,progress); var uploadMessages = progress.Text.Split(new string[] {Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries); Assert.That(uploadMessages.Length, Is.EqualTo(fileCount + 2)); // should get one per file, plus one for metadata, plus one for book order Assert.That(progress.Text, Is.StringContaining( LocalizationManager.GetString("PublishTab.Upload.UploadingBookMetadata", "Uploading book metadata", "In this step, Bloom is uploading things like title, languages, & topic tags to the bloomlibrary.org database."))); Assert.That(progress.Text, Is.StringContaining(Path.GetFileName(Directory.GetFiles(originalBookFolder).First()))); _transfer.WaitUntilS3DataIsOnServer(BloomS3Client.UnitTestBucketName, originalBookFolder); var dest = _workFolderPath.CombineForPath("output"); Directory.CreateDirectory(dest); _downloadedBooks.Clear(); var url = BookTransfer.BloomS3UrlPrefix + BloomS3Client.UnitTestBucketName + "/" + s3Id; var newBookFolder = _transfer.HandleDownloadWithoutProgress(url, dest); Assert.That(Directory.GetFiles(newBookFolder).Length, Is.EqualTo(fileCount + 1)); // book order is added during upload Assert.That(_downloadedBooks.Count, Is.EqualTo(1)); Assert.That(_downloadedBooks[0].FolderPath,Is.EqualTo(newBookFolder)); // Todo: verify that metadata was transferred to Parse.com return new Tuple<string, string>(originalBookFolder, newBookFolder); }
public void Setup() { _progress = new StringBuilderProgress(); _pathToTestRoot = Path.Combine(Path.GetTempPath(), "ChorusTest"); Directory.CreateDirectory(_pathToTestRoot); string pathToText = Path.Combine(_pathToTestRoot, "foo.txt"); File.WriteAllText(pathToText, "version one of my pretend txt"); RepositorySetup.MakeRepositoryForTest(_pathToTestRoot, "bob",_progress); _project = new ProjectFolderConfiguration(_pathToTestRoot); _project.FolderPath = _pathToTestRoot; _project.IncludePatterns.Add(pathToText); _project.FolderPath = _pathToTestRoot; _synchronizer = Synchronizer.FromProjectConfiguration(_project, new NullProgress()); _model = new SyncControlModel(_project, SyncUIFeatures.Advanced,null); _model.AddMessagesDisplay(_progress); }