Skip to content

Commit e1ef6d5

Browse files
author
Tatyana Tokmyanina
committed
hotfix: checkLevel and LevelEventFilter work when value is not in enum,
add modules to makefile
1 parent 262c48e commit e1ef6d5

File tree

4 files changed

+24
-7
lines changed

4 files changed

+24
-7
lines changed

Makefile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ SERVICES := hercules-elastic-adapter \
1616
hercules-tracing-api \
1717
hercules-tracing-sink \
1818
hercules-tracing-sink-clickhouse \
19-
hercules-init
19+
hercules-init \
20+
hercules-routing \
21+
hercules-opentelemetry-adapter
2022

2123

2224
.PHONY: all build_images push_images

hercules-sentry-sink/src/main/java/ru/kontur/vostok/hercules/sentry/sink/SentrySyncProcessor.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,9 +119,12 @@ public boolean process(Event event) throws BackendServiceFailedException {
119119
}
120120

121121
private boolean checkLevel(Event event) {
122-
final Optional<String> value = ContainerUtil.extract(event.getPayload(), LogEventTags.LEVEL_TAG);
123-
SentryLevel level = value.map(sentryLevelParser::parse).orElse(ParsingResult.of(SentryLevel.INFO)).get();
124-
return defaultLevel.compareTo(level) >= 0;
122+
return ContainerUtil.extract(event.getPayload(), LogEventTags.LEVEL_TAG)
123+
.map(sentryLevelParser::parse)
124+
.filter(ParsingResult::hasValue)
125+
.map(ParsingResult::get)
126+
.map(value -> defaultLevel.compareTo(value) >= 0)
127+
.orElse(false);
125128
}
126129

127130
public void stop() {

hercules-sentry-sink/src/main/java/ru/kontur/vostok/hercules/sentry/sink/filter/LevelEventFilter.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,12 @@ public LevelEventFilter(Properties properties) {
3131

3232
@Override
3333
public boolean test(Event event) {
34-
final Optional<String> value = ContainerUtil.extract(event.getPayload(), LogEventTags.LEVEL_TAG);
35-
SentryLevel currentLevel = value.map(sentryLevelParser::parse).orElse(ParsingResult.of(SentryLevel.INFO)).get();
36-
return level.compareTo(currentLevel) >= 0;
34+
return ContainerUtil.extract(event.getPayload(), LogEventTags.LEVEL_TAG)
35+
.map(sentryLevelParser::parse)
36+
.filter(ParsingResult::hasValue)
37+
.map(ParsingResult::get)
38+
.map(value -> level.compareTo(value) >= 0)
39+
.orElse(false);
3740
}
3841

3942
private static class Props {

hercules-sentry-sink/src/test/java/ru/kontur/vostok/hercules/sentry/sink/filter/LevelEventFilterTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,15 @@ public void shouldReturnFalseIfLevelIsLowerThenRequired() {
5151
Assert.assertFalse(filter.test(event));
5252
}
5353

54+
@Test
55+
public void shouldReturnFalseIfLevelIsUnexpected() {
56+
Event event = getEventBuilder()
57+
.tag("level", Variant.ofString("informational"))
58+
.build();
59+
60+
Assert.assertFalse(filter.test(event));
61+
}
62+
5463
@Test
5564
public void shouldReturnFalseIfLevelTagIsAbsent() {
5665
Event event = getEventBuilder().build();

0 commit comments

Comments
 (0)