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="));
        }
Esempio n. 3
0
 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;
 }