Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 66d84a3

Browse files
test: fix BackgroundConsumer error log (#814)
* fixed null pointer * added test * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * removed unneeded file --------- Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
1 parent 8da1fa9 commit 66d84a3

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

google/api_core/bidi.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -664,7 +664,8 @@ def _thread_main(self, ready):
664664
_LOGGER.debug("waiting for recv.")
665665
response = self._bidi_rpc.recv()
666666
_LOGGER.debug("recved response.")
667-
self._on_response(response)
667+
if self._on_response is not None:
668+
self._on_response(response)
668669

669670
except exceptions.GoogleAPICallError as exc:
670671
_LOGGER.debug(

tests/unit/test_bidi.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import logging
1717
import queue
1818
import threading
19+
import time
1920

2021
try:
2122
from unittest import mock
@@ -894,3 +895,26 @@ def close_side_effect():
894895

895896
# calling stop twice should not result in an error.
896897
consumer.stop()
898+
899+
def test_stop_error_logs(self, caplog):
900+
"""
901+
Closing the client should result in no internal error logs
902+
903+
https://github.com/googleapis/python-api-core/issues/788
904+
"""
905+
caplog.set_level(logging.DEBUG)
906+
bidi_rpc = mock.create_autospec(bidi.BidiRpc, instance=True)
907+
bidi_rpc.is_active = True
908+
on_response = mock.Mock(spec=["__call__"])
909+
910+
consumer = bidi.BackgroundConsumer(bidi_rpc, on_response)
911+
912+
consumer.start()
913+
consumer.stop()
914+
# let the background thread run for a while before exiting
915+
time.sleep(0.1)
916+
bidi_rpc.is_active = False
917+
# running thread should not result in error logs
918+
error_logs = [r.message for r in caplog.records if r.levelname == "ERROR"]
919+
assert not error_logs, f"Found unexpected ERROR logs: {error_logs}"
920+
bidi_rpc.is_active = False

0 commit comments

Comments
 (0)