fix: alerting for entiyFQN filter and testResult filter for test cases (#13113)

* fix: alerting for entiyFQN filter and testResult filter for test cases

* fix: handle empty array
This commit is contained in:
Teddy 2023-09-07 17:40:42 +02:00 committed by GitHub
parent b6bab6c7dd
commit 5d780dc8eb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -10,6 +10,7 @@ import static org.openmetadata.service.Entity.TEST_CASE;
import static org.openmetadata.service.Entity.USER;
import java.io.IOException;
import java.util.List;
import java.util.Set;
import java.util.UUID;
import lombok.extern.slf4j.Slf4j;
@ -19,6 +20,7 @@ import org.openmetadata.schema.entity.services.ingestionPipelines.PipelineStatus
import org.openmetadata.schema.entity.services.ingestionPipelines.PipelineStatusType;
import org.openmetadata.schema.entity.teams.Team;
import org.openmetadata.schema.entity.teams.User;
import org.openmetadata.schema.tests.TestCase;
import org.openmetadata.schema.tests.type.TestCaseResult;
import org.openmetadata.schema.tests.type.TestCaseStatus;
import org.openmetadata.schema.type.ChangeEvent;
@ -100,6 +102,9 @@ public class AlertsRuleEvaluator {
}
EntityInterface entity = getEntity(changeEvent);
for (String name : entityNames) {
if (changeEvent.getEntityType().equals(TEST_CASE) && ((TestCase) entity).getEntityFQN().equals(name)) {
return true;
}
if (entity.getFullyQualifiedName().equals(name)) {
return true;
}
@ -159,7 +164,14 @@ public class AlertsRuleEvaluator {
// in case the entity is not test case return since the filter doesn't apply
return true;
}
for (FieldChange fieldChange : changeEvent.getChangeDescription().getFieldsUpdated()) {
// we need to handle both fields updated and fields added
List<FieldChange> fieldChanges = changeEvent.getChangeDescription().getFieldsUpdated();
if (!changeEvent.getChangeDescription().getFieldsAdded().isEmpty()) {
fieldChanges.addAll(changeEvent.getChangeDescription().getFieldsAdded());
}
for (FieldChange fieldChange : fieldChanges) {
if (fieldChange.getName().equals("testCaseResult") && fieldChange.getNewValue() != null) {
TestCaseResult testCaseResult = (TestCaseResult) fieldChange.getNewValue();
TestCaseStatus status = testCaseResult.getTestCaseStatus();