List of usage examples for org.apache.lucene.store ByteArrayDataOutput reset
public void reset(byte[] bytes)
From source file:org.elasticsearch.index.translog.TranslogDeletionPolicyTests.java
License:Apache License
private Tuple<List<TranslogReader>, TranslogWriter> createReadersAndWriter(final long now) throws IOException { final Path tempDir = createTempDir(); Files.createFile(tempDir.resolve(Translog.CHECKPOINT_FILE_NAME)); TranslogWriter writer = null;//from w w w. j a v a2 s. com List<TranslogReader> readers = new ArrayList<>(); final int numberOfReaders = randomIntBetween(0, 10); final String translogUUID = UUIDs.randomBase64UUID(random()); for (long gen = 1; gen <= numberOfReaders + 1; gen++) { if (writer != null) { final TranslogReader reader = Mockito.spy(writer.closeIntoReader()); Mockito.doReturn(writer.getLastModifiedTime()).when(reader).getLastModifiedTime(); readers.add(reader); } writer = TranslogWriter.create(new ShardId("index", "uuid", 0), translogUUID, gen, tempDir.resolve(Translog.getFilename(gen)), FileChannel::open, TranslogConfig.DEFAULT_BUFFER_SIZE, () -> 1L, 1L, () -> 1L); writer = Mockito.spy(writer); Mockito.doReturn(now - (numberOfReaders - gen + 1) * 1000).when(writer).getLastModifiedTime(); byte[] bytes = new byte[4]; ByteArrayDataOutput out = new ByteArrayDataOutput(bytes); for (int ops = randomIntBetween(0, 20); ops > 0; ops--) { out.reset(bytes); out.writeInt(ops); writer.add(new BytesArray(bytes), ops); } } return new Tuple<>(readers, writer); }
From source file:org.elasticsearch.index.translog.TranslogTests.java
License:Apache License
public void testTranslogWriter() throws IOException { final TranslogWriter writer = translog.createWriter(0); final int numOps = randomIntBetween(10, 100); byte[] bytes = new byte[4]; ByteArrayDataOutput out = new ByteArrayDataOutput(bytes); for (int i = 0; i < numOps; i++) { out.reset(bytes); out.writeInt(i);/*from w w w. jav a 2 s . c o m*/ writer.add(new BytesArray(bytes)); } writer.sync(); final BaseTranslogReader reader = randomBoolean() ? writer : translog.openReader(writer.path(), Checkpoint.read(translog.location().resolve(Translog.CHECKPOINT_FILE_NAME))); for (int i = 0; i < numOps; i++) { ByteBuffer buffer = ByteBuffer.allocate(4); reader.readBytes(buffer, reader.getFirstOperationOffset() + 4 * i); buffer.flip(); final int value = buffer.getInt(); assertEquals(i, value); } out.reset(bytes); out.writeInt(2048); writer.add(new BytesArray(bytes)); if (reader instanceof TranslogReader) { ByteBuffer buffer = ByteBuffer.allocate(4); try { reader.readBytes(buffer, reader.getFirstOperationOffset() + 4 * numOps); fail("read past EOF?"); } catch (EOFException ex) { // expected } ((TranslogReader) reader).close(); } else { // live reader! ByteBuffer buffer = ByteBuffer.allocate(4); final long pos = reader.getFirstOperationOffset() + 4 * numOps; reader.readBytes(buffer, pos); buffer.flip(); final int value = buffer.getInt(); assertEquals(2048, value); } IOUtils.close(writer); }
From source file:org.elasticsearch.index.translog.TranslogTests.java
License:Apache License
public void testFailWriterWhileClosing() throws IOException { Path tempDir = createTempDir(); final FailSwitch fail = new FailSwitch(); fail.failNever();/* ww w. j av a 2 s . c o m*/ TranslogConfig config = getTranslogConfig(tempDir); try (Translog translog = getFailableTranslog(fail, config)) { final TranslogWriter writer = translog.createWriter(0); final int numOps = randomIntBetween(10, 100); byte[] bytes = new byte[4]; ByteArrayDataOutput out = new ByteArrayDataOutput(bytes); for (int i = 0; i < numOps; i++) { out.reset(bytes); out.writeInt(i); writer.add(new BytesArray(bytes)); } writer.sync(); try { fail.failAlways(); writer.closeIntoReader(); fail(); } catch (MockDirectoryWrapper.FakeIOException ex) { } try (TranslogReader reader = translog.openReader(writer.path(), Checkpoint.read(translog.location().resolve(Translog.CHECKPOINT_FILE_NAME)))) { for (int i = 0; i < numOps; i++) { ByteBuffer buffer = ByteBuffer.allocate(4); reader.readBytes(buffer, reader.getFirstOperationOffset() + 4 * i); buffer.flip(); final int value = buffer.getInt(); assertEquals(i, value); } } } }