public void DeltaHashProviderConstructor_Should_Apply_Capacity() { const int deltaCount = 9; BuildDeltasAndSetCacheExpectations(deltaCount); const int cacheCapacity = 3; var deltaHashProvider = new DeltaHashProvider(_deltaCache, Substitute.For <IDeltaIndexService>(), _logger, cacheCapacity); Enumerable.Range(1, deltaCount - 1).ToList().ForEach(i => { var updated = deltaHashProvider.TryUpdateLatestHash(GetHash(i - 1), GetHash(i)); updated.Should().BeTrue(); }); deltaHashProvider.GetLatestDeltaHash().Should().Be(GetHash(deltaCount - 1)); var evictedCount = deltaCount - cacheCapacity; var nonEvictedRange = Enumerable.Range(evictedCount, deltaCount - evictedCount); nonEvictedRange.ToList().ForEach(i => { deltaHashProvider.GetLatestDeltaHash(GetDateTimeForIndex(i)) .Should().Be(GetHash(i)); }); var evictedRange = Enumerable.Range(0, evictedCount); evictedRange.ToList().ForEach(i => { deltaHashProvider.GetLatestDeltaHash(GetDateTimeForIndex(i)) .Should().Be(default);
public void TryUpdateLatestHash_Should_Update_If_Hashes_Are_Valid() { const int deltaCount = 2; BuildDeltasAndSetCacheExpectations(deltaCount); var hashProvider = new DeltaHashProvider(_deltaCache, Substitute.For <IDeltaIndexService>(), _logger, 3); var updated = hashProvider.TryUpdateLatestHash(GetHash(0), GetHash(1)); updated.Should().BeTrue(); hashProvider.GetLatestDeltaHash() .Should().Be(GetHash(1)); }
public void TryUpdateLatestHash_Should_Push_New_Hash_On_Stream_When_Updating_Latest() { const int deltaCount = 2; BuildDeltasAndSetCacheExpectations(deltaCount); var observer = Substitute.For <IObserver <Cid> >(); var hashProvider = new DeltaHashProvider(_deltaCache, Substitute.For <IDeltaIndexService>(), _logger, 3); using (hashProvider.DeltaHashUpdates.Subscribe(observer)) { hashProvider.TryUpdateLatestHash(GetHash(0), GetHash(1)); observer.Received(1).OnNext(Arg.Is(GetHash(1))); } }
public void CheckDeltaHash() { DeltaHashProvider hash = new DeltaHashProvider(DeltaRunnerFactory.CreateDeltaRunner(null, null)); hash.AddDeltaHash("1", "hash001"); hash.AddDeltaHash("2", "hash002"); hash.AddDeltaHash("3", "hash003"); hash.AddDeltaHash("4", "hash004"); hash.AddDeltaHash("5", "hash005"); Assert.AreEqual(true, hash.CheckDeltaHash("1", "hash001")); Assert.AreEqual(true, hash.CheckDeltaHash("2", "hash002")); Assert.AreEqual(true, hash.CheckDeltaHash("3", "hash003")); Assert.AreEqual(true, hash.CheckDeltaHash("4", "hash004")); Assert.AreEqual(true, hash.CheckDeltaHash("5", "hash005")); }
public void TryUpdateLatestHash_Should_Put_New_Hash_At_The_Top_Of_The_List() { const int deltaCount = 3; BuildDeltasAndSetCacheExpectations(deltaCount); var hashProvider = new DeltaHashProvider(_deltaCache, Substitute.For <IDeltaIndexService>(), _logger, 4); var updated = hashProvider.TryUpdateLatestHash(GetHash(0), GetHash(1)); updated.Should().BeTrue(); updated = hashProvider.TryUpdateLatestHash(GetHash(1), GetHash(2)); updated.Should().BeTrue(); hashProvider.GetLatestDeltaHash() .Should().Be(GetHash(2)); }
public void EnsureHashDoesntIncludeBadChars() { DeltaHashProvider hashProvider = new DeltaHashProvider(DeltaRunnerFactory.CreateDeltaRunner(null, null)); FileInfo[] files = new FileInfo[100]; for (int i = 0; i < files.Length; i++) { FileInfo tempFile = new FileInfo(Path.Combine(Path.GetTempPath(), string.Format("00{0}.sql", i))); using(StreamWriter sw = new StreamWriter(tempFile.OpenWrite())) { sw.WriteLine("test test {0}", i); sw.Close(); string hash = DeltaHashProvider.GetMD5Hash(tempFile); string fileContents = hashProvider.GetFileContext(tempFile); Assert.AreEqual(-1, hash.IndexOf('\r'), string.Format("Contents: {0}", fileContents)); Assert.AreEqual(-1, hash.IndexOf('|'), string.Format("Contents: {0}", fileContents)); } } }
public void GetMD5Hash_CheckForMOdifications() { FileInfo tempFile001 = new FileInfo(Path.Combine(Path.GetTempPath(), "001.sql")); StreamWriter sw = new StreamWriter(tempFile001.OpenWrite()); sw.WriteLine("test test 111"); sw.Close(); FileInfo tempFile002 = new FileInfo(Path.Combine(Path.GetTempPath(), "002.sql")); StreamWriter sw2 = new StreamWriter(tempFile002.OpenWrite()); sw2.WriteLine("test test 222"); sw2.Close(); DeltaHashProvider hashProvider = new DeltaHashProvider(DeltaRunnerFactory.CreateDeltaRunner(null, null)); hashProvider.AddDeltaHash(tempFile001.Name, DeltaHashProvider.GetMD5Hash(tempFile001)); hashProvider.AddDeltaHash(tempFile002.Name, DeltaHashProvider.GetMD5Hash(tempFile002)); Assert.AreEqual(null, hashProvider.CheckForModifications(new FileInfo[]{tempFile001, tempFile002})); }
public void GetMD5Hash_CheckForMOdifications_WithModificationsToSecondFile() { FileInfo tempFile001 = new FileInfo(Path.Combine(Path.GetTempPath(), "001.sql")); using(StreamWriter sw = new StreamWriter(tempFile001.OpenWrite())) { sw.WriteLine("test test 111"); sw.Close(); } FileInfo tempFile002 = new FileInfo(Path.Combine(Path.GetTempPath(), "002.sql")); using(StreamWriter sw2 = new StreamWriter(tempFile002.OpenWrite())) { sw2.WriteLine("test test 222"); sw2.Close(); } DeltaHashProvider hashProvider = new DeltaHashProvider(DeltaRunnerFactory.CreateDeltaRunner(null, null)); hashProvider.AddDeltaHash(tempFile001.Name, DeltaHashProvider.GetMD5Hash(tempFile001)); hashProvider.AddDeltaHash(tempFile002.Name, DeltaHashProvider.GetMD5Hash(tempFile002)); using(StreamWriter sw3 = new StreamWriter(tempFile002.Open(FileMode.OpenOrCreate, FileAccess.Write))) { sw3.WriteLine("test test changes to 222"); sw3.Close(); } Assert.AreEqual(tempFile002, hashProvider.CheckForModifications(new FileInfo[]{tempFile001, tempFile002})); }
public void GetMD5Hash_CheckForMOdifications_WithModificationsToRandomFile() { DeltaHashProvider hashProvider = new DeltaHashProvider(DeltaRunnerFactory.CreateDeltaRunner(null, null)); FileInfo[] files = new FileInfo[100]; Console.Out.WriteLine("Creating [{0}] Temp Deltas", files.Length); for (int i = 0; i < files.Length; i++) { FileInfo tempFile = new FileInfo(Path.Combine(Path.GetTempPath(), string.Format("00{0}.sql", i))); using(StreamWriter sw = new StreamWriter(tempFile.OpenWrite())) { sw.WriteLine("test test {0}", i); sw.Close(); hashProvider.AddDeltaHash(tempFile.Name, DeltaHashProvider.GetMD5Hash(tempFile)); files[i] = tempFile; } } Random r = new Random(DateTime.Now.Millisecond); int randomFileIndex = r.Next(1,files.Length-1); FileInfo randomTempFile = files[randomFileIndex]; Console.Out.WriteLine("Random Temp File = {0} : {1}", randomFileIndex, randomTempFile.FullName); using(StreamWriter sw2 = new StreamWriter(randomTempFile.Open(FileMode.OpenOrCreate, FileAccess.Write))) { Console.Out.WriteLine("Modifying Delta"); sw2.WriteLine("changes to this delta!!"); sw2.Close(); } Assert.AreEqual(randomTempFile, hashProvider.CheckForModifications(files)); }
public void GetMD5Hash_CheckForModifications_TimeTracker() { FileInfo[] files = new FileInfo[3]; DeltaHashProvider hashProvider = new DeltaHashProvider(DeltaRunnerFactory.CreateDeltaRunner(null, null)); int i = 0; foreach (FileInfo file in new DirectoryInfo("../../TestFiles/FullTest3_TimeTracker/").GetFiles()) { files[i++] = file; string hashCode = DeltaHashProvider.GetMD5Hash(file); Console.Out.WriteLine("hashCode = {0}", hashCode); hashProvider.AddDeltaHash(file.Name, hashCode); } Assert.AreEqual(null, hashProvider.CheckForModifications(files)); }