Example usage for org.apache.lucene.store ByteArrayDataOutput reset

List of usage examples for org.apache.lucene.store ByteArrayDataOutput reset

Introduction

In this page you can find the example usage for org.apache.lucene.store ByteArrayDataOutput reset.

Prototype

public void reset(byte[] bytes) 

Source Link

Usage

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);
            }
        }

    }

}