public void reading_off_same_instance_gives_most_up_to_date_info() { var checkSum = new MemoryMappedFileCheckpoint(Filename); checkSum.Write(0xDEAD); checkSum.Flush(); var read = checkSum.Read(); checkSum.Close(); Assert.AreEqual(0xDEAD, read); }
public void the_new_value_is_not_accessible_if_not_flushed_even_with_delay() { var checkSum = new MemoryMappedFileCheckpoint(Filename); var readChecksum = new MemoryMappedFileCheckpoint(Filename); checkSum.Write(1011); Thread.Sleep(200); Assert.AreEqual(0, readChecksum.Read()); checkSum.Close(); readChecksum.Close(); }
public void can_read_existing_checksum() { var checksum = new MemoryMappedFileCheckpoint(Filename); checksum.Write(0xDEAD); checksum.Close(); checksum = new MemoryMappedFileCheckpoint(Filename); var val = checksum.Read(); checksum.Close(); Assert.AreEqual(0xDEAD, val); }
public void the_new_value_is_accessible_after_flush() { var checkSum = new MemoryMappedFileCheckpoint(Filename); var readChecksum = new MemoryMappedFileCheckpoint(Filename); checkSum.Write(1011); checkSum.Flush(); Assert.AreEqual(1011, readChecksum.Read()); checkSum.Close(); readChecksum.Close(); Thread.Sleep(100); }
private static TFChunkDbConfig CreateDbConfig(int chunkSize, string dbPath, long chunksCacheSize, bool inMemDb) { ICheckpoint writerChk; ICheckpoint chaserChk; ICheckpoint epochChk; ICheckpoint truncateChk; if (inMemDb) { writerChk = new InMemoryCheckpoint(Checkpoint.Writer); chaserChk = new InMemoryCheckpoint(Checkpoint.Chaser); epochChk = new InMemoryCheckpoint(Checkpoint.Epoch, initValue: -1); truncateChk = new InMemoryCheckpoint(Checkpoint.Truncate, initValue: -1); } else { var writerCheckFilename = Path.Combine(dbPath, Checkpoint.Writer + ".chk"); var chaserCheckFilename = Path.Combine(dbPath, Checkpoint.Chaser + ".chk"); var epochCheckFilename = Path.Combine(dbPath, Checkpoint.Epoch + ".chk"); var truncateCheckFilename = Path.Combine(dbPath, Checkpoint.Truncate + ".chk"); if (Runtime.IsMono) { writerChk = new FileCheckpoint(writerCheckFilename, Checkpoint.Writer, cached: true); chaserChk = new FileCheckpoint(chaserCheckFilename, Checkpoint.Chaser, cached: true); epochChk = new FileCheckpoint(epochCheckFilename, Checkpoint.Epoch, cached: true, initValue: -1); truncateChk = new FileCheckpoint(truncateCheckFilename, Checkpoint.Truncate, cached: true, initValue: -1); } else { writerChk = new MemoryMappedFileCheckpoint(writerCheckFilename, Checkpoint.Writer, cached: true); chaserChk = new MemoryMappedFileCheckpoint(chaserCheckFilename, Checkpoint.Chaser, cached: true); epochChk = new MemoryMappedFileCheckpoint(epochCheckFilename, Checkpoint.Epoch, cached: true, initValue: -1); truncateChk = new MemoryMappedFileCheckpoint(truncateCheckFilename, Checkpoint.Truncate, cached: true, initValue: -1); } } var nodeConfig = new TFChunkDbConfig(dbPath, new VersionedPatternFileNamingStrategy(dbPath, "chunk-"), chunkSize, chunksCacheSize, writerChk, chaserChk, epochChk, truncateChk, inMemDb); return nodeConfig; }
public void name_is_set() { var checksum = new MemoryMappedFileCheckpoint(Filename, "test", false); Assert.AreEqual("test", checksum.Name); checksum.Close(); }
private static TFChunkDbConfig CreateDbConfig(int chunkSize, int cachedChunks, string dbPath, long chunksCacheSize, bool inMemDb, ILogger log) { ICheckpoint writerChk; ICheckpoint chaserChk; ICheckpoint epochChk; ICheckpoint truncateChk; if (inMemDb) { writerChk = new InMemoryCheckpoint(Checkpoint.Writer); chaserChk = new InMemoryCheckpoint(Checkpoint.Chaser); epochChk = new InMemoryCheckpoint(Checkpoint.Epoch, initValue: -1); truncateChk = new InMemoryCheckpoint(Checkpoint.Truncate, initValue: -1); } else { try { if (!Directory.Exists(dbPath)) // mono crashes without this check Directory.CreateDirectory(dbPath); } catch (UnauthorizedAccessException) { if (dbPath == Locations.DefaultDataDirectory) { log.Info("Access to path {0} denied. The Event Store database will be created in {1}", dbPath, Locations.FallbackDefaultDataDirectory); dbPath = Locations.FallbackDefaultDataDirectory; log.Info("Defaulting DB Path to {0}", dbPath); if (!Directory.Exists(dbPath)) // mono crashes without this check Directory.CreateDirectory(dbPath); } else { throw; } } var writerCheckFilename = Path.Combine(dbPath, Checkpoint.Writer + ".chk"); var chaserCheckFilename = Path.Combine(dbPath, Checkpoint.Chaser + ".chk"); var epochCheckFilename = Path.Combine(dbPath, Checkpoint.Epoch + ".chk"); var truncateCheckFilename = Path.Combine(dbPath, Checkpoint.Truncate + ".chk"); if (Runtime.IsMono) { writerChk = new FileCheckpoint(writerCheckFilename, Checkpoint.Writer, cached: true); chaserChk = new FileCheckpoint(chaserCheckFilename, Checkpoint.Chaser, cached: true); epochChk = new FileCheckpoint(epochCheckFilename, Checkpoint.Epoch, cached: true, initValue: -1); truncateChk = new FileCheckpoint(truncateCheckFilename, Checkpoint.Truncate, cached: true, initValue: -1); } else { writerChk = new MemoryMappedFileCheckpoint(writerCheckFilename, Checkpoint.Writer, cached: true); chaserChk = new MemoryMappedFileCheckpoint(chaserCheckFilename, Checkpoint.Chaser, cached: true); epochChk = new MemoryMappedFileCheckpoint(epochCheckFilename, Checkpoint.Epoch, cached: true, initValue: -1); truncateChk = new MemoryMappedFileCheckpoint(truncateCheckFilename, Checkpoint.Truncate, cached: true, initValue: -1); } } var cache = cachedChunks >= 0 ? cachedChunks*(long)(TFConsts.ChunkSize + ChunkHeader.Size + ChunkFooter.Size) : chunksCacheSize; var nodeConfig = new TFChunkDbConfig(dbPath, new VersionedPatternFileNamingStrategy(dbPath, "chunk-"), chunkSize, cache, writerChk, chaserChk, epochChk, truncateChk, inMemDb); return nodeConfig; }
static TFChunkDb CreateTFChunkDb(string storagePath) { var dbPath = Path.Combine(storagePath, DateTime.Now.Ticks.ToString(CultureInfo.InvariantCulture)); if (!Directory.Exists(dbPath)) { Directory.CreateDirectory(dbPath); } var writerCheckFilename = Path.Combine(dbPath, Checkpoint.Writer + ".chk"); var chaserCheckFilename = Path.Combine(dbPath, Checkpoint.Chaser + ".chk"); var epochCheckFilename = Path.Combine(dbPath, Checkpoint.Epoch + ".chk"); var truncateCheckFilename = Path.Combine(dbPath, Checkpoint.Truncate + ".chk"); //Not mono friendly at this point. var writerChk = new MemoryMappedFileCheckpoint(writerCheckFilename, "writer", true); var chaserChk = new MemoryMappedFileCheckpoint(chaserCheckFilename, "chaser", true); var epochChk = new MemoryMappedFileCheckpoint(epochCheckFilename, Checkpoint.Epoch, cached: true, initValue: -1); var truncateChk = new MemoryMappedFileCheckpoint(truncateCheckFilename, Checkpoint.Truncate, cached: true, initValue: -1); const int cachedChunks = 100; return new TFChunkDb(new TFChunkDbConfig(dbPath, new VersionedPatternFileNamingStrategy(dbPath, "chunk-"), 0x10000000, cachedChunks*0x10000100L, writerChk, chaserChk, epochChk, truncateChk)); }