/** * Constructor. */ public TagMeasurementFilter(String meterNameRegex, String tagNameRegex, String tagValueRegex) { meterNamePattern = regexToPatternOrNull(meterNameRegex); tagNamePattern = regexToPatternOrNull(tagNameRegex); tagValuePattern = regexToPatternOrNull(tagValueRegex); }
/** * Endpoint for querying current metric values. * * The result is a JSON document describing the metrics and their values. * The result can be filtered using query parameters or configuring the * controller instance itself. */ @RequestMapping(method = RequestMethod.GET) public ApplicationRegistry getMetrics(@RequestParam Map<String, String> filters) throws IOException { boolean all = filters.get("all") != null; String filterMeterNameRegex = filters.getOrDefault("meterNameRegex", ""); String filterTagNameRegex = filters.getOrDefault("tagNameRegex", ""); String filterTagValueRegex = filters.getOrDefault("tagValueRegex", ""); TagMeasurementFilter queryFilter = new TagMeasurementFilter( filterMeterNameRegex, filterTagNameRegex, filterTagValueRegex); Predicate<Measurement> filter; if (all) { filter = queryFilter; } else { filter = queryFilter.and(getDefaultMeasurementFilter()); } ApplicationRegistry response = new ApplicationRegistry(); response.setApplicationName(applicationName); response.setApplicationVersion(applicationVersion); response.setMetrics(encodeRegistry(registry, filter)); return response; }
@Test public void collectFilteredTagValue() { Predicate<Measurement> filter = new TagMeasurementFilter(null, null, "Z"); Assertions.assertTrue(filter.test(measureAXZ)); Assertions.assertFalse(filter.test(measureAXY)); } }
/** * Implements MeasurementFilter interface. */ @SuppressWarnings("PMD.JUnit4TestShouldUseTestAnnotation") @Override public boolean test(Measurement measurement) { Id id = measurement.id(); if (!stringMatches(id.name(), meterNamePattern)) { return false; } if (tagNamePattern != null || tagValuePattern != null) { for (Tag tag : id.tags()) { boolean nameOk = stringMatches(tag.key(), tagNamePattern); boolean valueOk = stringMatches(tag.value(), tagValuePattern); if (nameOk && valueOk) { return true; } } return false; } return true; } }
/** * Endpoint for querying current metric values. * * The result is a JSON document describing the metrics and their values. * The result can be filtered using query parameters or configuring the * controller instance itself. */ @RequestMapping(method = RequestMethod.GET) public ApplicationRegistry getMetrics(@RequestParam Map<String, String> filters) throws IOException { boolean all = filters.get("all") != null; String filterMeterNameRegex = filters.getOrDefault("meterNameRegex", ""); String filterTagNameRegex = filters.getOrDefault("tagNameRegex", ""); String filterTagValueRegex = filters.getOrDefault("tagValueRegex", ""); TagMeasurementFilter queryFilter = new TagMeasurementFilter( filterMeterNameRegex, filterTagNameRegex, filterTagValueRegex); Predicate<Measurement> filter; if (all) { filter = queryFilter; } else { filter = queryFilter.and(getDefaultMeasurementFilter()); } ApplicationRegistry response = new ApplicationRegistry(); response.setApplicationName(applicationName); response.setApplicationVersion(applicationVersion); response.setMetrics(encodeRegistry(registry, filter)); return response; }
@Test public void testFilteredName() { Predicate<Measurement> filter = new TagMeasurementFilter("idA", null, null); Assertions.assertTrue(filter.test(measureAXY)); Assertions.assertFalse(filter.test(measureBXY)); }
/** * Implements MeasurementFilter interface. */ @SuppressWarnings("PMD.JUnit4TestShouldUseTestAnnotation") @Override public boolean test(Measurement measurement) { Id id = measurement.id(); if (!stringMatches(id.name(), meterNamePattern)) { return false; } if (tagNamePattern != null || tagValuePattern != null) { for (Tag tag : id.tags()) { boolean nameOk = stringMatches(tag.key(), tagNamePattern); boolean valueOk = stringMatches(tag.value(), tagValuePattern); if (nameOk && valueOk) { return true; } } return false; } return true; } }
@Test public void collectFilteredTagName() { Predicate<Measurement> filter = new TagMeasurementFilter(null, "tagZ", null); Assertions.assertTrue(filter.test(measureAXZ)); Assertions.assertFalse(filter.test(measureAXY)); }
/** * Constructor. */ public TagMeasurementFilter(String meterNameRegex, String tagNameRegex, String tagValueRegex) { meterNamePattern = regexToPatternOrNull(meterNameRegex); tagNamePattern = regexToPatternOrNull(tagNameRegex); tagValuePattern = regexToPatternOrNull(tagValueRegex); }