Skip to content

Commit db30494

Browse files
committed
Add test for child TraceIdRatioBasedSampler warning
1 parent ef83131 commit db30494

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.sdk.trace.samplers;
7+
8+
import static org.junit.jupiter.api.Assertions.assertTrue;
9+
10+
import java.util.ArrayList;
11+
import java.util.List;
12+
import java.util.logging.Handler;
13+
import java.util.logging.Level;
14+
import java.util.logging.LogRecord;
15+
import java.util.logging.Logger;
16+
import org.junit.jupiter.api.Test;
17+
18+
class ParentBasedSamplerBuilderTest {
19+
20+
@Test
21+
void emitsWarningWhenTraceIdRatioBasedUsedAsChildSampler() {
22+
Logger logger = Logger.getLogger(ParentBasedSamplerBuilder.class.getName());
23+
TestLogHandler handler = new TestLogHandler();
24+
logger.addHandler(handler);
25+
26+
try {
27+
Sampler ratioSampler = Sampler.traceIdRatioBased(0.5);
28+
29+
Sampler.parentBasedBuilder(Sampler.alwaysOn()).setRemoteParentSampled(ratioSampler).build();
30+
31+
assertTrue(
32+
handler.warnings.stream()
33+
.anyMatch(
34+
msg ->
35+
msg.contains("TraceIdRatioBasedSampler is being used as a child sampler")));
36+
} finally {
37+
logger.removeHandler(handler);
38+
}
39+
}
40+
41+
static class TestLogHandler extends Handler {
42+
final List<String> warnings = new ArrayList<>();
43+
44+
@Override
45+
public void publish(LogRecord record) {
46+
if (record.getLevel().equals(Level.WARNING)) {
47+
warnings.add(record.getMessage());
48+
}
49+
}
50+
51+
@Override
52+
public void flush() {}
53+
54+
@Override
55+
public void close() {}
56+
}
57+
}

0 commit comments

Comments
 (0)