package io.teknek.nibiru; import java.io.IOException; import java.util.HashMap; import java.util.UUID; import io.teknek.nibiru.Server; import io.teknek.nibiru.engine.DefaultColumnFamily; import io.teknek.nibiru.engine.atom.AtomValue; import org.junit.Assert; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; import com.google.common.collect.Sets; import io.teknek.nibiru.engine.atom.*; public class ServerTest extends ServerShutdown{ @Rule public TemporaryFolder testFolder = new TemporaryFolder(); @Test public void aTest() throws IOException, InterruptedException{ Server s = TestUtil.aBasicServer(testFolder); registerServer(s); s.getKeyspaces().get(TestUtil.DATA_KEYSPACE).getStores().get(TestUtil.PETS_COLUMN_FAMILY).getStoreMetadata().setFlushNumberOfRowKeys(2); s.put(TestUtil.DATA_KEYSPACE, TestUtil.PETS_COLUMN_FAMILY, "jack", "name", "bunnyjack", 1); s.put(TestUtil.DATA_KEYSPACE, TestUtil.PETS_COLUMN_FAMILY, "jack", "age", "6", 1); AtomValue x = s.get(TestUtil.DATA_KEYSPACE, TestUtil.PETS_COLUMN_FAMILY, "jack", "age"); Assert.assertEquals("6", ((ColumnValue) x).getValue()); s.put(TestUtil.DATA_KEYSPACE, TestUtil.PETS_COLUMN_FAMILY, "ziggy", "name", "ziggyrabbit", 1); s.put(TestUtil.DATA_KEYSPACE, TestUtil.PETS_COLUMN_FAMILY, "ziggy", "age", "8", 1); s.put(TestUtil.DATA_KEYSPACE, TestUtil.PETS_COLUMN_FAMILY, "dotty", "age", "4", 1); Thread.sleep(2000); Assert.assertEquals(2, ((DefaultColumnFamily) s.getKeyspaces().get(TestUtil.DATA_KEYSPACE).getStores().get(TestUtil.PETS_COLUMN_FAMILY)) .getMemtableFlusher().getFlushCount()); x = s.get(TestUtil.DATA_KEYSPACE, TestUtil.PETS_COLUMN_FAMILY, "jack", "age"); Assert.assertEquals("6", ((ColumnValue) x).getValue()); Assert.assertEquals(Sets.newHashSet(MetaDataManager.SYSTEM_KEYSPACE, TestUtil.DATA_KEYSPACE), s.getMetaDataManager().listKeyspaces()); Assert.assertEquals(Sets.newHashSet(TestUtil.PETS_COLUMN_FAMILY, TestUtil.BOOKS_KEY_VALUE), s.getMetaDataManager().listStores(TestUtil.DATA_KEYSPACE)); } @Test public void serverIdTest() { UUID u1, u2; Configuration c ; { Server s = TestUtil.aBasicServer(testFolder, 9006); c = s.getConfiguration(); u1 = s.getServerId().getU(); s.shutdown(); } { Server j = TestUtil.theSameBasicServer(c); u2 = j.getServerId().getU(); j.shutdown(); } Assert.assertEquals(u1, u2); } @Test public void commitLogTests() throws IOException, InterruptedException{ Configuration configuration = TestUtil.aBasicConfiguration(testFolder); Server s = new Server(configuration); s.init(); s.getMetaDataManager().createOrUpdateKeyspace(TestUtil.DATA_KEYSPACE, new HashMap<String,Object>()); s.getMetaDataManager().createOrUpdateStore(TestUtil.DATA_KEYSPACE, TestUtil.PETS_COLUMN_FAMILY, TestUtil.STANDARD_COLUMN_FAMILY()); s.getKeyspaces().get(TestUtil.DATA_KEYSPACE).getStores().get(TestUtil.PETS_COLUMN_FAMILY).getStoreMetadata().setFlushNumberOfRowKeys(2); s.getKeyspaces().get(TestUtil.DATA_KEYSPACE).getStores().get(TestUtil.PETS_COLUMN_FAMILY).getStoreMetadata().setCommitlogFlushBytes(1); for (int i = 0; i < 3; i++) { s.put(TestUtil.DATA_KEYSPACE, TestUtil.PETS_COLUMN_FAMILY, i+"", "age", "4", 1); Thread.sleep(1); } { AtomValue y = s.get(TestUtil.DATA_KEYSPACE, TestUtil.PETS_COLUMN_FAMILY, "2", "age"); Assert.assertEquals("4", ((ColumnValue) y).getValue()); } Thread.sleep(1000); s.shutdown(); Thread.sleep(1000); { Server j = new Server(configuration); j.init(); Assert.assertNotNull(j.getKeyspaces().get(TestUtil.DATA_KEYSPACE) .getStores().get(TestUtil.PETS_COLUMN_FAMILY)); AtomValue y = j.get(TestUtil.DATA_KEYSPACE, TestUtil.PETS_COLUMN_FAMILY, "2", "age"); Assert.assertEquals("4", ((ColumnValue) y).getValue()); j.shutdown(); } } }