public void SearchInTailedFilesAndScrollIntoTheEnds() { var pulse = new Subject <Unit>(); using (var files = new TestFileCollection()) { for (int i = 0; i < 10; i++) { files.Add(new TestFile()); files[i].Append(Enumerable.Range(1, 10).Select(j => $"{i}. files {j}. row").ToArray()); } FileSearchResult fileSearchResult = null; var search = files.Select(t => t.Info.WatchFile(pulse)) .Merge() .Search(str => int.Parse(str.Split('.')[0]) % 2 != 0); using (search.Subscribe(x => fileSearchResult = x)) { pulse.Once(); var lines = fileSearchResult.ReadLines(new ScrollRequest(20, 30)).Select(line => line.Text); var expectedLines = Enumerable.Range(7, 3).Select(i => { return(i % 2 != 0 ? Enumerable.Range(1, 10).Select(j => $"{i}. files {j}. row") : null); }) .Where(t => t != null) .SelectMany(t => t).ToArray(); lines.ShouldAllBeEquivalentTo(expectedLines); } } }
public void CanReadLinesBack() { var scheduler = new TestScheduler(); var pulse = new Subject <Unit>(); using (var file = new TestFile()) { FileSearchResult fileSearchResult = null; file.Append(Enumerable.Range(1, 100).Select(i => i.ToString()).ToArray()); using (file.Info.WatchFile(pulse) .Search(str => str.Contains("9"), scheduler) .Subscribe(x => fileSearchResult = x)) { pulse.Once(); fileSearchResult.Matches.Length.Should().Be(19); file.Append(new[] { "9", "20" }); pulse.Once(); fileSearchResult.Matches.Length.Should().Be(20); file.Append(new[] { "9999" }); pulse.Once(); fileSearchResult.Matches.Length.Should().Be(21); } } }
public void SearchInTenTailedFiles() { var pulse = new Subject <Unit>(); using (var files = new TestFileCollection()) { for (int i = 0; i < 10; i++) { files.Add(new TestFile()); files[i].Append(Enumerable.Range(1, 100).Select(j => $"{(i + 1)}. files {j} row").ToArray()); } FileSearchResult fileSearchResult = null; var search = files.Select(t => t.Info.WatchFile(pulse)) .Merge() .Search(str => str.Contains("files 9 row")); using (search.Subscribe(x => fileSearchResult = x)) { pulse.Once(); int matches = 0; while (fileSearchResult != null) { matches += fileSearchResult.Count; fileSearchResult = fileSearchResult.Previous as FileSearchResult; } matches.Should().Be(10); } } }
public void SearchOnDataWhenTailedFilesArePopulated() { var pulse = new Subject <Unit>(); using (var files = new TestFileCollection()) { for (int i = 0; i < 10; i++) { files.Add(new TestFile()); } FileSearchResult fileSearchResult = null; var search = files.Select(t => t.Info.WatchFile(pulse)) .Merge() .Search(str => str.Contains("9")); using (search.Subscribe(x => fileSearchResult = x)) { for (int i = 0; i < 10; i++) { files[i].Append(Enumerable.Range(1, 100).Select(j => j.ToString()).ToArray()); } pulse.Once(); pulse.Once(); while (fileSearchResult != null) { fileSearchResult.Matches.Length.Should().NotBe(0); fileSearchResult = fileSearchResult.Previous as FileSearchResult; } } } }
public void SearchFiles(string searchTerm, string peerID) { if (ClientHostDetails.Any()) // Removed in Tutorial // { // var info = ClientHostDetails.First(p => p.ID == peerID); var result = (from file in AvailableFileMetaData where searchTerm == file.FileName || file.FileName.Contains(searchTerm) || file.FileName.IndexOf(searchTerm, StringComparison.CurrentCulture) > 0 select file); if (result.Any()) { FileSearchResultModel searchResult = new FileSearchResultModel { PeerID = peerID, Files = (ObservableCollection <FileMetaData>)result }; FileSearchResult?.Invoke(searchResult); } /*if (info != null) * { * if (result.Any()) * { * FileSearchResultModel search = new FileSearchResultModel * { * ServiceHost = FileServiceHost, * Files = (ObservableCollection<FileMetaData>)result * }; * } * }*/ } }
private FileSearchResult handleFileSearch(UriHandlerData data) { var filename = data.Queries.GetString("fs_from"); var sm = data.Queries.GetBoolean("fs_similar"); var cv = data.Queries.GetBoolean("fs_covers"); var exp = data.Queries.GetBoolean("fs_exp"); var hashes = (data.Queries.GetString("f_shash") ?? "") .Split(",; ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries) .Where(str => str.All(ch => ('0' <= ch && ch <= '9') || ('a' <= ch && ch <= 'f') || ('A' <= ch && ch <= 'F'))) .Select(SHA1Value.Parse); var otherdata = handleSearch(data); return(FileSearchResult.Search(otherdata.Keyword, otherdata.Category, hashes, filename, sm, cv, exp)); }
public void NotExistingFile() { var pulse = new Subject <Unit>(); using (var file = new TestFile()) { file.Delete(); FileSearchResult fileSearchResult = null; using (file.Info.WatchFile(pulse) .Search(str => str.Contains("9")) .Subscribe(x => fileSearchResult = x)) { fileSearchResult.Should().BeNull(); } } }
public void InitiallyEmptyThenLinesAdded() { var scheduler = new TestScheduler(); using (var file = new TestFile()) { FileSearchResult fileSearchResult = null; using (file.Info.WatchFile(scheduler: scheduler) .Search(str => str.Contains("9")) .Subscribe(x => fileSearchResult = x)) { scheduler.AdvanceBy(1); file.Append(Enumerable.Range(1, 100).Select(i => i.ToString()).ToArray()); scheduler.AdvanceByMilliSeconds(250); fileSearchResult.Matches.Length.Should().Be(19); } } }
public void SearchOnDataWhenFileIsPopulated() { var pulse = new Subject <Unit>(); using (var file = new TestFile()) { FileSearchResult fileSearchResult = null; using (file.Info.WatchFile(pulse) .Search(str => str.Contains("9")) .Subscribe(x => fileSearchResult = x)) { file.Append(Enumerable.Range(1, 100).Select(i => i.ToString()).ToArray()); pulse.Once(); pulse.Once(); fileSearchResult.Matches.Length.Should().NotBe(0); } } }
public void SearchInTailedFilesAndAfterAppendOneLineIntoOneFileAndSrollBegins() { var pulse = new Subject <Unit>(); using (var files = new TestFileCollection()) { for (int i = 0; i < 10; i++) { files.Add(new TestFile()); files[i].Append(Enumerable.Range(1, 10).Select(j => $"{i}. files {j}. row").ToArray()); } FileSearchResult fileSearchResult = null; var search = files.Select(t => t.Info.WatchFile(pulse)) .Merge() .Search(str => int.Parse(str.Split('.')[0]) % 2 != 0); using (search.Subscribe(x => fileSearchResult = x)) { pulse.Once(); files[0].Append("1. file added new row"); pulse.Once(); while (fileSearchResult?.Next != null) { fileSearchResult = fileSearchResult?.Next as FileSearchResult; } var lines = fileSearchResult.ReadLines(new ScrollRequest(20, 0)).Select(line => line.Text); var expectedLines = Enumerable.Range(1, 3).Select(i => { return(i % 2 != 0 ? Enumerable.Range(1, 10).Select(j => $"{i}. files {j}. row") : null); }) .Where(t => t != null) .SelectMany(t => t).ToList(); expectedLines.RemoveAt(expectedLines.Count - 1); expectedLines = new[] { new[] { "1. file added new row" }, expectedLines.ToArray() }.SelectMany(t => t).ToList(); lines.ShouldAllBeEquivalentTo(expectedLines.ToArray()); } } }
//[Fact] //Cannot recreate the file as something is hanging on to it. public void CreateFileLater() { var pulse = new Subject <Unit>(); using (var file = new TestFile()) { file.Delete(); FileSearchResult fileSearchResult = null; using (file.Info.WatchFile(pulse) .Search(str => str.Contains("9")) .Subscribe(x => fileSearchResult = x)) { fileSearchResult.Should().Be(FileSearchResult.None); file.Create(); pulse.Once(); fileSearchResult.Should().NotBe(FileSearchResult.None); } } }
public void EmptyTailedFiles() { var pulse = new Subject <Unit>(); var scheduler = new TestScheduler(); using (var files = new TestFileCollection()) { for (int i = 0; i < 10; i++) { files.Add(new TestFile()); } FileSearchResult fileSearchResult = null; var search = files.Select(t => t.Info.WatchFile(pulse)) .Merge() .Search(str => str.Contains("9"), scheduler); using (search.Subscribe(x => fileSearchResult = x)) { scheduler.AdvanceByMilliSeconds(250); pulse.Once(); var segments = 0; var segmentsCompleted = 0; var isSearchCompleted = true; var count = 0; while (fileSearchResult != null) { segments += fileSearchResult.Segments; segmentsCompleted += fileSearchResult.SegmentsCompleted; isSearchCompleted = isSearchCompleted && fileSearchResult.IsSearching; count += fileSearchResult.Count; fileSearchResult = fileSearchResult.Previous as FileSearchResult; } segments.Should().Be(10); segmentsCompleted.Should().Be(0); isSearchCompleted.Should().Be(false); count.Should().Be(0); } } }
public void WillContinuallyTailInTailedFilesWithTwoFileModified() { var pulse = new Subject <Unit>(); using (var files = new TestFileCollection()) { for (int i = 0; i < 10; i++) { files.Add(new TestFile()); files[i].Append(Enumerable.Range(1, 100).Select(j => $"{(i + 1)}. files {j} row").ToArray()); } FileSearchResult fileSearchResult = null; var search = files.Select(t => t.Info.WatchFile(pulse)) .Merge() .Search(str => str.Contains("files 9 row")); using (search.Subscribe(x => fileSearchResult = x)) { pulse.Once(); files[7].Append("8. files 9 row"); files[9].Append("10. files 9 row"); pulse.Once(); int matches = 0; var _fileSearchResult = fileSearchResult; while (_fileSearchResult?.Next != null) { _fileSearchResult = _fileSearchResult.Next as FileSearchResult; } while (_fileSearchResult != null) { matches += _fileSearchResult.Count; _fileSearchResult = _fileSearchResult.Previous as FileSearchResult; } matches.Should().Be(12); } } }
public void EmptyFile() { var pulse = new Subject <Unit>(); var scheduler = new TestScheduler(); using (var file = new TestFile()) { FileSearchResult fileSearchResult = null; using (file.Info .Search(str => str.Contains("9"), scheduler) .Subscribe(x => fileSearchResult = x)) { scheduler.AdvanceByMilliSeconds(250); pulse.Once(); fileSearchResult.Segments.Should().Be(1); fileSearchResult.SegmentsCompleted.Should().Be(0); fileSearchResult.IsSearching.Should().Be(false); fileSearchResult.Count.Should().Be(0); } } }
public void Search(string searchPathEntry, FileSearchInfo searchInfo, FileSearchResult result) { if (searchPathEntry == FileLocator.FirstSearchEntry || searchPathEntry == FileLocator.LastSearchEntry) return; if (searchInfo.SearchKind == FileSearchInfo.FileSearchKind.Source) return; // don't search for ngen images on the symbol server, we won't find them if (searchInfo.Path.EndsWith(".ni.dll", StringComparison.OrdinalIgnoreCase)) return; string fileName = Path.GetFileName(searchInfo.Path); string indexString = ComputeIndexString(searchInfo); SymStore store; if(searchPathEntry.StartsWith("srv*")) store = SymStore.FromPath(searchPathEntry); else store = SymStore.FromPath(@"srv**" + searchPathEntry); string filePath; if (store.TryGetFile(fileName, indexString, out filePath)) result.CreateEntry(filePath); }
private FileSearchResult handleFileSearch(UriHandlerData data) { var fn = default(string); var sm = false; var cv = false; var exp = false; var hashes = default(IEnumerable <SHA1Value>); foreach (var item in data.Queries) { switch (item.Key) { case "f_shash": hashes = item.Value.Split(",;".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).Select(SHA1Value.Parse); break; case "fs_from": fn = item.Value; break; case "fs_similar": sm = item.Value.QueryValueAsBoolean(); break; case "fs_covers": cv = item.Value.QueryValueAsBoolean(); break; case "fs_exp": exp = item.Value.QueryValueAsBoolean(); break; } } var otherdata = handleSearch(data); return(FileSearchResult.Search(otherdata.Keyword, otherdata.Category, hashes, fn, sm, cv, exp)); }
public void Search(string searchPathEntry, FileSearchInfo searchInfo, FileSearchResult result) { if (searchPathEntry == FileLocator.FirstSearchEntry || searchPathEntry == FileLocator.LastSearchEntry) { return; } if (searchInfo.SearchKind == FileSearchInfo.FileSearchKind.Source) { return; } // don't search for ngen images on the symbol server, we won't find them if (searchInfo.Path.EndsWith(".ni.dll", StringComparison.OrdinalIgnoreCase)) { return; } string fileName = Path.GetFileName(searchInfo.Path); string indexString = ComputeIndexString(searchInfo); SymStore store; if (searchPathEntry.StartsWith("srv*")) { store = SymStore.FromPath(searchPathEntry); } else { store = SymStore.FromPath(@"srv**" + searchPathEntry); } string filePath; if (store.TryGetFile(fileName, indexString, out filePath)) { result.CreateEntry(filePath); } }
public void NotExistingTailedFiles() { var pulse = new Subject <Unit>(); using (var files = new TestFileCollection()) { for (int i = 0; i < 10; i++) { files.Add(new TestFile()); } files.Dispose(); FileSearchResult fileSearchResult = null; var search = files.Select(t => t.Info.WatchFile(pulse)) .Merge() .Search(str => str.Contains("9")); using (search.Subscribe(x => fileSearchResult = x)) { pulse.Once(); fileSearchResult.Should().BeNull(); } } }
public FixedSearchResult(FileSearchResult fileSearchResult) { FileNames = new HashSet <string>(fileSearchResult.FileNames); SyntaxErrors = fileSearchResult.SyntaxErrors; }
private void FileFound(FileSearchResult fr) { lvwResults.Items.Add(fr); }
private static bool FileTest(FileSearchResult fsr) { return(true); }
static void FileFound(FileSearchResult founddata) { Console.WriteLine("Found:" + founddata.FullPath); Console.WriteLine("Created:" + founddata.DateCreated.ToString()); }
public IAsyncOperationWithProgress <FileSearchResult, HttpProgress> SearchAsync(string keyword, Category category, StorageFile file, bool searchSimilar, bool onlyCovers, bool searchExpunged) { return(FileSearchResult.SearchAsync(keyword, category, file, searchSimilar, onlyCovers, searchExpunged)); }
public IAsyncOperationWithProgress <FileSearchResult, HttpProgress> SearchAsync(StorageFile file, bool searchSimilar, bool onlyCovers, bool searchExpunged) { return(FileSearchResult.SearchAsync(null, default, file, searchSimilar, onlyCovers, searchExpunged));
public FileSearchResult Search(string keyword, Category category, IEnumerable <SHA1Value> fileHashes, string fileName, bool onlyCovers, bool searchExpunged) => FileSearchResult.Search(keyword, category, fileHashes, fileName, false, onlyCovers, searchExpunged);