/** * Factory method building a filter from a specification file. */ public static PrototypeMeasurementFilter loadFromPath(String path) throws IOException { PrototypeMeasurementFilterSpecification spec = PrototypeMeasurementFilterSpecification.loadFromPath(path); return new PrototypeMeasurementFilter(spec); }
/** * Constructor. */ public TagMeasurementFilter(String meterNameRegex, String tagNameRegex, String tagValueRegex) { meterNamePattern = regexToPatternOrNull(meterNameRegex); tagNamePattern = regexToPatternOrNull(tagNameRegex); tagValuePattern = regexToPatternOrNull(tagValueRegex); }
/** * Implements the MeasurementFilter interface. */ @SuppressWarnings("PMD.JUnit4TestShouldUseTestAnnotation") public boolean test(Iterable<Tag> sourceTags) { for (TagFilterPattern tagPattern : this.tags) { if (!patternInList(tagPattern, sourceTags)) { return false; } } return true; }
/** * Constructor. */ public PrototypeMeasurementFilter(PrototypeMeasurementFilterSpecification specification) { for (Map.Entry<String, PrototypeMeasurementFilterSpecification.MeterFilterSpecification> entry : specification.getInclude().entrySet()) { includePatterns.add(new MeterFilterPattern(entry.getKey(), entry.getValue())); } for (Map.Entry<String, PrototypeMeasurementFilterSpecification.MeterFilterSpecification> entry : specification.getExclude().entrySet()) { excludePatterns.add(new MeterFilterPattern(entry.getKey(), entry.getValue())); } }
@Test public void meterNotOkBecauseNotIncluded() { PrototypeMeasurementFilterSpecification.MeterFilterSpecification meterSpec = new PrototypeMeasurementFilterSpecification.MeterFilterSpecification( Arrays.asList(valueSpecAyBx, valueSpecAzBy)); PrototypeMeasurementFilterSpecification spec = new PrototypeMeasurementFilterSpecification(); spec.getInclude().put("counter.+", meterSpec); PrototypeMeasurementFilter filter = new PrototypeMeasurementFilter(spec); Id idAXX = new TestId("counterA").withTag("tagA", "X").withTag("tagB", "X"); Id idBZX = new TestId("counterB").withTag("tagA", "Z").withTag("tagB", "X"); Assertions.assertFalse(filter.test(new Measurement(idAXX, 1, 1))); Assertions.assertFalse(filter.test(new Measurement(idBZX, 2, 2))); }
@Test public void testPatternFromSpec() { List<PrototypeMeasurementFilter.TagFilterPattern> tagPatterns = Arrays.asList( new PrototypeMeasurementFilter.TagFilterPattern(Pattern.compile("tagA"), Pattern.compile("X")), new PrototypeMeasurementFilter.TagFilterPattern(Pattern.compile("tagB"), Pattern.compile("Y"))); PrototypeMeasurementFilter.MeterFilterPattern meterPattern = new PrototypeMeasurementFilter.MeterFilterPattern("meterA", meterSpecA); Assertions.assertEquals(meterPattern.getValues().size(), 1); Assertions.assertEquals(meterPattern.getValues().get(0).getTags(), tagPatterns); }
/** * Constructs a filter from a specification. */ public ValueFilterPattern(PrototypeMeasurementFilterSpecification.ValueFilterSpecification spec) { if (spec == null) return; for (PrototypeMeasurementFilterSpecification.TagFilterSpecification tag : spec.getTags()) { this.tags.add(new TagFilterPattern(tag)); } }
@Test public void keepAnyTag() { PrototypeMeasurementFilter.TagFilterPattern pattern = new PrototypeMeasurementFilter.TagFilterPattern( new PrototypeMeasurementFilterSpecification.TagFilterSpecification("", "")); Tag tagA = new BasicTag("some_name_value", "some_value_string"); Assertions.assertTrue(pattern.test(tagA)); }
/** * Implements the MeasurementFilter interface. */ @SuppressWarnings("PMD.JUnit4TestShouldUseTestAnnotation") @Override public boolean test(Measurement measurement) { IncludeExcludePatterns patterns = metricToPatterns(measurement.id().name()); return patterns != null && patterns.test(measurement); }
/** * Constructs from a specification. * * The nameRegex specifies the name of the Spectator meter itself. */ public MeterFilterPattern( String nameRegex, PrototypeMeasurementFilterSpecification.MeterFilterSpecification spec) { namePattern = Pattern.compile(nameRegex); if (spec == null) return; if (spec.getValues().isEmpty()) { values.add(new ValueFilterPattern(PrototypeMeasurementFilterSpecification.ValueFilterSpecification.ALL)); } for (PrototypeMeasurementFilterSpecification.ValueFilterSpecification value : spec.getValues()) { values.add(new ValueFilterPattern(value)); } }
/** * Determins if a particular TagFilter is satisfied among the value's tag set. */ static boolean patternInList(TagFilterPattern tagPattern, Iterable<Tag> sourceTags) { for (Tag candidateTag : sourceTags) { if (tagPattern.test(candidateTag)) { return true; } } return false; }
/** * The default measurement filter is configured through properties. */ public Predicate<Measurement> getDefaultMeasurementFilter() throws IOException { if (defaultMeasurementFilter != null) { return defaultMeasurementFilter; } if (!prototypeFilterPath.isEmpty()) { defaultMeasurementFilter = PrototypeMeasurementFilter.loadFromPath( prototypeFilterPath); } else { defaultMeasurementFilter = ALL_MEASUREMENTS_FILTER; } return defaultMeasurementFilter; }
/** * Constructor. */ public PrototypeMeasurementFilter(PrototypeMeasurementFilterSpecification specification) { for (Map.Entry<String, PrototypeMeasurementFilterSpecification.MeterFilterSpecification> entry : specification.getInclude().entrySet()) { includePatterns.add(new MeterFilterPattern(entry.getKey(), entry.getValue())); } for (Map.Entry<String, PrototypeMeasurementFilterSpecification.MeterFilterSpecification> entry : specification.getExclude().entrySet()) { excludePatterns.add(new MeterFilterPattern(entry.getKey(), entry.getValue())); } }
/** * Factory method building a filter from a specification file. */ public static PrototypeMeasurementFilter loadFromPath(String path) throws IOException { PrototypeMeasurementFilterSpecification spec = PrototypeMeasurementFilterSpecification.loadFromPath(path); return new PrototypeMeasurementFilter(spec); }
/** * Constructs a filter from a specification. */ public ValueFilterPattern(PrototypeMeasurementFilterSpecification.ValueFilterSpecification spec) { if (spec == null) return; for (PrototypeMeasurementFilterSpecification.TagFilterSpecification tag : spec.getTags()) { this.tags.add(new TagFilterPattern(tag)); } }
/** * Implements the MeasurementFilter interface. */ @SuppressWarnings("PMD.JUnit4TestShouldUseTestAnnotation") @Override public boolean test(Measurement measurement) { IncludeExcludePatterns patterns = metricToPatterns(measurement.id().name()); return patterns != null && patterns.test(measurement); }
/** * Constructs from a specification. * * The nameRegex specifies the name of the Spectator meter itself. */ public MeterFilterPattern( String nameRegex, PrototypeMeasurementFilterSpecification.MeterFilterSpecification spec) { namePattern = Pattern.compile(nameRegex); if (spec == null) return; if (spec.getValues().isEmpty()) { values.add(new ValueFilterPattern(PrototypeMeasurementFilterSpecification.ValueFilterSpecification.ALL)); } for (PrototypeMeasurementFilterSpecification.ValueFilterSpecification value : spec.getValues()) { values.add(new ValueFilterPattern(value)); } }
/** * Determins if a particular TagFilter is satisfied among the value's tag set. */ static boolean patternInList(TagFilterPattern tagPattern, Iterable<Tag> sourceTags) { for (Tag candidateTag : sourceTags) { if (tagPattern.test(candidateTag)) { return true; } } return false; }
/** * Constructor. */ public TagMeasurementFilter(String meterNameRegex, String tagNameRegex, String tagValueRegex) { meterNamePattern = regexToPatternOrNull(meterNameRegex); tagNamePattern = regexToPatternOrNull(tagNameRegex); tagValuePattern = regexToPatternOrNull(tagValueRegex); }
/** * Implements the MeasurementFilter interface. */ @SuppressWarnings("PMD.JUnit4TestShouldUseTestAnnotation") public boolean test(Iterable<Tag> sourceTags) { for (TagFilterPattern tagPattern : this.tags) { if (!patternInList(tagPattern, sourceTags)) { return false; } } return true; }