Skip to content

Commit 2a34ca2

Browse files
haoxu07Hao Xu
andauthored
[test] Add test logic for verifying thread pool metric emitted before server shutdown during integration test. (#1505)
In production, we previously observed no state transition metrics emitted, here we add test logic to verify these metrics will be emitted for every Venice server instances. Co-authored-by: Hao Xu <[email protected]>
1 parent 28b2989 commit 2a34ca2

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

internal/venice-test-common/src/integrationTest/java/com/linkedin/venice/integration/utils/VeniceServerWrapper.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,15 @@
5151
import com.linkedin.venice.server.VeniceServerContext;
5252
import com.linkedin.venice.servicediscovery.ServiceDiscoveryAnnouncer;
5353
import com.linkedin.venice.tehuti.MetricsAware;
54+
import com.linkedin.venice.tehuti.MockTehutiReporter;
5455
import com.linkedin.venice.utils.ForkedJavaProcess;
5556
import com.linkedin.venice.utils.PropertyBuilder;
5657
import com.linkedin.venice.utils.SslUtils;
5758
import com.linkedin.venice.utils.TestUtils;
5859
import com.linkedin.venice.utils.Utils;
5960
import com.linkedin.venice.utils.VeniceProperties;
6061
import com.linkedin.venice.utils.metrics.MetricsRepositoryUtils;
62+
import io.tehuti.Metric;
6163
import io.tehuti.metrics.MetricsRepository;
6264
import java.io.File;
6365
import java.io.IOException;
@@ -78,6 +80,7 @@
7880
import org.apache.commons.io.FileUtils;
7981
import org.apache.logging.log4j.LogManager;
8082
import org.apache.logging.log4j.Logger;
83+
import org.testng.Assert;
8184

8285

8386
/**
@@ -454,12 +457,28 @@ protected void internalStart() throws Exception {
454457
@Override
455458
protected void internalStop() throws Exception {
456459
if (!forkServer) {
460+
verifyHelixParticipantServicePoolMetricsReporting(veniceServer);
457461
veniceServer.shutdown();
458462
} else {
459463
serverProcess.destroy();
460464
}
461465
}
462466

467+
private void verifyHelixParticipantServicePoolMetricsReporting(VeniceServer veniceServer) {
468+
MetricsRepository metricsRepository = veniceServer.getMetricsRepository();
469+
MockTehutiReporter reporter = new MockTehutiReporter();
470+
metricsRepository.addReporter(reporter);
471+
Metric activeThreadNumber = reporter.query(".Venice_L/F_ST_thread_pool--active_thread_number.LambdaStat");
472+
Assert.assertNotNull(activeThreadNumber);
473+
Assert.assertTrue(activeThreadNumber.value() >= 0);
474+
Metric maxThreadNumber = reporter.query(".Venice_L/F_ST_thread_pool--max_thread_number.LambdaStat");
475+
Assert.assertNotNull(maxThreadNumber);
476+
Assert.assertTrue(maxThreadNumber.value() > 0);
477+
Metric queuedTaskNumber = reporter.query(".Venice_L/F_ST_thread_pool--queued_task_number.LambdaStat");
478+
Assert.assertNotNull(queuedTaskNumber);
479+
Assert.assertTrue(queuedTaskNumber.value() >= 0);
480+
}
481+
463482
@Override
464483
protected void newProcess() throws Exception {
465484
if (forkServer) {

internal/venice-test-common/src/main/java/com/linkedin/venice/tehuti/MockTehutiReporter.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ public MockTehutiReporter() {
1818

1919
@Override
2020
public void init(List<TehutiMetric> metrics) {
21+
// Ensure lately added reporter has all metrics.
22+
for (TehutiMetric metric: metrics) {
23+
this.metrics.put(metric.name(), metric);
24+
}
2125
}
2226

2327
@Override

0 commit comments

Comments
 (0)