Selaa lähdekoodia

Smart filter offset binding (#2732)

* adding "offset" var to smart filter binding

Co-authored-by: iliax <ikuramshin@provectus.com>
Ilya Kuramshin 2 vuotta sitten
vanhempi
commit
8b91f50af5

+ 1 - 0
kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/MessageFilters.java

@@ -43,6 +43,7 @@ public class MessageFilters {
     return msg -> {
       var bindings = getGroovyEngine().createBindings();
       bindings.put("partition", msg.getPartition());
+      bindings.put("offset", msg.getOffset());
       bindings.put("timestampMs", msg.getTimestamp().toInstant().toEpochMilli());
       bindings.put("keyAsText", msg.getKey());
       bindings.put("valueAsText", msg.getContent());

+ 7 - 0
kafka-ui-api/src/test/java/com/provectus/kafka/ui/emitter/MessageFiltersTest.java

@@ -73,6 +73,13 @@ class MessageFiltersTest {
       assertFalse(f.test(msg().partition(0)));
     }
 
+    @Test
+    void canCheckOffset() {
+      var f = groovyScriptFilter("offset == 100");
+      assertTrue(f.test(msg().offset(100L)));
+      assertFalse(f.test(msg().offset(200L)));
+    }
+
     @Test
     void canCheckTimestampMs() {
       var ts = OffsetDateTime.now();