package io.teknek.nibiru.engine;
import io.teknek.nibiru.Keyspace;
import io.teknek.nibiru.engine.atom.ColumnValue;
import io.teknek.nibiru.metadata.StoreMetaData;
import io.teknek.nibiru.plugins.CompactionManager;
import io.teknek.nibiru.transport.Response;
import java.io.IOException;
import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
public class TestCompactionManager {
@Rule
public TemporaryFolder testFolder = new TemporaryFolder();
@Test
public void test() throws IOException{
Keyspace ks1 = MemtableTest.keyspaceWithNaturalPartitioner(testFolder);
ks1.createStore("abc", new Response().withProperty(StoreMetaData.IMPLEMENTING_CLASS, DefaultColumnFamily.class.getName()));
SsTable s = new SsTable(ks1.getStores().get("abc"));
{
AbstractMemtable m = new Memtable(ks1.getStores().get("abc"), new CommitLog(ks1.getStores().get("abc")));
m.put(ks1.getKeyspaceMetaData().getPartitioner().partition("row1"), "column2", "c", 1, 0L);
m.put(ks1.getKeyspaceMetaData().getPartitioner().partition("row1"), "column2", "d", 2, 0L);
m.put(ks1.getKeyspaceMetaData().getPartitioner().partition("row1"), "column3", "e", 2, 0L);
m.put(ks1.getKeyspaceMetaData().getPartitioner().partition("row2"), "column1", "e", 2, 0L);
SSTableWriter w = new SSTableWriter();
w.flushToDisk("1", ks1.getStores().get("abc"), m);
s.open("1", ks1.getConfiguration());
}
SsTable s2 = new SsTable(ks1.getStores().get("abc"));
{
AbstractMemtable m2 = new VersionedMemtable(ks1.getStores().get("abc"), new CommitLog(ks1.getStores().get("abc")));
m2.put(ks1.getKeyspaceMetaData().getPartitioner().partition("row1"), "column1", "c", 1, 0L);
m2.put(ks1.getKeyspaceMetaData().getPartitioner().partition("row2"), "column1", "f", 3, 0L);
SSTableWriter w2 = new SSTableWriter();
w2.flushToDisk("2", ks1.getStores().get("abc"), m2);
s2.open("2", ks1.getConfiguration());
}
CompactionManager.compact(new SsTable[] { s, s2 }, "3", null, null, false, null);
SsTable ss = new SsTable(ks1.getStores().get("abc"));
ss.open("3", ks1.getConfiguration());
Assert.assertEquals("e", ((ColumnValue) ss.get( ks1.getKeyspaceMetaData().getPartitioner().partition("row1"), "column3")).getValue());
}
}