Example #1
0
        private static IStorageConnection CreateStorageConnection(byte[] storageBytes)
        {
            var logger = new LoggerConfiguration().CreateLogger();
            var storageStreamProvider = StorageStreamProviderMockFactory.Create(storageBytes);

            return(new StorageConnection(storageStreamProvider, 4096, logger));
        }
        public void Update_ShouldReturnUpdatedDescriptor(int bufferSize, int fileDescriptorLength)
        {
            // Arrange
            var buffer = new byte[bufferSize];
            var storageStreamProvider = StorageStreamProviderMockFactory.Create(buffer);
            var logger               = new LoggerConfiguration().CreateLogger();
            var storageConnection    = new StorageConnection(storageStreamProvider, 4096, logger);
            var filesystemSerializer = new FilesystemDescriptorSerializer(logger);

            var expectedDescriptor         = new FilesystemDescriptor(0, 0, fileDescriptorLength);
            var filesystemDescriptorBytes  = filesystemSerializer.ToBytes(expectedDescriptor);
            var filesystemDescriptorCursor = new Cursor(-FilesystemDescriptor.BytesTotal, SeekOrigin.End);

            storageConnection.PerformWrite(filesystemDescriptorCursor, filesystemDescriptorBytes);

            var filesystemDescriptorAccessor =
                new FilesystemDescriptorAccessor(storageConnection, filesystemSerializer, logger);

            // Act
            filesystemDescriptorAccessor.Update(_ => 0, _ => 0, _ => fileDescriptorLength);

            // Assert
            var returnedDescriptorBytes =
                storageConnection.PerformRead(filesystemDescriptorCursor, FilesystemDescriptor.BytesTotal);
            var returnedDescriptor = filesystemSerializer.FromBytes(returnedDescriptorBytes);

            Assert.Equal(expectedDescriptor, returnedDescriptor);
        }
        /// <summary>
        /// Adds FileFS data access layer dependencies with in memory stream provider.
        /// </summary>
        /// <param name="services"><see cref="IServiceCollection"/> instance.</param>
        /// <param name="storageBuffer">Storage buffer.</param>
        /// <returns>Configured <see cref="IServiceCollection"/> instance.</returns>
        public static IServiceCollection AddFileFsDataAccessInMemory(this IServiceCollection services, byte[] storageBuffer)
        {
            services.AddSingleton <IStorageStreamProvider>(provider =>
                                                           StorageStreamProviderMockFactory.Create(storageBuffer));

            services.InjectCommonServices();

            return(services);
        }