@@ -900,11 +900,23 @@ mod test_prefixes {
900900#[ cfg( test) ]
901901mod test_simple_metricsregistry_trait {
902902 use super :: create_test_drt;
903+ use super :: prometheus_names:: nats as nats_metrics;
903904 use super :: * ;
904- use super :: prometheus_names:: nats as nats_metrics;
905905 use prometheus:: Counter ;
906906 use std:: sync:: Arc ;
907907
908+ /// Filters out all NATS metrics from Prometheus output for test comparisons.
909+ fn filter_out_nats_metrics ( input : & str ) -> String {
910+ input
911+ . lines ( )
912+ . filter ( |line| {
913+ !line. starts_with ( & format ! ( "dynamo_component_{}" , nats_metrics:: PREFIX ) )
914+ && !line. trim ( ) . is_empty ( )
915+ } )
916+ . collect :: < Vec < _ > > ( )
917+ . join ( "\n " )
918+ }
919+
908920 #[ test]
909921 fn test_prometheusfactory_using_metrics_registry_trait ( ) {
910922 // Setup real DRT and registry using the test-friendly constructor
@@ -925,15 +937,17 @@ mod test_simple_metricsregistry_trait {
925937 let epsilon = 0.01 ;
926938 assert ! ( ( counter. get( ) - 123.456789 ) . abs( ) < epsilon) ;
927939
928- let endpoint_output = endpoint. prometheus_metrics_fmt ( ) . unwrap ( ) ;
940+ let endpoint_output_raw = endpoint. prometheus_metrics_fmt ( ) . unwrap ( ) ;
929941 println ! ( "Endpoint output:" ) ;
930- println ! ( "{}" , endpoint_output) ;
942+ println ! ( "{}" , endpoint_output_raw) ;
943+
944+ // Filter out NATS service metrics for test comparison
945+ let endpoint_output = filter_out_nats_metrics ( & endpoint_output_raw) ;
931946
932947 let expected_endpoint_output = format ! (
933948 r#"# HELP dynamo_component_testcounter A test counter
934949# TYPE dynamo_component_testcounter counter
935- dynamo_component_testcounter{{dynamo_component="testcomponent",dynamo_endpoint="testendpoint",dynamo_namespace="testnamespace"}} 123.456789
936- "#
950+ dynamo_component_testcounter{{dynamo_component="testcomponent",dynamo_endpoint="testendpoint",dynamo_namespace="testnamespace"}} 123.456789"#
937951 ) ;
938952
939953 assert_eq ! (
@@ -953,18 +967,20 @@ dynamo_component_testcounter{{dynamo_component="testcomponent",dynamo_endpoint="
953967 assert_eq ! ( gauge. get( ) , 50000.0 ) ;
954968
955969 // Test Prometheus format output for Component (gauge + histogram)
956- let component_output = component. prometheus_metrics_fmt ( ) . unwrap ( ) ;
970+ let component_output_raw = component. prometheus_metrics_fmt ( ) . unwrap ( ) ;
957971 println ! ( "Component output:" ) ;
958- println ! ( "{}" , component_output) ;
972+ println ! ( "{}" , component_output_raw) ;
973+
974+ // Filter out NATS service metrics for test comparison
975+ let component_output = filter_out_nats_metrics ( & component_output_raw) ;
959976
960977 let expected_component_output = format ! (
961978 r#"# HELP dynamo_component_testcounter A test counter
962979# TYPE dynamo_component_testcounter counter
963980dynamo_component_testcounter{{dynamo_component="testcomponent",dynamo_endpoint="testendpoint",dynamo_namespace="testnamespace"}} 123.456789
964981# HELP dynamo_component_testgauge A test gauge
965982# TYPE dynamo_component_testgauge gauge
966- dynamo_component_testgauge{{dynamo_component="testcomponent",dynamo_namespace="testnamespace"}} 50000
967- "#
983+ dynamo_component_testgauge{{dynamo_component="testcomponent",dynamo_namespace="testnamespace"}} 50000"#
968984 ) ;
969985
970986 assert_eq ! (
@@ -983,9 +999,12 @@ dynamo_component_testgauge{{dynamo_component="testcomponent",dynamo_namespace="t
983999 assert_eq ! ( intcounter. get( ) , 12345 ) ;
9841000
9851001 // Test Prometheus format output for Namespace (int_counter + gauge + histogram)
986- let namespace_output = namespace. prometheus_metrics_fmt ( ) . unwrap ( ) ;
1002+ let namespace_output_raw = namespace. prometheus_metrics_fmt ( ) . unwrap ( ) ;
9871003 println ! ( "Namespace output:" ) ;
988- println ! ( "{}" , namespace_output) ;
1004+ println ! ( "{}" , namespace_output_raw) ;
1005+
1006+ // Filter out NATS service metrics for test comparison
1007+ let namespace_output = filter_out_nats_metrics ( & namespace_output_raw) ;
9891008
9901009 let expected_namespace_output = format ! (
9911010 r#"# HELP dynamo_component_testcounter A test counter
@@ -996,8 +1015,7 @@ dynamo_component_testcounter{{dynamo_component="testcomponent",dynamo_endpoint="
9961015dynamo_component_testgauge{{dynamo_component="testcomponent",dynamo_namespace="testnamespace"}} 50000
9971016# HELP dynamo_component_testintcounter A test int counter
9981017# TYPE dynamo_component_testintcounter counter
999- dynamo_component_testintcounter{{dynamo_namespace="testnamespace"}} 12345
1000- "#
1018+ dynamo_component_testintcounter{{dynamo_namespace="testnamespace"}} 12345"#
10011019 ) ;
10021020
10031021 assert_eq ! (
@@ -1063,16 +1081,7 @@ dynamo_component_testintcounter{{dynamo_namespace="testnamespace"}} 12345
10631081 println ! ( "DRT output:" ) ;
10641082 println ! ( "{}" , drt_output) ;
10651083
1066- // Helper function to filter out NATS client metrics
1067- fn filter_out_nats_metrics ( metrics : & str ) -> String {
1068- metrics
1069- . lines ( )
1070- . filter ( |line| !line. contains ( nats_metrics:: PREFIX ) && !line. trim ( ) . is_empty ( ) )
1071- . collect :: < Vec < _ > > ( )
1072- . join ( "\n " )
1073- }
1074-
1075- // Filter out NATS client metrics for comparison
1084+ // Filter out all NATS metrics for comparison
10761085 let filtered_drt_output = filter_out_nats_metrics ( & drt_output) ;
10771086
10781087 let expected_drt_output = format ! (
@@ -1144,7 +1153,7 @@ dynamo_component_testintgaugevec{{instance="server2",service="api",status="inact
11441153 // Check for specific NATS client metric names (without values)
11451154 let nats_metric_names: Vec < & str > = nats_metrics
11461155 . iter ( )
1147- . filter ( |line| line. starts_with ( & format ! ( "dynamo_component_{}_ " , nats_metrics:: PREFIX ) ) )
1156+ . filter ( |line| line. starts_with ( & format ! ( "dynamo_component_{}" , nats_metrics:: PREFIX ) ) )
11481157 . map ( |line| line. split ( '{' ) . next ( ) . unwrap_or ( line) )
11491158 . collect ( ) ;
11501159
0 commit comments