Skip to content

Commit 4bfeb56

Browse files
committed
opentelemetry: Add non-generated server tests
Add unit tests for non-generated server method metrics. Verify that both serverCallMethodResolved() and serverCallStarted() record the method name as "other" when isSampledToLocalTracing is false.
1 parent 36680b1 commit 4bfeb56

1 file changed

Lines changed: 90 additions & 0 deletions

File tree

opentelemetry/src/test/java/io/grpc/opentelemetry/OpenTelemetryMetricsModuleTest.java

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1769,6 +1769,96 @@ public void serverMetrics_methodResolvedBeforeStreamClosed_generatedMethodRecord
17691769
.hasAttributes(serverAttributes))));
17701770
}
17711771

1772+
@Test
1773+
public void serverMetrics_methodResolvedBeforeStreamClosed_nonGeneratedMethodRecordsOther() {
1774+
MethodDescriptor<String, String> nonGeneratedMethod =
1775+
method.toBuilder().setSampledToLocalTracing(false).build();
1776+
OpenTelemetryMetricsResource resource = GrpcOpenTelemetry.createMetricInstruments(testMeter,
1777+
enabledMetricsMap, disableDefaultMetrics);
1778+
OpenTelemetryMetricsModule module = newOpenTelemetryMetricsModule(resource);
1779+
ServerStreamTracer.Factory tracerFactory = module.getServerTracerFactory();
1780+
ServerStreamTracer tracer =
1781+
tracerFactory.newServerStreamTracer(nonGeneratedMethod.getFullMethodName(), new Metadata());
1782+
1783+
((ServerCallMethodListener) tracer).serverCallMethodResolved(nonGeneratedMethod);
1784+
fakeClock.forwardTime(10, MILLISECONDS);
1785+
tracer.streamClosed(Status.CANCELLED);
1786+
1787+
io.opentelemetry.api.common.Attributes serverAttributes =
1788+
io.opentelemetry.api.common.Attributes.of(
1789+
METHOD_KEY, "other",
1790+
STATUS_KEY, Code.CANCELLED.toString());
1791+
1792+
assertThat(openTelemetryTesting.getMetrics())
1793+
.anySatisfy(
1794+
metric ->
1795+
assertThat(metric)
1796+
.hasName(SERVER_CALL_DURATION)
1797+
.hasUnit("s")
1798+
.hasHistogramSatisfying(
1799+
histogram ->
1800+
histogram.hasPointsSatisfying(
1801+
point ->
1802+
point
1803+
.hasCount(1)
1804+
.hasSum(0.01)
1805+
.hasAttributes(serverAttributes))));
1806+
}
1807+
1808+
@Test
1809+
public void serverMetrics_serverCallStarted_nonGeneratedMethodRecordsOther() {
1810+
MethodDescriptor<String, String> nonGeneratedMethod =
1811+
method.toBuilder().setSampledToLocalTracing(false).build();
1812+
OpenTelemetryMetricsResource resource = GrpcOpenTelemetry.createMetricInstruments(testMeter,
1813+
enabledMetricsMap, disableDefaultMetrics);
1814+
OpenTelemetryMetricsModule module = newOpenTelemetryMetricsModule(resource);
1815+
ServerStreamTracer.Factory tracerFactory = module.getServerTracerFactory();
1816+
ServerStreamTracer tracer =
1817+
tracerFactory.newServerStreamTracer(nonGeneratedMethod.getFullMethodName(), new Metadata());
1818+
tracer.serverCallStarted(
1819+
new CallInfo<>(nonGeneratedMethod, Attributes.EMPTY, null));
1820+
1821+
io.opentelemetry.api.common.Attributes startedAttributes =
1822+
io.opentelemetry.api.common.Attributes.of(METHOD_KEY, "other");
1823+
1824+
assertThat(openTelemetryTesting.getMetrics())
1825+
.anySatisfy(
1826+
metric ->
1827+
assertThat(metric)
1828+
.hasName(SERVER_CALL_COUNT)
1829+
.hasUnit("{call}")
1830+
.hasLongSumSatisfying(
1831+
longSum ->
1832+
longSum.hasPointsSatisfying(
1833+
point ->
1834+
point
1835+
.hasAttributes(startedAttributes)
1836+
.hasValue(1))));
1837+
1838+
fakeClock.forwardTime(10, MILLISECONDS);
1839+
tracer.streamClosed(Status.CANCELLED);
1840+
1841+
io.opentelemetry.api.common.Attributes closedAttributes =
1842+
io.opentelemetry.api.common.Attributes.of(
1843+
METHOD_KEY, "other",
1844+
STATUS_KEY, Code.CANCELLED.toString());
1845+
1846+
assertThat(openTelemetryTesting.getMetrics())
1847+
.anySatisfy(
1848+
metric ->
1849+
assertThat(metric)
1850+
.hasName(SERVER_CALL_DURATION)
1851+
.hasUnit("s")
1852+
.hasHistogramSatisfying(
1853+
histogram ->
1854+
histogram.hasPointsSatisfying(
1855+
point ->
1856+
point
1857+
.hasCount(1)
1858+
.hasSum(0.01)
1859+
.hasAttributes(closedAttributes))));
1860+
}
1861+
17721862
@Test
17731863
public void targetAttributeFilter_notSet_usesOriginalTarget() {
17741864
// Test that when no filter is set, the original target is used

0 commit comments

Comments
 (0)