This is an automated email from the ASF dual-hosted git repository. apucher pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git
The following commit(s) were added to refs/heads/master by this push: new eceaf76 [TE] Legacy Alert Filter should pick recipients from new alerter configs (#3565) eceaf76 is described below commit eceaf76b0b3f896cee0f6035147b16bb82e93bb3 Author: Akshay Rai <akshayra...@gmail.com> AuthorDate: Thu Nov 29 11:25:23 2018 -0800 [TE] Legacy Alert Filter should pick recipients from new alerter configs (#3565) --- .../thirdeye/detection/DefaultDataProvider.java | 2 +- .../detection/alert/filter/LegacyAlertFilter.java | 24 ++++++++++------- .../alert/filter/LegacyAlertFilterTest.java | 31 ++++++++++------------ 3 files changed, 30 insertions(+), 27 deletions(-) diff --git a/thirdeye/thirdeye-pinot/src/main/java/com/linkedin/thirdeye/detection/DefaultDataProvider.java b/thirdeye/thirdeye-pinot/src/main/java/com/linkedin/thirdeye/detection/DefaultDataProvider.java index a13138d..f600c44 100644 --- a/thirdeye/thirdeye-pinot/src/main/java/com/linkedin/thirdeye/detection/DefaultDataProvider.java +++ b/thirdeye/thirdeye-pinot/src/main/java/com/linkedin/thirdeye/detection/DefaultDataProvider.java @@ -161,7 +161,7 @@ public class DefaultDataProvider implements DataProvider { ); } - LOG.info("Fetched {} legacy anomalies between (startTime = {}, endTime = {}) with confid Id = {}", anomalies.size(), + LOG.info("Fetched {} anomalies between (startTime = {}, endTime = {}) with confid Id = {}", anomalies.size(), slice.getStart(), slice.getEnd(), configId); output.putAll(slice, anomalies); } diff --git a/thirdeye/thirdeye-pinot/src/main/java/com/linkedin/thirdeye/detection/alert/filter/LegacyAlertFilter.java b/thirdeye/thirdeye-pinot/src/main/java/com/linkedin/thirdeye/detection/alert/filter/LegacyAlertFilter.java index 488f1f2..f08ddbc 100644 --- a/thirdeye/thirdeye-pinot/src/main/java/com/linkedin/thirdeye/detection/alert/filter/LegacyAlertFilter.java +++ b/thirdeye/thirdeye-pinot/src/main/java/com/linkedin/thirdeye/detection/alert/filter/LegacyAlertFilter.java @@ -22,6 +22,7 @@ import com.google.common.collect.Collections2; import com.linkedin.thirdeye.datalayer.dto.AlertConfigDTO; import com.linkedin.thirdeye.datalayer.dto.DetectionAlertConfigDTO; import com.linkedin.thirdeye.datalayer.dto.MergedAnomalyResultDTO; +import com.linkedin.thirdeye.detection.alert.DetectionAlertFilterRecipients; import com.linkedin.thirdeye.detection.spi.model.AnomalySlice; import com.linkedin.thirdeye.detection.ConfigUtils; import com.linkedin.thirdeye.detection.DataProvider; @@ -34,19 +35,20 @@ import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import javax.annotation.Nullable; import org.apache.commons.collections.MapUtils; public class LegacyAlertFilter extends DetectionAlertFilter { private static final String PROP_LEGACY_ALERT_FILTER_CONFIG = "legacyAlertFilterConfig"; - private static final String PROP_LEGACY_ALERT_CONFIG = "legacyAlertConfig"; private static final String PROP_LEGACY_ALERT_FILTER_CLASS_NAME = "legacyAlertFilterClassName"; private static final String PROP_DETECTION_CONFIG_IDS = "detectionConfigIds"; + private static final String PROP_RECIPIENTS = "recipients"; + private static final String PROP_TO = "to"; + private static final String PROP_CC = "cc"; + private static final String PROP_BCC = "bcc"; - private static ObjectMapper OBJECT_MAPPER = new ObjectMapper(); - - private AlertConfigDTO alertConfig; private BaseAlertFilter alertFilter; private final List<Long> detectionConfigIds; private final Map<Long, Long> vectorClocks; @@ -54,8 +56,6 @@ public class LegacyAlertFilter extends DetectionAlertFilter { public LegacyAlertFilter(DataProvider provider, DetectionAlertConfigDTO config, long endTime) throws Exception { super(provider, config, endTime); - String alertConfigStr = OBJECT_MAPPER.writeValueAsString(MapUtils.getMap(config.getProperties(), PROP_LEGACY_ALERT_CONFIG)); - alertConfig = OBJECT_MAPPER.readValue(alertConfigStr, AlertConfigDTO.class); alertFilter = new DummyAlertFilter(); if (config.getProperties().containsKey(PROP_LEGACY_ALERT_FILTER_CLASS_NAME)) { String className = MapUtils.getString(config.getProperties(), PROP_LEGACY_ALERT_FILTER_CLASS_NAME); @@ -70,6 +70,12 @@ public class LegacyAlertFilter extends DetectionAlertFilter { public DetectionAlertFilterResult run() { DetectionAlertFilterResult result = new DetectionAlertFilterResult(); + Map<String, Set<String>> recipientsMap = ConfigUtils.getMap(this.config.getProperties().get(PROP_RECIPIENTS)); + Set<String> to = (recipientsMap.get(PROP_TO) == null) ? Collections.emptySet() : new HashSet<>(recipientsMap.get(PROP_TO)); + Set<String> cc = (recipientsMap.get(PROP_CC) == null) ? Collections.emptySet() : new HashSet<>(recipientsMap.get(PROP_CC)); + Set<String> bcc = (recipientsMap.get(PROP_BCC) == null) ? Collections.emptySet() : new HashSet<>(recipientsMap.get(PROP_BCC)); + DetectionAlertFilterRecipients recipients = new DetectionAlertFilterRecipients(to, cc, bcc); + for (Long functionId : this.detectionConfigIds) { long startTime = MapUtils.getLong(this.vectorClocks, functionId, 0L); @@ -92,10 +98,10 @@ public class LegacyAlertFilter extends DetectionAlertFilter { } }); - if (result.getResult().get(this.alertConfig.getReceiverAddresses()) == null) { - result.addMapping(this.alertConfig.getReceiverAddresses(), new HashSet<>(anomalies)); + if (result.getResult().isEmpty()) { + result.addMapping(recipients, new HashSet<>(anomalies)); } else { - result.getResult().get(this.alertConfig.getReceiverAddresses()).addAll(anomalies); + result.getResult().get(recipients).addAll(anomalies); } } diff --git a/thirdeye/thirdeye-pinot/src/test/java/com/linkedin/thirdeye/detection/alert/filter/LegacyAlertFilterTest.java b/thirdeye/thirdeye-pinot/src/test/java/com/linkedin/thirdeye/detection/alert/filter/LegacyAlertFilterTest.java index 6cff774..166e834 100644 --- a/thirdeye/thirdeye-pinot/src/test/java/com/linkedin/thirdeye/detection/alert/filter/LegacyAlertFilterTest.java +++ b/thirdeye/thirdeye-pinot/src/test/java/com/linkedin/thirdeye/detection/alert/filter/LegacyAlertFilterTest.java @@ -20,7 +20,6 @@ import com.linkedin.thirdeye.datalayer.dto.DetectionAlertConfigDTO; import com.linkedin.thirdeye.datalayer.dto.MergedAnomalyResultDTO; import com.linkedin.thirdeye.detection.DataProvider; import com.linkedin.thirdeye.detection.MockDataProvider; -import com.linkedin.thirdeye.detection.alert.DetectionAlertFilterRecipients; import com.linkedin.thirdeye.detection.alert.DetectionAlertFilterResult; import java.util.ArrayList; import java.util.Arrays; @@ -28,6 +27,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import org.testng.Assert; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; @@ -39,20 +39,16 @@ public class LegacyAlertFilterTest { private static final String PROP_DETECTION_CONFIG_IDS = "detectionConfigIds"; private static final List<Long> PROP_ID_VALUE = Arrays.asList(1001L, 1002L); private static final String PROP_LEGACY_ALERT_FILTER_CONFIG = "legacyAlertFilterConfig"; - private static final String PROP_LEGACY_ALERT_CONFIG = "legacyAlertConfig"; private static final String PROP_LEGACY_ALERT_FILTER_CLASS_NAME = "legacyAlertFilterClassName"; - private static final String TO_RECIPIENTS_VALUES = "t...@example.com,myt...@example.org"; - private static final String CC_RECIPIENTS_VALUES = "iamcc@host.domain,iamcc2@host.domain"; - private static final String BCC_RECIPIENTS_VALUES = "iambcc@host.domain"; - - private static final DetectionAlertFilterRecipients RECEIVER_ADDRESSES = new DetectionAlertFilterRecipients( - new HashSet<>(Arrays.asList(TO_RECIPIENTS_VALUES)), - new HashSet<>(Arrays.asList(CC_RECIPIENTS_VALUES)), - new HashSet<>(Arrays.asList(BCC_RECIPIENTS_VALUES))); + private static final Set<String> TO_RECIPIENTS_VALUES = new HashSet<>(Arrays.asList("t...@example.com", "myt...@example.org")); + private static final Set<String> CC_RECIPIENTS_VALUES = new HashSet<>(Arrays.asList("iamcc@host.domain", "iamcc2@host.domain")); + private static final Set<String> BCC_RECIPIENTS_VALUES = new HashSet<>(Arrays.asList("iambcc@host.domain")); + private static final String PROP_RECIPIENTS = "recipients"; private List<MergedAnomalyResultDTO> detectedAnomalies; private LegacyAlertFilter legacyAlertFilter; private LegacyAlertFilter legacyAlertFilterOnLegacyAnomalies; + private Map<String, Set<String>> recipientsMap; @BeforeMethod public void beforeMethod() throws Exception { @@ -78,17 +74,20 @@ public class LegacyAlertFilterTest { DetectionAlertConfigDTO detectionAlertConfigLegacyAnomalies = createDetectionAlertConfig(); detectionAlertConfigLegacyAnomalies.setOnlyFetchLegacyAnomalies(true); this.legacyAlertFilterOnLegacyAnomalies = new LegacyAlertFilter(mockDataProvider, detectionAlertConfigLegacyAnomalies, 2500L); + + this.recipientsMap = new HashMap<>(); + recipientsMap.put("to", TO_RECIPIENTS_VALUES); + recipientsMap.put("cc", CC_RECIPIENTS_VALUES); + recipientsMap.put("bcc", BCC_RECIPIENTS_VALUES); } private DetectionAlertConfigDTO createDetectionAlertConfig() { DetectionAlertConfigDTO detectionAlertConfig = new DetectionAlertConfigDTO(); Map<String, Object> properties = new HashMap<>(); properties.put(PROP_DETECTION_CONFIG_IDS, PROP_ID_VALUE); - Map<String, Object> alertConfig = new HashMap<>(); - alertConfig.put("receiverAddresses", RECEIVER_ADDRESSES); - properties.put(PROP_LEGACY_ALERT_CONFIG, alertConfig); properties.put(PROP_LEGACY_ALERT_FILTER_CLASS_NAME, "com.linkedin.thirdeye.detector.email.filter.DummyAlertFilter"); properties.put(PROP_LEGACY_ALERT_FILTER_CONFIG, ""); + properties.put(PROP_RECIPIENTS, recipientsMap); detectionAlertConfig.setProperties(properties); detectionAlertConfig.setVectorClocks(new HashMap<Long, Long>()); @@ -98,15 +97,13 @@ public class LegacyAlertFilterTest { @Test public void testRun() throws Exception { DetectionAlertFilterResult result = this.legacyAlertFilter.run(); - Assert.assertEquals(result.getResult().get(RECEIVER_ADDRESSES), - new HashSet<>(this.detectedAnomalies.subList(0, 4))); + Assert.assertEquals(result.getAllAnomalies(), new HashSet<>(this.detectedAnomalies.subList(0, 4))); } @Test public void testFetchingLegacyAnomalies() throws Exception { DetectionAlertFilterResult result = this.legacyAlertFilterOnLegacyAnomalies.run(); Assert.assertEquals(result.getAllAnomalies().size(), 2); - Assert.assertEquals(result.getResult().get(RECEIVER_ADDRESSES), - new HashSet<>(this.detectedAnomalies.subList(7, 9))); + Assert.assertEquals(result.getAllAnomalies(), new HashSet<>(this.detectedAnomalies.subList(7, 9))); } } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org For additional commands, e-mail: commits-h...@pinot.apache.org