Skip to content

Commit f34e8b4

Browse files
committed
[Test] Added test to verify that queue client reader updates batch size metrics
1 parent 4404735 commit f34e8b4

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

logstash-core/src/main/java/org/logstash/ext/JrubyWrappedSynchronousQueueExt.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,10 @@
2323
import java.util.concurrent.ArrayBlockingQueue;
2424
import java.util.concurrent.BlockingQueue;
2525

26-
import org.jruby.*;
26+
import org.jruby.Ruby;
27+
import org.jruby.RubyClass;
28+
import org.jruby.RubyNumeric;
29+
import org.jruby.RubyString;
2730
import org.jruby.anno.JRubyClass;
2831
import org.jruby.anno.JRubyMethod;
2932
import org.jruby.runtime.ThreadContext;

logstash-core/src/test/java/org/logstash/ext/JrubyMemoryReadClientExtTest.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,19 @@
2626
import org.jruby.RubyHash;
2727
import org.jruby.runtime.ThreadContext;
2828
import org.junit.Test;
29+
import org.logstash.Event;
2930
import org.logstash.RubyTestBase;
31+
import org.logstash.RubyUtil;
3032
import org.logstash.execution.QueueBatch;
3133
import org.logstash.instrument.metrics.AbstractNamespacedMetricExt;
34+
import org.logstash.instrument.metrics.MetricKeys;
3235
import org.logstash.instrument.metrics.MockNamespacedMetric;
36+
import org.logstash.instrument.metrics.histogram.HistogramMetric;
37+
import org.logstash.instrument.metrics.histogram.HistogramSnapshot;
3338

3439
import static org.hamcrest.CoreMatchers.is;
3540
import static org.hamcrest.MatcherAssert.assertThat;
41+
import static org.junit.Assert.assertEquals;
3642

3743
/**
3844
* Tests for {@link JrubyMemoryReadClientExt}.
@@ -58,4 +64,24 @@ public void testInflightBatchesTracking() throws InterruptedException, IOExcepti
5864
client.closeBatch(batch);
5965
assertThat(client.rubyGetInflightBatches(context).size(), is(0));
6066
}
67+
68+
@Test
69+
public void givenNonEmptyQueueAndEnabledBatchSizeMetricThenHistogramContainsData() throws InterruptedException {
70+
final JrubyEventExtLibrary.RubyEvent testEvent = JrubyEventExtLibrary.RubyEvent.newRubyEvent(RubyUtil.RUBY, new Event());
71+
final BlockingQueue<JrubyEventExtLibrary.RubyEvent> queue = new ArrayBlockingQueue<>(10);
72+
queue.add(testEvent);
73+
74+
final JrubyMemoryReadClientExt client = JrubyMemoryReadClientExt.create(queue, 5, 50);
75+
76+
AbstractNamespacedMetricExt metric = MockNamespacedMetric.create();
77+
client.setPipelineMetric(metric);
78+
79+
final QueueBatch batch = client.readBatch();
80+
assertEquals(1, batch.filteredSize());
81+
82+
HistogramMetric histogram = HistogramMetric.fromRubyBase(metric, MetricKeys.BATCH_SIZE_KEY);
83+
HistogramSnapshot metricSnapshot = histogram.getValue();
84+
assertEquals(1.0, metricSnapshot.get75Percentile(), 0.0001);
85+
assertEquals(1.0, metricSnapshot.get90Percentile(), 0.0001);
86+
}
6187
}

0 commit comments

Comments
 (0)