Example usage for org.apache.cassandra.io.compress SnappyCompressor instance

List of usage examples for org.apache.cassandra.io.compress SnappyCompressor instance

Introduction

In this page you can find the example usage for org.apache.cassandra.io.compress SnappyCompressor instance.

Prototype

SnappyCompressor instance

To view the source code for org.apache.cassandra.io.compress SnappyCompressor instance.

Click Source Link

Usage

From source file:com.fullcontact.cassandra.io.compress.CompressedRandomAccessReaderTest.java

License:Apache License

private void testResetAndTruncate(File f, boolean compressed, int junkSize) throws IOException {
    final String filename = f.getAbsolutePath();

    try {/*from  ww  w .j  a v  a  2 s. co  m*/
        SSTableMetadata.Collector sstableMetadataCollector = SSTableMetadata.createCollector()
                .replayPosition(null);
        SequentialWriter writer = compressed
                ? new CompressedSequentialWriter(f, filename + ".metadata", false,
                        new CompressionParameters(SnappyCompressor.instance), sstableMetadataCollector)
                : new SequentialWriter(f, CompressionParameters.DEFAULT_CHUNK_LENGTH, false);

        writer.write("The quick ".getBytes());
        FileMark mark = writer.mark();
        writer.write("blue fox jumps over the lazy dog".getBytes());

        // write enough to be sure to change chunk
        for (int i = 0; i < junkSize; ++i) {
            writer.write((byte) 1);
        }

        writer.resetAndTruncate(mark);
        writer.write("brown fox jumps over the lazy dog".getBytes());
        writer.close();

        assert f.exists();
        RandomAccessReader reader = compressed
                ? CompressedRandomAccessReader.open(new Path(filename),
                        new CompressionMetadata(filename + ".metadata", f.length(), fs), false, fs)
                : RandomAccessReader.open(new Path(f.getPath()), fs);
        String expected = "The quick brown fox jumps over the lazy dog";
        assertEquals(expected.length(), reader.length());
        byte[] b = new byte[expected.length()];
        reader.readFully(b);
        assert new String(b).equals(expected) : "Expecting '" + expected + "', got '" + new String(b) + "'";
    } finally {
        // cleanup
        if (f.exists())
            f.delete();
        File metadata = new File(filename + ".metadata");
        if (compressed && metadata.exists())
            metadata.delete();
    }
}

From source file:com.fullcontact.cassandra.io.compress.CompressedRandomAccessReaderTest.java

License:Apache License

@Test
public void testDataCorruptionDetection() throws IOException {
    String CONTENT = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam vitae.";

    File file = new File("testDataCorruptionDetection");
    file.deleteOnExit();//from  ww w.j  av a2  s.  c  o m

    File metadata = new File(file.getPath() + ".meta");
    metadata.deleteOnExit();

    SSTableMetadata.Collector sstableMetadataCollector = SSTableMetadata.createCollector().replayPosition(null);
    SequentialWriter writer = new CompressedSequentialWriter(file, metadata.getPath(), false,
            new CompressionParameters(SnappyCompressor.instance), sstableMetadataCollector);

    writer.write(CONTENT.getBytes());
    writer.close();

    // open compression metadata and get chunk information
    CompressionMetadata meta = new CompressionMetadata(metadata.getPath(), file.length(), fs);
    CompressionMetadata.Chunk chunk = meta.chunkFor(0);

    RandomAccessReader reader = CompressedRandomAccessReader.open(new Path(file.getPath()), meta, false, fs);
    // read and verify compressed data
    assertEquals(CONTENT, reader.readLine());
    // close reader
    reader.close();

    Random random = new Random();
    RandomAccessFile checksumModifier = null;

    try {
        checksumModifier = new RandomAccessFile(file, "rw");
        byte[] checksum = new byte[4];

        // seek to the end of the compressed chunk
        checksumModifier.seek(chunk.length);
        // read checksum bytes
        checksumModifier.read(checksum);
        // seek back to the chunk end
        checksumModifier.seek(chunk.length);

        // lets modify one byte of the checksum on each iteration
        for (int i = 0; i < checksum.length; i++) {
            checksumModifier.write(random.nextInt());
            checksumModifier.getFD().sync(); // making sure that change was synced with disk

            final RandomAccessReader r = CompressedRandomAccessReader.open(new Path(file.getPath()), meta,
                    false, fs);

            Throwable exception = null;
            try {
                r.readLine();
            } catch (Throwable t) {
                exception = t;
            }
            assertNotNull(exception);
            assertEquals(exception.getClass(), CorruptSSTableException.class);
            assertEquals(exception.getCause().getClass(), CorruptBlockException.class);

            r.close();
        }

        // lets write original checksum and check if we can read data
        updateChecksum(checksumModifier, chunk.length, checksum);

        reader = CompressedRandomAccessReader.open(new Path(file.getPath()), meta, false, fs);
        // read and verify compressed data
        assertEquals(CONTENT, reader.readLine());
        // close reader
        reader.close();
    } finally {
        if (checksumModifier != null)
            checksumModifier.close();
    }
}

From source file:me.tango.cassandra.bench.SchemaLoader.java

License:Apache License

private static void useCompression(List<KSMetaData> schema) {
    for (KSMetaData ksm : schema) {
        for (CFMetaData cfm : ksm.cfMetaData().values()) {
            cfm.compressionParameters(new CompressionParameters(SnappyCompressor.instance));
        }//  w  w w.j  a  v a2  s. com
    }
}