Skip to content

Commit a85112d

Browse files
committed
More tests
1 parent 6cc5cab commit a85112d

File tree

1 file changed

+125
-1
lines changed

1 file changed

+125
-1
lines changed

tests/integrations/openai/test_openai.py

Lines changed: 125 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@
77
from openai.types.create_embedding_response import Usage as EmbeddingTokenUsage
88

99
from sentry_sdk import start_transaction
10-
from sentry_sdk.integrations.openai import OpenAIIntegration
10+
from sentry_sdk.integrations.openai import (
11+
OpenAIIntegration,
12+
_calculate_chat_completion_usage,
13+
)
1114

1215
from unittest import mock # python 3.3 and above
1316

@@ -737,3 +740,124 @@ async def test_span_origin_embeddings_async(sentry_init, capture_events):
737740

738741
assert event["contexts"]["trace"]["origin"] == "manual"
739742
assert event["spans"][0]["origin"] == "auto.ai.openai"
743+
744+
745+
def test_calculate_chat_completion_usage_a():
746+
span = mock.MagicMock()
747+
748+
def count_tokens(msg):
749+
return len(str(msg))
750+
751+
response = mock.MagicMock()
752+
response.usage = mock.MagicMock()
753+
response.usage.completion_tokens = 10
754+
response.usage.prompt_tokens = 20
755+
response.usage.total_tokens = 30
756+
messages = []
757+
streaming_message_responses = []
758+
759+
with mock.patch(
760+
"sentry_sdk.integrations.openai.record_token_usage"
761+
) as mock_record_token_usage:
762+
_calculate_chat_completion_usage(
763+
messages, response, span, streaming_message_responses, count_tokens
764+
)
765+
mock_record_token_usage.assert_called_once_with(span, 20, 10, 30)
766+
767+
768+
def test_calculate_chat_completion_usage_b():
769+
span = mock.MagicMock()
770+
771+
def count_tokens(msg):
772+
return len(str(msg))
773+
774+
response = mock.MagicMock()
775+
response.usage = mock.MagicMock()
776+
response.usage.completion_tokens = 10
777+
response.usage.total_tokens = 10
778+
messages = [
779+
{"content": "one"},
780+
{"content": "two"},
781+
{"content": "three"},
782+
]
783+
streaming_message_responses = []
784+
785+
with mock.patch(
786+
"sentry_sdk.integrations.openai.record_token_usage"
787+
) as mock_record_token_usage:
788+
_calculate_chat_completion_usage(
789+
messages, response, span, streaming_message_responses, count_tokens
790+
)
791+
mock_record_token_usage.assert_called_once_with(span, 11, 10, 10)
792+
793+
794+
def test_calculate_chat_completion_usage_c():
795+
span = mock.MagicMock()
796+
797+
def count_tokens(msg):
798+
return len(str(msg))
799+
800+
response = mock.MagicMock()
801+
response.usage = mock.MagicMock()
802+
response.usage.prompt_tokens = 20
803+
response.usage.total_tokens = 20
804+
messages = []
805+
streaming_message_responses = [
806+
"one",
807+
"two",
808+
"three",
809+
]
810+
811+
with mock.patch(
812+
"sentry_sdk.integrations.openai.record_token_usage"
813+
) as mock_record_token_usage:
814+
_calculate_chat_completion_usage(
815+
messages, response, span, streaming_message_responses, count_tokens
816+
)
817+
mock_record_token_usage.assert_called_once_with(span, 20, 11, 20)
818+
819+
820+
def test_calculate_chat_completion_usage_d():
821+
span = mock.MagicMock()
822+
823+
def count_tokens(msg):
824+
return len(str(msg))
825+
826+
response = mock.MagicMock()
827+
response.usage = mock.MagicMock()
828+
response.usage.prompt_tokens = 20
829+
response.usage.total_tokens = 20
830+
response.choices = [
831+
mock.MagicMock(messge="one"),
832+
mock.MagicMock(messge="two"),
833+
mock.MagicMock(messge="three"),
834+
]
835+
messages = []
836+
streaming_message_responses = []
837+
838+
with mock.patch(
839+
"sentry_sdk.integrations.openai.record_token_usage"
840+
) as mock_record_token_usage:
841+
_calculate_chat_completion_usage(
842+
messages, response, span, streaming_message_responses, count_tokens
843+
)
844+
mock_record_token_usage.assert_called_once_with(span, 20, None, 20)
845+
846+
847+
def test_calculate_chat_completion_usage_e():
848+
span = mock.MagicMock()
849+
850+
def count_tokens(msg):
851+
return len(str(msg))
852+
853+
response = mock.MagicMock()
854+
messages = []
855+
streaming_message_responses = None
856+
857+
with mock.patch(
858+
"sentry_sdk.integrations.openai.record_token_usage"
859+
) as mock_record_token_usage:
860+
_calculate_chat_completion_usage(
861+
messages, response, span, streaming_message_responses, count_tokens
862+
)
863+
mock_record_token_usage.assert_called_once_with(span, None, None, None)

0 commit comments

Comments
 (0)