public void GeneratesFileSignatureFromNameModifyAndSize() { var descriptor = new FileDescriptor("myfile.txt"); descriptor.ModifyTime = new DateTime(2013, 12, 24, 0, 0, 0, DateTimeKind.Utc); descriptor.Size = 1024; var sut = new StatSignatureGenerator(new SHA1HashGenerator()); sut.UpdateFileSignature(descriptor); var b64Signature = Convert.ToBase64String(descriptor.StatHash); Assert.That(b64Signature, Is.EqualTo("bnx6xtNphTyaIB5Cz4Yw7X6nsVk=")); }
public void GeneratesFolderSignatureFromChildren() { var descriptor = new FileDescriptor("Folder") { IsFolder = true, Children = new[] { new FileDescriptor("MyFileA.txt") {StatHash = new byte[] {1, 2, 3}}, new FileDescriptor("MyFileB.txt") {StatHash = new byte[] {10, 20, 30}} } }; var sut = new StatSignatureGenerator(new SHA1HashGenerator()); sut.UpdateFolderSignature(descriptor); var b64Signature = Convert.ToBase64String(descriptor.StatHash); Assert.That(b64Signature, Is.EqualTo("+mspp0y7kWMAMkFZoR7anf2B5AU=")); }
private static FileDescriptor StatScanFolder(MemoryFileDatabase database, string baseFolder) { var volumeInfo = new VolumeInfo(baseFolder); Console.WriteLine($"Name = {volumeInfo.VolumeName}, Serial = {volumeInfo.SerialNumber}"); database.RootInfo = new RootInfo { RootPath = baseFolder, VolumeId = volumeInfo.SerialNumber, VolumeLabel = volumeInfo.VolumeName }; var progressTracker = new ConsoleProgressTracker(); var signatureGenerator = new StatSignatureGenerator(new SHA1HashGenerator()); var crawler = new FileCrawler(database, new SystemFileDescriptorProvider(), signatureGenerator, progressTracker); var scanTimer = Stopwatch.StartNew(); var rootDescriptor = crawler.ScanDirectory(baseFolder); scanTimer.Stop(); var descriptorCount = database.GetAllDescriptors().Count(); Console.WriteLine("Scanned {0} entries in {1}. {2} stat scans per second", descriptorCount, scanTimer.Elapsed, 1000*descriptorCount/scanTimer.ElapsedMilliseconds); return rootDescriptor; }