@@ -151,6 +151,9 @@ def matches(self, scope: Scope) -> tuple[Match, Scope]:
151151 return super ().matches (scope )
152152
153153
154+ SCOPE = "opentelemetry.instrumentation.fastapi"
155+
156+
154157class TestBaseFastAPI (TestBase ):
155158 def _create_app (self ):
156159 app = self ._create_fastapi_app ()
@@ -454,7 +457,7 @@ def test_instrument_app_with_instrument(self):
454457 self .assertIn ("GET /foobar" , span .name )
455458 self .assertEqual (
456459 span .instrumentation_scope .name ,
457- "opentelemetry.instrumentation.fastapi" ,
460+ SCOPE ,
458461 )
459462
460463 def test_uninstrument_app (self ):
@@ -525,96 +528,66 @@ def test_fastapi_metrics(self):
525528 self ._client .get ("/foobar" )
526529 self ._client .get ("/foobar" )
527530 self ._client .get ("/foobar" )
528- metrics_list = self .memory_metrics_reader .get_metrics_data ()
529531 number_data_point_seen = False
530532 histogram_data_point_seen = False
531- self .assertTrue (len (metrics_list .resource_metrics ) == 1 )
532- for resource_metric in metrics_list .resource_metrics :
533- self .assertTrue (len (resource_metric .scope_metrics ) == 1 )
534- for scope_metric in resource_metric .scope_metrics :
535- self .assertEqual (
536- scope_metric .scope .name ,
537- "opentelemetry.instrumentation.fastapi" ,
538- )
539- self .assertTrue (len (scope_metric .metrics ) == 3 )
540- for metric in scope_metric .metrics :
541- self .assertIn (metric .name , _expected_metric_names_old )
542- data_points = list (metric .data .data_points )
543- self .assertEqual (len (data_points ), 1 )
544- for point in data_points :
545- if isinstance (point , HistogramDataPoint ):
546- self .assertEqual (point .count , 3 )
547- histogram_data_point_seen = True
548- if isinstance (point , NumberDataPoint ):
549- number_data_point_seen = True
550- for attr in point .attributes :
551- self .assertIn (
552- attr , _recommended_attrs_old [metric .name ]
553- )
533+ metrics = self .get_sorted_metrics (SCOPE )
534+ self .assertTrue (len (metrics ) == 3 )
535+ for metric in metrics :
536+ self .assertIn (metric .name , _expected_metric_names_old )
537+ data_points = list (metric .data .data_points )
538+ self .assertEqual (len (data_points ), 1 )
539+ for point in data_points :
540+ if isinstance (point , HistogramDataPoint ):
541+ self .assertEqual (point .count , 3 )
542+ histogram_data_point_seen = True
543+ if isinstance (point , NumberDataPoint ):
544+ number_data_point_seen = True
545+ for attr in point .attributes :
546+ self .assertIn (attr , _recommended_attrs_old [metric .name ])
554547 self .assertTrue (number_data_point_seen and histogram_data_point_seen )
555548
556549 def test_fastapi_metrics_new_semconv (self ):
557550 self ._client .get ("/foobar" )
558551 self ._client .get ("/foobar" )
559552 self ._client .get ("/foobar" )
560- metrics_list = self .memory_metrics_reader .get_metrics_data ()
561553 number_data_point_seen = False
562554 histogram_data_point_seen = False
563- self .assertTrue (len (metrics_list .resource_metrics ) == 1 )
564- for resource_metric in metrics_list .resource_metrics :
565- self .assertTrue (len (resource_metric .scope_metrics ) == 1 )
566- for scope_metric in resource_metric .scope_metrics :
567- self .assertEqual (
568- scope_metric .scope .name ,
569- "opentelemetry.instrumentation.fastapi" ,
570- )
571- self .assertTrue (len (scope_metric .metrics ) == 3 )
572- for metric in scope_metric .metrics :
573- self .assertIn (metric .name , _expected_metric_names_new )
574- data_points = list (metric .data .data_points )
575- self .assertEqual (len (data_points ), 1 )
576- for point in data_points :
577- if isinstance (point , HistogramDataPoint ):
578- self .assertEqual (point .count , 3 )
579- histogram_data_point_seen = True
580- if isinstance (point , NumberDataPoint ):
581- number_data_point_seen = True
582- for attr in point .attributes :
583- self .assertIn (
584- attr , _recommended_attrs_new [metric .name ]
585- )
555+ metrics = self .get_sorted_metrics (SCOPE )
556+ self .assertTrue (len (metrics ) == 3 )
557+ for metric in metrics :
558+ self .assertIn (metric .name , _expected_metric_names_new )
559+ data_points = list (metric .data .data_points )
560+ self .assertEqual (len (data_points ), 1 )
561+ for point in data_points :
562+ if isinstance (point , HistogramDataPoint ):
563+ self .assertEqual (point .count , 3 )
564+ histogram_data_point_seen = True
565+ if isinstance (point , NumberDataPoint ):
566+ number_data_point_seen = True
567+ for attr in point .attributes :
568+ self .assertIn (attr , _recommended_attrs_new [metric .name ])
586569 self .assertTrue (number_data_point_seen and histogram_data_point_seen )
587570
588571 def test_fastapi_metrics_both_semconv (self ):
589572 self ._client .get ("/foobar" )
590573 self ._client .get ("/foobar" )
591574 self ._client .get ("/foobar" )
592- metrics_list = self .memory_metrics_reader .get_metrics_data ()
593575 number_data_point_seen = False
594576 histogram_data_point_seen = False
595- self .assertTrue (len (metrics_list .resource_metrics ) == 1 )
596- for resource_metric in metrics_list .resource_metrics :
597- self .assertTrue (len (resource_metric .scope_metrics ) == 1 )
598- for scope_metric in resource_metric .scope_metrics :
599- self .assertEqual (
600- scope_metric .scope .name ,
601- "opentelemetry.instrumentation.fastapi" ,
602- )
603- self .assertTrue (len (scope_metric .metrics ) == 5 )
604- for metric in scope_metric .metrics :
605- self .assertIn (metric .name , _expected_metric_names_both )
606- data_points = list (metric .data .data_points )
607- self .assertEqual (len (data_points ), 1 )
608- for point in data_points :
609- if isinstance (point , HistogramDataPoint ):
610- self .assertEqual (point .count , 3 )
611- histogram_data_point_seen = True
612- if isinstance (point , NumberDataPoint ):
613- number_data_point_seen = True
614- for attr in point .attributes :
615- self .assertIn (
616- attr , _recommended_attrs_both [metric .name ]
617- )
577+ metrics = self .get_sorted_metrics (SCOPE )
578+ self .assertTrue (len (metrics ) == 5 )
579+ for metric in metrics :
580+ self .assertIn (metric .name , _expected_metric_names_both )
581+ data_points = list (metric .data .data_points )
582+ self .assertEqual (len (data_points ), 1 )
583+ for point in data_points :
584+ if isinstance (point , HistogramDataPoint ):
585+ self .assertEqual (point .count , 3 )
586+ histogram_data_point_seen = True
587+ if isinstance (point , NumberDataPoint ):
588+ number_data_point_seen = True
589+ for attr in point .attributes :
590+ self .assertIn (attr , _recommended_attrs_both [metric .name ])
618591 self .assertTrue (number_data_point_seen and histogram_data_point_seen )
619592
620593 def test_basic_metric_success (self ):
@@ -638,10 +611,8 @@ def test_basic_metric_success(self):
638611 HTTP_FLAVOR : "1.1" ,
639612 HTTP_SERVER_NAME : "testserver" ,
640613 }
641- metrics_list = self .memory_metrics_reader .get_metrics_data ()
642- for metric in (
643- metrics_list .resource_metrics [0 ].scope_metrics [0 ].metrics
644- ):
614+ metrics = self .get_sorted_metrics (SCOPE )
615+ for metric in metrics :
645616 for point in list (metric .data .data_points ):
646617 if isinstance (point , HistogramDataPoint ):
647618 self .assertDictEqual (
@@ -672,10 +643,8 @@ def test_basic_metric_success_new_semconv(self):
672643 HTTP_REQUEST_METHOD : "GET" ,
673644 URL_SCHEME : "https" ,
674645 }
675- metrics_list = self .memory_metrics_reader .get_metrics_data ()
676- for metric in (
677- metrics_list .resource_metrics [0 ].scope_metrics [0 ].metrics
678- ):
646+ metrics = self .get_sorted_metrics (SCOPE )
647+ for metric in metrics :
679648 for point in list (metric .data .data_points ):
680649 if isinstance (point , HistogramDataPoint ):
681650 self .assertDictEqual (
@@ -729,10 +698,8 @@ def test_basic_metric_success_both_semconv(self):
729698 HTTP_REQUEST_METHOD : "GET" ,
730699 URL_SCHEME : "https" ,
731700 }
732- metrics_list = self .memory_metrics_reader .get_metrics_data ()
733- for metric in (
734- metrics_list .resource_metrics [0 ].scope_metrics [0 ].metrics
735- ):
701+ metrics = self .get_sorted_metrics (SCOPE )
702+ for metric in metrics :
736703 for point in list (metric .data .data_points ):
737704 if isinstance (point , HistogramDataPoint ):
738705 self .assertEqual (point .count , 1 )
@@ -803,10 +770,8 @@ def test_basic_metric_nonstandard_http_method_success(self):
803770 HTTP_FLAVOR : "1.1" ,
804771 HTTP_SERVER_NAME : "testserver" ,
805772 }
806- metrics_list = self .memory_metrics_reader .get_metrics_data ()
807- for metric in (
808- metrics_list .resource_metrics [0 ].scope_metrics [0 ].metrics
809- ):
773+ metrics = self .get_sorted_metrics (SCOPE )
774+ for metric in metrics :
810775 for point in list (metric .data .data_points ):
811776 if isinstance (point , HistogramDataPoint ):
812777 self .assertDictEqual (
@@ -837,10 +802,8 @@ def test_basic_metric_nonstandard_http_method_success_new_semconv(self):
837802 HTTP_REQUEST_METHOD : "_OTHER" ,
838803 URL_SCHEME : "https" ,
839804 }
840- metrics_list = self .memory_metrics_reader .get_metrics_data ()
841- for metric in (
842- metrics_list .resource_metrics [0 ].scope_metrics [0 ].metrics
843- ):
805+ metrics = self .get_sorted_metrics (SCOPE )
806+ for metric in metrics :
844807 for point in list (metric .data .data_points ):
845808 if isinstance (point , HistogramDataPoint ):
846809 self .assertDictEqual (
@@ -894,10 +857,8 @@ def test_basic_metric_nonstandard_http_method_success_both_semconv(self):
894857 HTTP_REQUEST_METHOD : "_OTHER" ,
895858 URL_SCHEME : "https" ,
896859 }
897- metrics_list = self .memory_metrics_reader .get_metrics_data ()
898- for metric in (
899- metrics_list .resource_metrics [0 ].scope_metrics [0 ].metrics
900- ):
860+ metrics = self .get_sorted_metrics (SCOPE )
861+ for metric in metrics :
901862 for point in list (metric .data .data_points ):
902863 if isinstance (point , HistogramDataPoint ):
903864 self .assertEqual (point .count , 1 )
@@ -955,10 +916,8 @@ def test_basic_post_request_metric_success(self):
955916 duration = max (round ((default_timer () - start ) * 1000 ), 0 )
956917 response_size = int (response .headers .get ("content-length" ))
957918 request_size = int (response .request .headers .get ("content-length" ))
958- metrics_list = self .memory_metrics_reader .get_metrics_data ()
959- for metric in (
960- metrics_list .resource_metrics [0 ].scope_metrics [0 ].metrics
961- ):
919+ metrics = self .get_sorted_metrics (SCOPE )
920+ for metric in metrics :
962921 for point in list (metric .data .data_points ):
963922 if isinstance (point , HistogramDataPoint ):
964923 self .assertEqual (point .count , 1 )
@@ -980,10 +939,8 @@ def test_basic_post_request_metric_success_new_semconv(self):
980939 duration_s = max (default_timer () - start , 0 )
981940 response_size = int (response .headers .get ("content-length" ))
982941 request_size = int (response .request .headers .get ("content-length" ))
983- metrics_list = self .memory_metrics_reader .get_metrics_data ()
984- for metric in (
985- metrics_list .resource_metrics [0 ].scope_metrics [0 ].metrics
986- ):
942+ metrics = self .get_sorted_metrics (SCOPE )
943+ for metric in metrics :
987944 for point in list (metric .data .data_points ):
988945 if isinstance (point , HistogramDataPoint ):
989946 self .assertEqual (point .count , 1 )
@@ -1008,10 +965,8 @@ def test_basic_post_request_metric_success_both_semconv(self):
1008965 duration_s = max (default_timer () - start , 0 )
1009966 response_size = int (response .headers .get ("content-length" ))
1010967 request_size = int (response .request .headers .get ("content-length" ))
1011- metrics_list = self .memory_metrics_reader .get_metrics_data ()
1012- for metric in (
1013- metrics_list .resource_metrics [0 ].scope_metrics [0 ].metrics
1014- ):
968+ metrics = self .get_sorted_metrics (SCOPE )
969+ for metric in metrics :
1015970 for point in list (metric .data .data_points ):
1016971 if isinstance (point , HistogramDataPoint ):
1017972 self .assertEqual (point .count , 1 )
@@ -1036,10 +991,8 @@ def test_metric_uninstrument_app(self):
1036991 self ._client .get ("/foobar" )
1037992 self ._instrumentor .uninstrument_app (self ._app )
1038993 self ._client .get ("/foobar" )
1039- metrics_list = self .memory_metrics_reader .get_metrics_data ()
1040- for metric in (
1041- metrics_list .resource_metrics [0 ].scope_metrics [0 ].metrics
1042- ):
994+ metrics = self .get_sorted_metrics (SCOPE )
995+ for metric in metrics :
1043996 for point in list (metric .data .data_points ):
1044997 if isinstance (point , HistogramDataPoint ):
1045998 self .assertEqual (point .count , 1 )
@@ -1053,10 +1006,8 @@ def test_metric_uninstrument(self):
10531006 self ._instrumentor .uninstrument ()
10541007 self ._client .get ("/foobar" )
10551008
1056- metrics_list = self .memory_metrics_reader .get_metrics_data ()
1057- for metric in (
1058- metrics_list .resource_metrics [0 ].scope_metrics [0 ].metrics
1059- ):
1009+ metrics = self .get_sorted_metrics (SCOPE )
1010+ for metric in metrics :
10601011 for point in list (metric .data .data_points ):
10611012 if isinstance (point , HistogramDataPoint ):
10621013 self .assertEqual (point .count , 1 )
0 commit comments