package mil.nga.giat.geowave.core.store.adapter.statistics;
import static org.junit.Assert.assertEquals;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.junit.Test;
import mil.nga.giat.geowave.core.index.ByteArrayId;
import mil.nga.giat.geowave.core.store.base.DataStoreEntryInfo;
import mil.nga.giat.geowave.core.store.base.DataStoreEntryInfo.FieldInfo;
public class RowHistogramFixedDataStaticticsTest
{
static final long base = 7l;
private ByteArrayId genId(
final long id ) {
return new ByteArrayId(
String.format(
"\12%5h",
base + id) + "20030f89");
}
@Test
public void testIngest() {
final RowRangeHistogramStatistics<Integer> stats = new RowRangeHistogramStatistics<Integer>(
new ByteArrayId(
"20030"),
new ByteArrayId(
"20030"),
1024);
for (long i = 0; i < 10000; i++) {
final List<ByteArrayId> ids = Arrays.asList(genId(i));
stats.entryIngested(
new DataStoreEntryInfo(
Long.toString(
i).getBytes(),
ids,
ids,
Collections.<FieldInfo<?>> emptyList()),
1);
}
System.out.println(stats.toString());
assertEquals(
1.0,
stats.cdf(genId(
10000).getBytes()),
0.00001);
assertEquals(
0.0,
stats.cdf(genId(
0).getBytes()),
0.00001);
assertEquals(
0.5,
stats.cdf(genId(
5000).getBytes()),
0.04);
final RowRangeHistogramStatistics<Integer> stats2 = new RowRangeHistogramStatistics<Integer>(
new ByteArrayId(
"20030"),
new ByteArrayId(
"20030"),
1024);
for (long j = 10000; j < 20000; j++) {
ByteArrayId id = genId(j);
stats2.entryIngested(
new DataStoreEntryInfo(
Long.toString(
j).getBytes(),
Arrays.asList(id),
Arrays.asList(id),
Collections.<FieldInfo<?>> emptyList()),
1);
}
assertEquals(
0.0,
stats2.cdf(genId(
10000).getBytes()),
0.00001);
stats.merge(stats2);
assertEquals(
0.5,
stats.cdf(genId(
10000).getBytes()),
0.15);
stats2.fromBinary(stats.toBinary());
assertEquals(
0.5,
stats.cdf(genId(
10000).getBytes()),
0.15);
System.out.println(stats.toString());
}
}