package mil.nga.giat.geowave.core.store.memory;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import mil.nga.giat.geowave.core.index.ByteArrayId;
import mil.nga.giat.geowave.core.store.EntryVisibilityHandler;
import mil.nga.giat.geowave.core.store.adapter.AbstractDataAdapter;
import mil.nga.giat.geowave.core.store.adapter.MockComponents;
import mil.nga.giat.geowave.core.store.adapter.NativeFieldHandler.RowBuilder;
import mil.nga.giat.geowave.core.store.adapter.statistics.DataStatistics;
import mil.nga.giat.geowave.core.store.adapter.statistics.StatisticsProvider;
import mil.nga.giat.geowave.core.store.base.DataStoreEntryInfo;
import mil.nga.giat.geowave.core.store.callback.IngestCallback;
import mil.nga.giat.geowave.core.store.data.VisibilityWriter;
import mil.nga.giat.geowave.core.store.data.field.FieldReader;
import mil.nga.giat.geowave.core.store.data.field.FieldVisibilityHandler;
import mil.nga.giat.geowave.core.store.data.field.FieldWriter;
import mil.nga.giat.geowave.core.store.data.visibility.GlobalVisibilityHandler;
import mil.nga.giat.geowave.core.store.index.CommonIndexModel;
import mil.nga.giat.geowave.core.store.index.PrimaryIndex;
import mil.nga.giat.geowave.core.store.memory.MemoryEntryRow;
import mil.nga.giat.geowave.core.store.memory.MemoryStoreUtils;
import mil.nga.giat.geowave.core.store.util.DataStoreUtils;
import mil.nga.giat.geowave.core.store.memory.MemoryDataStore;
import org.junit.Test;
public class MemoryStoreUtilsTest
{
@Test
public void testEntryToRows() {
final AtomicInteger count = new AtomicInteger(
0);
final List<MemoryEntryRow> entryRows = MemoryStoreUtils.entryToRows(
new MockComponents.MockAbstractDataAdapter(),
new PrimaryIndex(
new MockComponents.MockIndexStrategy(),
new MockComponents.TestIndexModel()),
new Integer(
25),
new IngestCallback<Integer>() {
@Override
public void entryIngested(
final DataStoreEntryInfo entryInfo,
final Integer entry ) {
count.incrementAndGet();
}
},
new VisibilityWriter<Integer>() {
@Override
public FieldVisibilityHandler<Integer, Object> getFieldVisibilityHandler(
final ByteArrayId fieldId ) {
return new GlobalVisibilityHandler(
"aaa&bbb");
}
});
assertTrue(entryRows.size() == 1);
assertTrue(count.get() == 1);
}
@Test
public void testVisibility() {
assertTrue(MemoryStoreUtils.isAuthorized(
"aaa&ccc".getBytes(),
new String[] {
"aaa",
"bbb",
"ccc"
}));
assertFalse(MemoryStoreUtils.isAuthorized(
"aaa&ccc".getBytes(),
new String[] {
"aaa",
"bbb"
}));
assertTrue(MemoryStoreUtils.isAuthorized(
"aaa&(ccc|eee)".getBytes(),
new String[] {
"aaa",
"eee",
"xxx"
}));
assertTrue(MemoryStoreUtils.isAuthorized(
"aaa|(ccc&eee)".getBytes(),
new String[] {
"bbb",
"eee",
"ccc"
}));
assertFalse(MemoryStoreUtils.isAuthorized(
"aaa|(ccc&eee)".getBytes(),
new String[] {
"bbb",
"dddd",
"ccc"
}));
assertTrue(MemoryStoreUtils.isAuthorized(
"aaa|(ccc&eee)".getBytes(),
new String[] {
"aaa",
"dddd",
"ccc"
}));
assertTrue(MemoryStoreUtils.isAuthorized(
"aaa".getBytes(),
new String[] {
"aaa",
"dddd",
"ccc"
}));
assertFalse(MemoryStoreUtils.isAuthorized(
"xxx".getBytes(),
new String[] {
"aaa",
"dddd",
"ccc"
}));
}
protected static class TestStringAdapter extends
AbstractDataAdapter<String> implements
StatisticsProvider<String>
{
public TestStringAdapter() {}
@Override
public ByteArrayId getAdapterId() {
return new ByteArrayId(
"123");
}
@Override
public boolean isSupported(
final String entry ) {
return true;
}
@Override
public ByteArrayId getDataId(
final String entry ) {
return new ByteArrayId(
entry.getBytes());
}
@Override
public FieldReader<Object> getReader(
final ByteArrayId fieldId ) {
return null;
}
@Override
public FieldWriter<String, Object> getWriter(
final ByteArrayId fieldId ) {
return null;
}
@Override
public ByteArrayId[] getSupportedStatisticsTypes() {
return null;
}
@Override
public DataStatistics<String> createDataStatistics(
final ByteArrayId statisticsId ) {
return null;
}
@Override
public EntryVisibilityHandler<String> getVisibilityHandler(
final ByteArrayId statisticsId ) {
return null;
}
@Override
protected RowBuilder<String, Object> newBuilder() {
return null;
}
@Override
public int getPositionOfOrderedField(
final CommonIndexModel model,
final ByteArrayId fieldId ) {
return -1;
}
@Override
public ByteArrayId getFieldIdForPosition(
final CommonIndexModel model,
final int position ) {
return null;
}
}
}