public void TestNumericKeyWithPartitioning(string directory) { int key1 = 123; int key2 = 1123; var basePath = FileSystemPath.Root.AppendDirectory(directory); var options = new FilesystemStorageOptions() { BasePath = basePath, EntitiesPerDirectory = 1000 }; var expected1 = basePath.AppendDirectory("0") .AppendDirectory(key1.ToString()) .AppendFile(EntityFilename); var actual1 = FilesystemLocator.LocateEntityFile(key1, options); Assert.Equal(expected1, actual1); var expected2 = basePath.AppendDirectory("1") .AppendDirectory(key2.ToString()) .AppendFile(EntityFilename); var actual2 = FilesystemLocator.LocateEntityFile(key2, options); Assert.Equal(expected2, actual2); }
public void Drop(TKey entityKey) { var folder = FilesystemLocator.FindSnapshotFolder(entityKey, options); var entities = fileSystem.GetEntitiesRecursive(folder).ToList(); foreach (var entity in entities) { fileSystem.Delete(entity); } }
private IOrderedEnumerable <FileSystemPath> GetExistingFiles(TKey key) { var folder = FilesystemLocator.FindSnapshotFolder(key, options); if (!fileSystem.Exists(folder)) { fileSystem.CreateDirectoryRecursive(folder); } return(fileSystem.GetEntities(folder) .Where(path => path.IsFile) .Where(path => fileSystem.Exists(path)) .OrderBy(x => TimeFromFilename(x))); }
public void TestKeyfileLocation(string directory) { int key = 123; var basePath = FileSystemPath.Root.AppendDirectory(directory); var options = new FilesystemStorageOptions() { BasePath = basePath, EntitiesPerDirectory = 0 }; var expected = basePath.AppendDirectory(key.ToString()).AppendFile(KeyFilename); var actual = FilesystemLocator.LocateKeyFile(key, options); Assert.Equal(expected, actual); }
private Stream CreateNewFile(TKey key, long time, int requiredEmptyBytes) { var fileName = ToFilename(time, zeroPaddingStep); var filePath = FilesystemLocator.FindSnapshotFolder(key, options) .AppendFile(fileName); using (var fileStream = fileSystem.CreateFile(filePath)) { var data = new byte[zeroPaddingStep]; data[zeroPaddingStep - 1] = 255; fileStream.Write(data, 0, zeroPaddingStep); } var stream = fileSystem.OpenFile(filePath, FileAccess.ReadWrite); return(SeekOrReopen(stream, filePath, zeroPaddingStep - 1, requiredEmptyBytes)); }
public void TestNonPartitionableKey(string directory, int entitiesPerDir) { var key = "Hello World"; var basePath = FileSystemPath.Root.AppendDirectory(directory); var options = new FilesystemStorageOptions() { BasePath = basePath, EntitiesPerDirectory = entitiesPerDir }; var expected = basePath.AppendDirectory(key.GetHashCode().ToString()) .AppendFile(EntityFilename); var actual = FilesystemLocator.LocateEntityFile(key, options); Assert.Equal(expected, actual); }