@@ -568,47 +568,48 @@ def test_reset_usage_metrics(usage, event_loop_metrics, mock_get_meter_provider)
568568 assert event_loop_metrics .accumulated_usage ["inputTokens" ] == 11
569569
570570
571- class TestLatestContextTokens :
572- """Tests for EventLoopMetrics .latest_context_tokens."""
573-
574- def test_no_invocations ( self , event_loop_metrics ):
575- assert event_loop_metrics . latest_context_tokens == 0
576-
577- def test_invocation_with_no_cycles ( self , event_loop_metrics ):
578- event_loop_metrics . reset_usage_metrics ()
579- assert event_loop_metrics . latest_context_tokens == 0
580-
581- def test_returns_last_cycle_input_tokens ( self , event_loop_metrics , mock_get_meter_provider ):
582- event_loop_metrics .reset_usage_metrics ( )
583- event_loop_metrics .start_cycle ( attributes = { "event_loop_cycle_id" : "c1" } )
584- event_loop_metrics . update_usage ( Usage ( inputTokens = 100 , outputTokens = 50 , totalTokens = 150 ))
585-
586- event_loop_metrics .start_cycle ( attributes = { "event_loop_cycle_id" : "c2" } )
587- event_loop_metrics . update_usage ( Usage ( inputTokens = 250 , outputTokens = 80 , totalTokens = 330 ))
588-
589- assert event_loop_metrics . latest_context_tokens == 250
590-
591- def test_returns_from_latest_invocation ( self , event_loop_metrics , mock_get_meter_provider ):
592- # First invocation
593- event_loop_metrics .reset_usage_metrics ()
594- event_loop_metrics .start_cycle (attributes = {"event_loop_cycle_id" : "c1" })
595- event_loop_metrics .update_usage (Usage (inputTokens = 100 , outputTokens = 50 , totalTokens = 150 ))
596-
597- # Second invocation
598- event_loop_metrics .reset_usage_metrics ()
599- event_loop_metrics .start_cycle (attributes = {"event_loop_cycle_id" : "c2" })
600- event_loop_metrics .update_usage (Usage (inputTokens = 500 , outputTokens = 80 , totalTokens = 580 ))
601-
602- assert event_loop_metrics .latest_context_tokens == 500
603-
604- def test_missing_input_tokens_key ( self , event_loop_metrics ):
605- """Returns 0 when usage dict is missing inputTokens (e.g. provider bug)."""
606- event_loop_metrics . reset_usage_metrics ()
607- invocation = event_loop_metrics .agent_invocations [ - 1 ]
608- invocation . cycles . append (
609- strands . telemetry . metrics . EventLoopCycleMetric (
610- event_loop_cycle_id = "c1" ,
611- usage = { "outputTokens" : 50 , "totalTokens" : 50 } ,
612- )
571+ def test_latest_context_tokens_no_invocations ( event_loop_metrics ) :
572+ assert event_loop_metrics .latest_context_tokens == 0
573+
574+
575+ def test_latest_context_tokens_invocation_with_no_cycles ( event_loop_metrics ):
576+ event_loop_metrics . reset_usage_metrics ()
577+ assert event_loop_metrics . latest_context_tokens == 0
578+
579+
580+ def test_latest_context_tokens_returns_last_cycle ( event_loop_metrics , mock_get_meter_provider ):
581+ event_loop_metrics . reset_usage_metrics ()
582+ event_loop_metrics .start_cycle ( attributes = { "event_loop_cycle_id" : "c1" } )
583+ event_loop_metrics .update_usage ( Usage ( inputTokens = 100 , outputTokens = 50 , totalTokens = 150 ) )
584+
585+ event_loop_metrics . start_cycle ( attributes = { "event_loop_cycle_id" : "c2" })
586+ event_loop_metrics .update_usage ( Usage ( inputTokens = 250 , outputTokens = 80 , totalTokens = 330 ) )
587+
588+ assert event_loop_metrics . latest_context_tokens == 250
589+
590+
591+ def test_latest_context_tokens_returns_from_latest_invocation ( event_loop_metrics , mock_get_meter_provider ):
592+ # First invocation
593+ event_loop_metrics .reset_usage_metrics ()
594+ event_loop_metrics .start_cycle (attributes = {"event_loop_cycle_id" : "c1" })
595+ event_loop_metrics .update_usage (Usage (inputTokens = 100 , outputTokens = 50 , totalTokens = 150 ))
596+
597+ # Second invocation
598+ event_loop_metrics .reset_usage_metrics ()
599+ event_loop_metrics .start_cycle (attributes = {"event_loop_cycle_id" : "c2" })
600+ event_loop_metrics .update_usage (Usage (inputTokens = 500 , outputTokens = 80 , totalTokens = 580 ))
601+
602+ assert event_loop_metrics .latest_context_tokens == 500
603+
604+
605+ def test_latest_context_tokens_missing_input_tokens_key ( event_loop_metrics ):
606+ """Returns 0 when usage dict is missing inputTokens (e.g. provider bug)."""
607+ event_loop_metrics .reset_usage_metrics ()
608+ invocation = event_loop_metrics . agent_invocations [ - 1 ]
609+ invocation . cycles . append (
610+ strands . telemetry . metrics . EventLoopCycleMetric (
611+ event_loop_cycle_id = "c1" ,
612+ usage = { "outputTokens" : 50 , "totalTokens" : 50 },
613613 )
614- assert event_loop_metrics .latest_context_tokens == 0
614+ )
615+ assert event_loop_metrics .latest_context_tokens == 0
0 commit comments