Skip to content

Commit dfcbdd6

Browse files
committed
chore: changes directory name from 'test' to 'tests'
1 parent d24df48 commit dfcbdd6

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+14869
-0
lines changed

packages/sqlalchemy-spanner/tests/__init__.py

Whitespace-only changes.
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
# Copyright 2021 Google LLC
2+
#
3+
# Use of this source code is governed by a BSD-style
4+
# license that can be found in the LICENSE file or at
5+
# https://developers.google.com/open-source/licenses/bsd
6+
7+
8+
import configparser
9+
import mock
10+
import os
11+
from sqlalchemy.testing import fixtures
12+
13+
try:
14+
from opentelemetry import trace
15+
from opentelemetry.sdk.trace import TracerProvider
16+
from opentelemetry.sdk.trace.export import SimpleSpanProcessor
17+
from opentelemetry.sdk.trace.export.in_memory_span_exporter import (
18+
InMemorySpanExporter,
19+
)
20+
from opentelemetry.trace.status import StatusCode
21+
22+
trace.set_tracer_provider(TracerProvider())
23+
24+
HAS_OPENTELEMETRY_INSTALLED = True
25+
except ImportError:
26+
HAS_OPENTELEMETRY_INSTALLED = False
27+
28+
StatusCode = mock.Mock()
29+
30+
_TEST_OT_EXPORTER = None
31+
_TEST_OT_PROVIDER_INITIALIZED = False
32+
33+
34+
PROJECT = os.getenv(
35+
"GOOGLE_CLOUD_PROJECT",
36+
os.getenv("PROJECT_ID", "emulator-test-project"),
37+
)
38+
DB_URL = (
39+
f"spanner:///projects/{PROJECT}/instances/"
40+
"sqlalchemy-dialect-test/databases/compliance-test"
41+
)
42+
43+
44+
def get_db_url():
45+
config = configparser.ConfigParser()
46+
if os.path.exists("test.cfg"):
47+
config.read("test.cfg")
48+
else:
49+
config.read("setup.cfg")
50+
return config.get("db", "default", fallback=DB_URL)
51+
52+
53+
def get_test_ot_exporter():
54+
global _TEST_OT_EXPORTER
55+
56+
if _TEST_OT_EXPORTER is None:
57+
_TEST_OT_EXPORTER = InMemorySpanExporter()
58+
return _TEST_OT_EXPORTER
59+
60+
61+
def use_test_ot_exporter():
62+
global _TEST_OT_PROVIDER_INITIALIZED
63+
64+
if _TEST_OT_PROVIDER_INITIALIZED:
65+
return
66+
67+
provider = trace.get_tracer_provider()
68+
if not hasattr(provider, "add_span_processor"):
69+
return
70+
provider.add_span_processor(SimpleSpanProcessor(get_test_ot_exporter()))
71+
_TEST_OT_PROVIDER_INITIALIZED = True
72+
73+
74+
def get_project():
75+
return PROJECT
76+
77+
78+
class OpenTelemetryBase(fixtures.TestBase):
79+
@classmethod
80+
def setup_class(cls):
81+
if HAS_OPENTELEMETRY_INSTALLED:
82+
use_test_ot_exporter()
83+
cls.ot_exporter = get_test_ot_exporter()
84+
85+
def teardown_method(self):
86+
if HAS_OPENTELEMETRY_INSTALLED:
87+
self.ot_exporter.clear()
88+
89+
def assertNoSpans(self):
90+
if HAS_OPENTELEMETRY_INSTALLED:
91+
span_list = self.ot_exporter.get_finished_spans()
92+
self.assertEqual(len(span_list), 0)
93+
94+
def assertSpanAttributes(
95+
self, name, status=StatusCode.OK, attributes=None, span=None
96+
):
97+
if HAS_OPENTELEMETRY_INSTALLED:
98+
if not span:
99+
span_list = self.ot_exporter.get_finished_spans()
100+
self.assertEqual(len(span_list), 1)
101+
span = span_list[0]
102+
103+
self.assertEqual(span.name, name)
104+
self.assertEqual(span.status.status_code, status)
105+
self.assertEqual(dict(span.attributes), attributes)

0 commit comments

Comments
 (0)