use of com.srotya.sidewinder.core.filters.SimpleTagFilter in project sidewinder by srotya.
the class TestMiscUtils method testBuildTagFilter.
@Test
public void testBuildTagFilter() throws InvalidFilterException {
TagFilter filter = MiscUtils.buildTagFilter("host=1&test=2|tree=1");
assertEquals(ComplexTagFilter.class, filter.getClass());
ComplexTagFilter complex = ((ComplexTagFilter) filter);
assertEquals(ComplexFilterType.OR, complex.getType());
assertEquals(2, complex.getFilters().size());
assertEquals(ComplexTagFilter.class, complex.getFilters().get(0).getClass());
assertEquals(SimpleTagFilter.class, complex.getFilters().get(1).getClass());
filter = MiscUtils.buildTagFilter("user>=1&test<1");
complex = ((ComplexTagFilter) filter);
assertEquals(ComplexFilterType.AND, complex.getType());
assertEquals(2, complex.getFilters().size());
SimpleTagFilter sfilter = ((SimpleTagFilter) complex.getFilters().get(0));
assertEquals("user", sfilter.getTagKey());
assertEquals("1", sfilter.getComparedValue());
assertEquals(FilterType.GREATER_THAN_EQUALS, sfilter.getFilterType());
sfilter = ((SimpleTagFilter) complex.getFilters().get(1));
assertEquals(FilterType.LESS_THAN, sfilter.getFilterType());
assertEquals("test", sfilter.getTagKey());
assertEquals("1", sfilter.getComparedValue());
filter = MiscUtils.buildTagFilter("user<=1|test>1");
complex = ((ComplexTagFilter) filter);
assertEquals(ComplexFilterType.OR, complex.getType());
assertEquals(2, complex.getFilters().size());
sfilter = ((SimpleTagFilter) complex.getFilters().get(0));
assertEquals("user", sfilter.getTagKey());
assertEquals("1", sfilter.getComparedValue());
assertEquals(FilterType.LESS_THAN_EQUALS, sfilter.getFilterType());
sfilter = ((SimpleTagFilter) complex.getFilters().get(1));
assertEquals(FilterType.GREATER_THAN, sfilter.getFilterType());
assertEquals("test", sfilter.getTagKey());
assertEquals("1", sfilter.getComparedValue());
}
use of com.srotya.sidewinder.core.filters.SimpleTagFilter in project sidewinder by srotya.
the class TestDiskStorageEngine method testAddAndReadDataPointsWithTagFilters.
@Test
public void testAddAndReadDataPointsWithTagFilters() throws Exception {
DiskStorageEngine engine = new DiskStorageEngine();
MiscUtils.delete(new File("target/db5/"));
HashMap<String, String> map = new HashMap<>();
map.put("metadata.dir", "target/db5/mdq");
map.put("index.dir", "target/db5/index");
map.put("data.dir", "target/db5/data");
map.put(StorageEngine.PERSISTENCE_DISK, "true");
engine.configure(map, bgTasks);
long curr = 1497720452566L;
String dbName = "test";
String measurementName = "cpu";
String valueFieldName = "value";
String tag = "host123123";
for (int i = 1; i <= 3; i++) {
engine.writeDataPoint(MiscUtils.buildDataPoint(dbName, measurementName, valueFieldName, Arrays.asList(tag + "=" + i, tag + "=" + (i + 1)), curr + i, 2 * i));
}
assertEquals(1, engine.getAllMeasurementsForDb(dbName).size());
SimpleTagFilter filter1 = new SimpleTagFilter(FilterType.EQUALS, "host123123", "1");
SimpleTagFilter filter2 = new SimpleTagFilter(FilterType.EQUALS, "host123123", "2");
List<Series> queryDataPoints = engine.queryDataPoints(dbName, measurementName, valueFieldName, curr, curr + 3, new ComplexTagFilter(ComplexFilterType.OR, Arrays.asList(filter1, filter2)), null, null);
assertEquals(2, queryDataPoints.size());
int i = 1;
assertEquals(1, queryDataPoints.iterator().next().getDataPoints().size());
queryDataPoints.sort(new Comparator<Series>() {
@Override
public int compare(Series o1, Series o2) {
return o1.getTags().toString().compareTo(o2.getTags().toString());
}
});
for (Series list : queryDataPoints) {
for (DataPoint dataPoint : list.getDataPoints()) {
assertEquals(curr + i, dataPoint.getTimestamp());
i++;
}
}
Set<String> tags = engine.getTagKeysForMeasurement(dbName, measurementName);
assertEquals(new HashSet<>(Arrays.asList(tag)), tags);
assertEquals(new HashSet<>(Arrays.asList("1", "2", "3", "4")), engine.getTagValuesForMeasurement(dbName, measurementName, tag));
Set<String> fieldsForMeasurement = engine.getFieldsForMeasurement(dbName, measurementName);
assertEquals(new HashSet<>(Arrays.asList(valueFieldName)), fieldsForMeasurement);
try {
engine.getTagKeysForMeasurement(dbName + "1", measurementName);
fail("This measurement should not exist");
} catch (Exception e) {
}
try {
engine.getTagKeysForMeasurement(dbName, measurementName + "1");
fail("This measurement should not exist");
} catch (Exception e) {
}
try {
engine.getFieldsForMeasurement(dbName + "1", measurementName);
fail("This measurement should not exist");
} catch (Exception e) {
}
try {
engine.getFieldsForMeasurement(dbName, measurementName + "1");
fail("This measurement should not exist");
} catch (Exception e) {
}
engine.disconnect();
}
use of com.srotya.sidewinder.core.filters.SimpleTagFilter in project sidewinder by srotya.
the class TestDiskStorageEngine method testTagFiltering.
@Test
public void testTagFiltering() throws Exception {
DiskStorageEngine engine = new DiskStorageEngine();
MiscUtils.delete(new File("target/db121/"));
HashMap<String, String> map = new HashMap<>();
map.put("index.dir", "target/db121/index");
map.put("data.dir", "target/db121/data");
map.put(StorageEngine.PERSISTENCE_DISK, "true");
engine.configure(map, bgTasks);
long curr = 1497720452566L;
String dbName = "test";
String measurementName = "cpu";
String valueFieldName = "value";
for (int i = 1; i <= 3; i++) {
engine.writeDataPoint(MiscUtils.buildDataPoint(dbName, measurementName, valueFieldName, Arrays.asList("p=" + String.valueOf(i), "k=" + String.valueOf(i + 7)), curr, 2 * i));
}
for (int i = 1; i <= 3; i++) {
engine.writeDataPoint(MiscUtils.buildDataPoint(dbName, measurementName, valueFieldName + "2", Arrays.asList("p=" + String.valueOf(i), "k=" + String.valueOf(i + 12)), curr, 2 * i));
}
Set<String> tags = engine.getTagKeysForMeasurement(dbName, measurementName);
System.out.println("Tags:" + tags);
assertEquals(2, tags.size());
// Set<String> series = engine.getSeriesIdsWhereTags(dbName, measurementName,
// Arrays.asList("p=" + String.valueOf(1)));
// assertEquals(2, series.size());
TagFilter tagFilterTree = new ComplexTagFilter(ComplexFilterType.OR, Arrays.asList(new SimpleTagFilter(FilterType.EQUALS, "p", "1"), new SimpleTagFilter(FilterType.EQUALS, "p", "2")));
Set<String> series = engine.getTagFilteredRowKeys(dbName, measurementName, tagFilterTree);
assertEquals(4, series.size());
System.out.println(engine.getTagKeysForMeasurement(dbName, measurementName));
tagFilterTree = new ComplexTagFilter(ComplexFilterType.AND, Arrays.asList(new SimpleTagFilter(FilterType.EQUALS, "p", "1"), new SimpleTagFilter(FilterType.EQUALS, "k", "8")));
series = engine.getTagFilteredRowKeys(dbName, measurementName, tagFilterTree);
System.out.println("Series::" + series);
assertEquals(1, series.size());
engine.disconnect();
}
use of com.srotya.sidewinder.core.filters.SimpleTagFilter in project sidewinder by srotya.
the class TestMappedBitmapTagIndex method testDiskTagIndexBasic.
@Test
public void testDiskTagIndexBasic() throws IOException, InterruptedException {
MiscUtils.delete(new File("target/s6"));
String indexDir = "target/s6";
new File(indexDir).mkdirs();
PersistentMeasurement m = new PersistentMeasurement();
Map<String, String> conf = new HashMap<>();
m.configure(conf, engine, "d", "m", "target/s6/i/bitmap", "target/s6/d/bitmap", new DBMetadata(), null);
MappedBitmapTagIndex index = new MappedBitmapTagIndex(indexDir, "s6", m);
long ts = System.currentTimeMillis();
for (int i = 0; i < 10_000; i++) {
index.index("key", String.valueOf(i), i);
String valueOf = String.valueOf(i);
m.getSeriesListAsList().add(new SeriesFieldMap(valueOf));
}
ts = System.currentTimeMillis() - ts;
System.out.println("Time:" + ts);
for (int i = 0; i < 10_000; i++) {
assertEquals(new HashSet<>(Arrays.asList(String.valueOf(i))), index.searchRowKeysForTagFilter(new SimpleTagFilter(FilterType.EQUALS, "key", String.valueOf(i))));
}
}
use of com.srotya.sidewinder.core.filters.SimpleTagFilter in project sidewinder by srotya.
the class TestMappedBitmapTagIndex method testDiskTagIndexFilterEvaluationNormalized.
@Test
public void testDiskTagIndexFilterEvaluationNormalized() throws IOException, InterruptedException {
MiscUtils.delete(new File("target/s8"));
String indexDir = "target/s8";
new File(indexDir).mkdirs();
PersistentMeasurement m = new PersistentMeasurement();
Map<String, String> conf = new HashMap<>();
m.configure(conf, engine, "d", "m", "target/s8/i/bitmap", "target/s8/d/bitmap", new DBMetadata(), null);
MappedBitmapTagIndex index = new MappedBitmapTagIndex(indexDir, "s8", m);
for (int i = 0; i < 10_000; i++) {
String format = String.format("%04d", i);
index.index("key", format, i);
m.getSeriesListAsList().add(new SeriesFieldMap(format));
}
TagFilter filter = new SimpleTagFilter(FilterType.GREATER_THAN, "key", "9990");
Set<String> keys = index.searchRowKeysForTagFilter(filter);
assertEquals(9, keys.size());
filter = new SimpleTagFilter(FilterType.GREATER_THAN_EQUALS, "key", "9990");
keys = index.searchRowKeysForTagFilter(filter);
assertEquals(10, keys.size());
filter = new SimpleTagFilter(FilterType.LESS_THAN, "key", "0010");
keys = index.searchRowKeysForTagFilter(filter);
assertEquals(10, keys.size());
filter = new SimpleTagFilter(FilterType.LESS_THAN_EQUALS, "key", "0010");
keys = index.searchRowKeysForTagFilter(filter);
assertEquals(11, keys.size());
filter = new ComplexTagFilter(ComplexFilterType.AND, Arrays.asList(new SimpleTagFilter(FilterType.EQUALS, "key", "9990"), new SimpleTagFilter(FilterType.EQUALS, "key", "9991")));
keys = index.searchRowKeysForTagFilter(filter);
assertEquals(0, keys.size());
filter = new ComplexTagFilter(ComplexFilterType.AND, Arrays.asList(new SimpleTagFilter(FilterType.EQUALS, "key1", "9990"), new SimpleTagFilter(FilterType.EQUALS, "key", "9991")));
keys = index.searchRowKeysForTagFilter(filter);
assertEquals(0, keys.size());
filter = new ComplexTagFilter(ComplexFilterType.AND, Arrays.asList(new SimpleTagFilter(FilterType.EQUALS, "key", "9990"), new SimpleTagFilter(FilterType.EQUALS, "key1", "9991")));
keys = index.searchRowKeysForTagFilter(filter);
assertEquals(0, keys.size());
filter = new ComplexTagFilter(ComplexFilterType.OR, Arrays.asList(new SimpleTagFilter(FilterType.EQUALS, "key1", "9990"), new SimpleTagFilter(FilterType.EQUALS, "key", "9991")));
keys = index.searchRowKeysForTagFilter(filter);
assertEquals(1, keys.size());
}
Aggregations