### Question:
PositioningStore seable { { public T read(long position) throws IOException { checkReadPosition(position); try { return tryRead(position); } catch (Throwable t) { logger.warn("Exception on read position {} of store {}.", position, base.getAbsolutePath(), t); throw t; } } PositioningStore(File base, Config config, PreloadBufferPool bufferPool, LogSerializer<T> serializer); long left(); long right(); long flushPosition(); void clear(long position); void setRight(long position); void recover(); long toLogStart(long position); long appendByteBuffer(ByteBuffer byteBuffer); long append(T t); long append(final List<T> ts); boolean flush(); boolean isDiskFull(); T read(long position); T read(long position, int length); List<T> batchRead(long position, int count); ByteBuffer readByteBuffer(long position, int length); long physicalSize(); long physicalDeleteTo(long position); boolean isClean(); long physicalDeleteLeftFile(); long position(long position, int offsetCount); File base(); @Override void close(); byte[] readBytes(long position, int length); int fileCount(); int meetMinStoreFile(long minIndexedPhysicalPosition);  }### Answer:
@Test public void readPerformanceTest() throws IOException, InterruptedException, TimeoutException { long maxSize = 1L * 1024 * 1024 * 1024; int logSize = 1024; PreloadBufferPool bufferPool = PreloadBufferPool.getInstance(); try (PositioningStore<ByteBuffer> store = prepareStore(bufferPool)) { ByteBuffer buffer = MessageTestUtils.createMessage(new byte[logSize]); final int msgSize = buffer.remaining(); long writeSize = write(store, maxSize, buffer); read(store, msgSize, writeSize); } }