Skip to content

Commit a6e602f

Browse files
committed
Add test guards against Python3.7 for which OpenTelemetry is unavailable + address test feedback
1 parent 215613f commit a6e602f

File tree

2 files changed

+36
-0
lines changed

2 files changed

+36
-0
lines changed

google/cloud/spanner_v1/_opentelemetry_tracing.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,9 @@ def get_tracer(tracer_provider=None):
5757

5858
@contextmanager
5959
def trace_call(name, session=None, extra_attributes=None, observability_options=None):
60+
if session:
61+
session._last_use_time = datetime.now()
62+
6063
if not (HAS_OPENTELEMETRY_INSTALLED and name):
6164
# Empty context manager. Users will have to check if the generated value is None or a span
6265
yield None

tests/unit/test_pool.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
OpenTelemetryBase,
2525
StatusCode,
2626
enrich_with_otel_scope,
27+
HAS_OPENTELEMETRY_INSTALLED,
2728
)
2829

2930

@@ -232,6 +233,9 @@ def test_get_non_expired(self):
232233
self.assertFalse(pool._sessions.full())
233234

234235
def test_spans_bind_get(self):
236+
if not HAS_OPENTELEMETRY_INSTALLED:
237+
return
238+
235239
# This tests retrieving 1 out of 4 sessions from the session pool.
236240
pool = self._make_one(size=4)
237241
database = _Database("name")
@@ -271,6 +275,9 @@ def test_spans_bind_get(self):
271275
self.assertSpanEvents("pool.Get", wantEventNames, span_list[-1])
272276

273277
def test_spans_bind_get_empty_pool(self):
278+
if not HAS_OPENTELEMETRY_INSTALLED:
279+
return
280+
274281
# Tests trying to invoke pool.get() from an empty pool.
275282
pool = self._make_one(size=0)
276283
database = _Database("name")
@@ -312,6 +319,9 @@ def test_spans_bind_get_empty_pool(self):
312319
assert got_all_events == want_all_events
313320

314321
def test_spans_pool_bind(self):
322+
if not HAS_OPENTELEMETRY_INSTALLED:
323+
return
324+
315325
# Tests the exception generated from invoking pool.bind when
316326
# you have an empty pool.
317327
pool = self._make_one(size=1)
@@ -524,6 +534,9 @@ def test_get_empty(self):
524534
self.assertTrue(pool._sessions.empty())
525535

526536
def test_spans_get_empty_pool(self):
537+
if not HAS_OPENTELEMETRY_INSTALLED:
538+
return
539+
527540
# This scenario tests a pool that hasn't been filled up
528541
# and pool.get() acquires from a pool, waiting for a session
529542
# to become available.
@@ -877,6 +890,23 @@ def test_put_full(self):
877890

878891
self.assertTrue(pool._sessions.full())
879892

893+
def test_spans_put_full(self):
894+
if not HAS_OPENTELEMETRY_INSTALLED:
895+
return
896+
897+
import queue
898+
899+
pool = self._make_one(size=4)
900+
database = _Database("name")
901+
SESSIONS = [_Session(database)] * 4
902+
database._sessions.extend(SESSIONS)
903+
pool.bind(database)
904+
905+
with self.assertRaises(queue.Full):
906+
pool.put(_Session(database))
907+
908+
self.assertTrue(pool._sessions.full())
909+
880910
span_list = self.get_finished_spans()
881911
got_span_names = [span.name for span in span_list]
882912
want_span_names = ["CloudSpanner.PingingPool.BatchCreateSessions"]
@@ -991,6 +1021,9 @@ def test_ping_oldest_stale_and_not_exists(self):
9911021
self.assertNoSpans()
9921022

9931023
def test_spans_get_and_leave_empty_pool(self):
1024+
if not HAS_OPENTELEMETRY_INSTALLED:
1025+
return
1026+
9941027
# This scenario tests the spans generated from pulling a span
9951028
# out the pool and leaving it empty.
9961029
pool = self._make_one()

0 commit comments

Comments
 (0)