@@ -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