Search in sources :

Example 1 with SimpleTagFilter

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());
}
Also used : ComplexTagFilter(com.srotya.sidewinder.core.filters.ComplexTagFilter) TagFilter(com.srotya.sidewinder.core.filters.TagFilter) SimpleTagFilter(com.srotya.sidewinder.core.filters.SimpleTagFilter) ComplexTagFilter(com.srotya.sidewinder.core.filters.ComplexTagFilter) SimpleTagFilter(com.srotya.sidewinder.core.filters.SimpleTagFilter) Test(org.junit.Test)

Example 2 with SimpleTagFilter

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();
}
Also used : ComplexTagFilter(com.srotya.sidewinder.core.filters.ComplexTagFilter) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) SimpleTagFilter(com.srotya.sidewinder.core.filters.SimpleTagFilter) DataPoint(com.srotya.sidewinder.core.storage.DataPoint) Point(com.srotya.sidewinder.core.rpc.Point) ItemNotFoundException(com.srotya.sidewinder.core.storage.ItemNotFoundException) RejectException(com.srotya.sidewinder.core.storage.RejectException) IOException(java.io.IOException) TimeSeries(com.srotya.sidewinder.core.storage.TimeSeries) Series(com.srotya.sidewinder.core.storage.Series) DataPoint(com.srotya.sidewinder.core.storage.DataPoint) File(java.io.File) Test(org.junit.Test)

Example 3 with SimpleTagFilter

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();
}
Also used : ComplexTagFilter(com.srotya.sidewinder.core.filters.ComplexTagFilter) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) SimpleTagFilter(com.srotya.sidewinder.core.filters.SimpleTagFilter) ComplexTagFilter(com.srotya.sidewinder.core.filters.ComplexTagFilter) TagFilter(com.srotya.sidewinder.core.filters.TagFilter) SimpleTagFilter(com.srotya.sidewinder.core.filters.SimpleTagFilter) File(java.io.File) DataPoint(com.srotya.sidewinder.core.storage.DataPoint) Point(com.srotya.sidewinder.core.rpc.Point) Test(org.junit.Test)

Example 4 with SimpleTagFilter

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))));
    }
}
Also used : DBMetadata(com.srotya.sidewinder.core.storage.DBMetadata) HashMap(java.util.HashMap) SimpleTagFilter(com.srotya.sidewinder.core.filters.SimpleTagFilter) File(java.io.File) SeriesFieldMap(com.srotya.sidewinder.core.storage.SeriesFieldMap) Test(org.junit.Test)

Example 5 with SimpleTagFilter

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());
}
Also used : DBMetadata(com.srotya.sidewinder.core.storage.DBMetadata) ComplexTagFilter(com.srotya.sidewinder.core.filters.ComplexTagFilter) HashMap(java.util.HashMap) TagFilter(com.srotya.sidewinder.core.filters.TagFilter) SimpleTagFilter(com.srotya.sidewinder.core.filters.SimpleTagFilter) ComplexTagFilter(com.srotya.sidewinder.core.filters.ComplexTagFilter) SimpleTagFilter(com.srotya.sidewinder.core.filters.SimpleTagFilter) SeriesFieldMap(com.srotya.sidewinder.core.storage.SeriesFieldMap) File(java.io.File) Test(org.junit.Test)

Aggregations

SimpleTagFilter (com.srotya.sidewinder.core.filters.SimpleTagFilter)23 ComplexTagFilter (com.srotya.sidewinder.core.filters.ComplexTagFilter)18 Test (org.junit.Test)17 TagFilter (com.srotya.sidewinder.core.filters.TagFilter)16 File (java.io.File)12 HashMap (java.util.HashMap)10 DataPoint (com.srotya.sidewinder.core.storage.DataPoint)8 Point (com.srotya.sidewinder.core.rpc.Point)7 DBMetadata (com.srotya.sidewinder.core.storage.DBMetadata)6 SeriesFieldMap (com.srotya.sidewinder.core.storage.SeriesFieldMap)6 ComplexFilterType (com.srotya.sidewinder.core.filters.ComplexTagFilter.ComplexFilterType)4 Series (com.srotya.sidewinder.core.storage.Series)4 TimeSeries (com.srotya.sidewinder.core.storage.TimeSeries)4 IOException (java.io.IOException)4 LinkedHashMap (java.util.LinkedHashMap)4 ItemNotFoundException (com.srotya.sidewinder.core.storage.ItemNotFoundException)3 RejectException (com.srotya.sidewinder.core.storage.RejectException)3 HashSet (java.util.HashSet)2 Stack (java.util.Stack)2 JsonArray (com.google.gson.JsonArray)1