diff --git a/cameleer-server-core/src/main/java/com/cameleer/server/core/alerting/AggregationOp.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/alerting/AggregationOp.java new file mode 100644 index 00000000..e72edacd --- /dev/null +++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/alerting/AggregationOp.java @@ -0,0 +1,3 @@ +package com.cameleer.server.core.alerting; + +public enum AggregationOp { MAX, MIN, AVG, LATEST } diff --git a/cameleer-server-core/src/main/java/com/cameleer/server/core/alerting/AlertScope.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/alerting/AlertScope.java new file mode 100644 index 00000000..b69c9002 --- /dev/null +++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/alerting/AlertScope.java @@ -0,0 +1,5 @@ +package com.cameleer.server.core.alerting; + +public record AlertScope(String appSlug, String routeId, String agentId) { + public boolean isEnvWide() { return appSlug == null && routeId == null && agentId == null; } +} diff --git a/cameleer-server-core/src/main/java/com/cameleer/server/core/alerting/AlertSeverity.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/alerting/AlertSeverity.java new file mode 100644 index 00000000..39ac5ce1 --- /dev/null +++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/alerting/AlertSeverity.java @@ -0,0 +1,3 @@ +package com.cameleer.server.core.alerting; + +public enum AlertSeverity { CRITICAL, WARNING, INFO } diff --git a/cameleer-server-core/src/main/java/com/cameleer/server/core/alerting/AlertState.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/alerting/AlertState.java new file mode 100644 index 00000000..d42d7e03 --- /dev/null +++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/alerting/AlertState.java @@ -0,0 +1,3 @@ +package com.cameleer.server.core.alerting; + +public enum AlertState { PENDING, FIRING, ACKNOWLEDGED, RESOLVED } diff --git a/cameleer-server-core/src/main/java/com/cameleer/server/core/alerting/Comparator.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/alerting/Comparator.java new file mode 100644 index 00000000..5279ca83 --- /dev/null +++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/alerting/Comparator.java @@ -0,0 +1,3 @@ +package com.cameleer.server.core.alerting; + +public enum Comparator { GT, GTE, LT, LTE, EQ } diff --git a/cameleer-server-core/src/main/java/com/cameleer/server/core/alerting/ConditionKind.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/alerting/ConditionKind.java new file mode 100644 index 00000000..b53585ce --- /dev/null +++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/alerting/ConditionKind.java @@ -0,0 +1,3 @@ +package com.cameleer.server.core.alerting; + +public enum ConditionKind { ROUTE_METRIC, EXCHANGE_MATCH, AGENT_STATE, DEPLOYMENT_STATE, LOG_PATTERN, JVM_METRIC } diff --git a/cameleer-server-core/src/main/java/com/cameleer/server/core/alerting/FireMode.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/alerting/FireMode.java new file mode 100644 index 00000000..0e684084 --- /dev/null +++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/alerting/FireMode.java @@ -0,0 +1,3 @@ +package com.cameleer.server.core.alerting; + +public enum FireMode { PER_EXCHANGE, COUNT_IN_WINDOW } diff --git a/cameleer-server-core/src/main/java/com/cameleer/server/core/alerting/NotificationStatus.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/alerting/NotificationStatus.java new file mode 100644 index 00000000..b4d9fe7e --- /dev/null +++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/alerting/NotificationStatus.java @@ -0,0 +1,3 @@ +package com.cameleer.server.core.alerting; + +public enum NotificationStatus { PENDING, DELIVERED, FAILED } diff --git a/cameleer-server-core/src/main/java/com/cameleer/server/core/alerting/RouteMetric.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/alerting/RouteMetric.java new file mode 100644 index 00000000..336d8019 --- /dev/null +++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/alerting/RouteMetric.java @@ -0,0 +1,3 @@ +package com.cameleer.server.core.alerting; + +public enum RouteMetric { ERROR_RATE, P95_LATENCY_MS, P99_LATENCY_MS, THROUGHPUT, ERROR_COUNT } diff --git a/cameleer-server-core/src/main/java/com/cameleer/server/core/alerting/TargetKind.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/alerting/TargetKind.java new file mode 100644 index 00000000..2f7c7a7b --- /dev/null +++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/alerting/TargetKind.java @@ -0,0 +1,3 @@ +package com.cameleer.server.core.alerting; + +public enum TargetKind { USER, GROUP, ROLE } diff --git a/cameleer-server-core/src/test/java/com/cameleer/server/core/alerting/AlertScopeTest.java b/cameleer-server-core/src/test/java/com/cameleer/server/core/alerting/AlertScopeTest.java new file mode 100644 index 00000000..5713a18a --- /dev/null +++ b/cameleer-server-core/src/test/java/com/cameleer/server/core/alerting/AlertScopeTest.java @@ -0,0 +1,33 @@ +package com.cameleer.server.core.alerting; + +import org.junit.jupiter.api.Test; +import static org.assertj.core.api.Assertions.assertThat; + +class AlertScopeTest { + + @Test + void allFieldsNullIsEnvWide() { + var s = new AlertScope(null, null, null); + assertThat(s.isEnvWide()).isTrue(); + } + + @Test + void appScoped() { + var s = new AlertScope("orders", null, null); + assertThat(s.isEnvWide()).isFalse(); + assertThat(s.appSlug()).isEqualTo("orders"); + } + + @Test + void enumsHaveExpectedValues() { + assertThat(AlertSeverity.values()).containsExactly( + AlertSeverity.CRITICAL, AlertSeverity.WARNING, AlertSeverity.INFO); + assertThat(AlertState.values()).containsExactly( + AlertState.PENDING, AlertState.FIRING, AlertState.ACKNOWLEDGED, AlertState.RESOLVED); + assertThat(ConditionKind.values()).hasSize(6); + assertThat(TargetKind.values()).containsExactly( + TargetKind.USER, TargetKind.GROUP, TargetKind.ROLE); + assertThat(NotificationStatus.values()).containsExactly( + NotificationStatus.PENDING, NotificationStatus.DELIVERED, NotificationStatus.FAILED); + } +}