public async Task <Guid> Read() { Guid guid = Guid.Empty; foreach (var i in Enumerable.Range(0, accessPattern[0].Length)) { var b = accessPattern[0][i]; var p = accessPattern[1][i]; var request = IORequest.CreateReadRequest(new Address(AddressScope.Page, (ushort)b, (ushort)p)); var result = await scheduler.ScheduleFileSystemRequest(request).ConfigureAwait(false); guid = result.Id; ArrayPool <byte> .Shared.Return(result.Payload); } return(guid); }
public async Task AddAndWaitForResult() { using DefaultScheduler fileSystemScheduler = new DefaultScheduler(new MemoryFileSystemService(new DatatentSettings(), Constants.BLOCK_SIZE_INCL_HEADER * 2, new NullLogger <FileSystemServiceBase>())); var bytes = new byte[Constants.PAGE_SIZE_INCL_HEADER]; UnitTestHelper.FillArray(ref bytes, 0x01); var address = new Address(AddressScope.Page, 1, 1); IORequest writeRequest = new IORequest(IORequestDirection.Write, address, bytes); var writeResponse = await fileSystemScheduler.ScheduleFileSystemRequest(writeRequest).ConfigureAwait(false); writeResponse.Id.Should().Be(writeRequest.Id); IORequest readRequest = IORequest.CreateReadRequest(address); var readResponse = await fileSystemScheduler.ScheduleFileSystemRequest(readRequest).ConfigureAwait(false); readResponse.Address.FullAddress.Should().Be(address.FullAddress); readResponse.Payload.Take(bytes.Length).Should().BeEquivalentTo(bytes); }