package org.yamcs.parameterarchive; import static org.junit.Assert.*; import java.io.File; import java.nio.ByteBuffer; import org.junit.Ignore; import org.junit.Test; import org.rocksdb.ColumnFamilyDescriptor; import org.rocksdb.ColumnFamilyHandle; import org.rocksdb.ColumnFamilyOptions; import org.rocksdb.CompressionType; import org.rocksdb.FlushOptions; import org.rocksdb.Options; import org.rocksdb.RocksDB; import org.yamcs.utils.FileUtils; public class TestCompression { @Ignore @Test public void test() throws Exception { String path = "/tmp/testcompression"; FileUtils.deleteRecursively(new File(path).toPath()); Options options = new Options(); options.setCreateIfMissing(true); //options.setCompressionType(CompressionType.SNAPPY_COMPRESSION); options.setCompressionType(CompressionType.SNAPPY_COMPRESSION); ColumnFamilyOptions cfo = new ColumnFamilyOptions(); cfo.setCompressionType(CompressionType.SNAPPY_COMPRESSION); // RocksDB rdb = RocksDB.open(options, path); int numparam = 1; int pphour = 3600; int nhours = 10000; // WriteOptions wo = new WriteOptions(); // wo.setSync(false); for(int j=0; j<numparam; j++) { String s = "parameter_"+j; ColumnFamilyDescriptor cfd = new ColumnFamilyDescriptor(s.getBytes(), cfo); ColumnFamilyHandle cfh = rdb.createColumnFamily(cfd); for(int i=0;i<nhours;i++) { byte[] key = new byte[8]; ByteBuffer.wrap(key).putLong(i*1000L); byte[] value = getIncreasingIntValue(pphour); rdb.put(cfh,key, value); } } FlushOptions flushOptions = new FlushOptions(); rdb.flush(flushOptions); System.out.println("stats: "+rdb.getProperty("rocksdb.stats")); rdb.close(); } byte[] getIncreasingIntValue(int n) { int keySize = 2+4; byte[] v = new byte[n*keySize]; int m = 100000; ByteBuffer bb = ByteBuffer.wrap(v); for(int i=0;i<n; i++) { // bb.putShort(2*i, (short)0); bb.putShort(2*i, (short)i); } for(int i=0;i<n; i++) { //bb.putInt(2*n+4*i, m+i); bb.putInt(2*n+4*i, m); } return v; } }