package mil.nga.giat.geowave.examples.ingest; import java.util.Set; import java.util.TreeSet; import mil.nga.giat.geowave.core.geotime.GeometryUtils; import mil.nga.giat.geowave.core.store.CloseableIterator; import mil.nga.giat.geowave.core.store.DataStore; import mil.nga.giat.geowave.core.store.query.BasicQuery; import mil.nga.giat.geowave.core.store.query.QueryOptions; import mil.nga.giat.geowave.datastore.accumulo.AccumuloDataStore; import mil.nga.giat.geowave.datastore.accumulo.AccumuloOperations; import mil.nga.giat.geowave.datastore.accumulo.BasicAccumuloOperations; import mil.nga.giat.geowave.datastore.accumulo.index.secondary.AccumuloSecondaryIndexDataStore; import mil.nga.giat.geowave.datastore.accumulo.metadata.AccumuloAdapterIndexMappingStore; import mil.nga.giat.geowave.datastore.accumulo.metadata.AccumuloAdapterStore; import mil.nga.giat.geowave.datastore.accumulo.metadata.AccumuloDataStatisticsStore; import mil.nga.giat.geowave.datastore.accumulo.metadata.AccumuloIndexStore; import mil.nga.giat.geowave.datastore.accumulo.operations.config.AccumuloOptions; import org.apache.accumulo.core.client.AccumuloException; import org.apache.accumulo.core.client.AccumuloSecurityException; import org.apache.accumulo.core.client.Connector; import org.apache.accumulo.core.client.mock.MockInstance; import org.apache.accumulo.core.client.security.tokens.PasswordToken; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.junit.Assert; import org.junit.Before; import org.opengis.feature.simple.SimpleFeature; import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.GeometryFactory; import com.vividsolutions.jts.geom.Point; public class SimpleIngestTest { private final static Logger LOGGER = LoggerFactory.getLogger(SimpleIngestTest.class); final AccumuloOptions accumuloOptions = new AccumuloOptions(); final GeometryFactory factory = new GeometryFactory(); final String AccumuloUser = "root"; final PasswordToken AccumuloPass = new PasswordToken( new byte[0]); AccumuloOperations accumuloOperations; AccumuloIndexStore indexStore; AccumuloAdapterStore adapterStore; AccumuloDataStatisticsStore statsStore; AccumuloDataStore mockDataStore; @Before public void setUp() { final MockInstance mockInstance = new MockInstance(); Connector mockConnector = null; try { mockConnector = mockInstance.getConnector( AccumuloUser, AccumuloPass); } catch (AccumuloException | AccumuloSecurityException e) { LOGGER.error( "Failed to create mock accumulo connection", e); } accumuloOperations = new BasicAccumuloOperations( mockConnector); indexStore = new AccumuloIndexStore( accumuloOperations); adapterStore = new AccumuloAdapterStore( accumuloOperations); statsStore = new AccumuloDataStatisticsStore( accumuloOperations); mockDataStore = new AccumuloDataStore( indexStore, adapterStore, statsStore, new AccumuloSecondaryIndexDataStore( accumuloOperations), new AccumuloAdapterIndexMappingStore( accumuloOperations), accumuloOperations, accumuloOptions); accumuloOptions.setCreateTable(true); accumuloOptions.setUseAltIndex(true); accumuloOptions.setPersistDataStatistics(true); } protected static Set<Point> getCalcedPointSet() { Set<Point> calcPoints = new TreeSet<Point>(); for (int longitude = -180; longitude <= 180; longitude += 5) { for (int latitude = -90; latitude <= 90; latitude += 5) { Point p = GeometryUtils.GEOMETRY_FACTORY.createPoint(new Coordinate( longitude, latitude)); calcPoints.add(p); } } return calcPoints; } protected static Set<Point> getStoredPointSet( DataStore ds ) { CloseableIterator itr = ds.query( new QueryOptions(), new BasicQuery( new BasicQuery.Constraints())); Set<Point> readPoints = new TreeSet<Point>(); while (itr.hasNext()) { Object n = itr.next(); if (n instanceof SimpleFeature) { SimpleFeature gridCell = (SimpleFeature) n; Point p = (Point) gridCell.getDefaultGeometry(); readPoints.add(p); } } return readPoints; } protected static void validate( DataStore ds ) { Set<Point> readPoints = getStoredPointSet(ds); Set<Point> calcPoints = getCalcedPointSet(); Assert.assertTrue(readPoints.equals(calcPoints)); } }