Skip to content

Commit 27dfff6

Browse files
author
Jesse Whitehouse
committed
(7/x) Smoke test failed for 1.4 because receive_do_connect only writes
self.catalog if the version is < 1.4. This means that you _must_ use the new connection string format for >= 1.4 Signed-off-by: Jesse Whitehouse <[email protected]>
1 parent c29899a commit 27dfff6

File tree

1 file changed

+30
-40
lines changed

1 file changed

+30
-40
lines changed

tests/e2e/sqlalchemy/test_basic.py

Lines changed: 30 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
from sqlalchemy.types import SMALLINT, Integer, BOOLEAN, String, DECIMAL, Date
77
from sqlalchemy.engine import Engine
88

9+
from typing import Tuple
10+
911
try:
1012
from sqlalchemy.orm import declarative_base
1113
except ImportError:
@@ -30,54 +32,42 @@ def version_agnostic_select(object_to_select, *args, **kwargs):
3032
else:
3133
return select(object_to_select, *args, **kwargs)
3234

33-
34-
35-
@pytest.fixture
36-
def db_engine() -> Engine:
37-
35+
def version_agnostic_connect_arguments(catalog=None, schema=None) -> Tuple[str, dict]:
36+
3837
HOST = os.environ.get("host")
3938
HTTP_PATH = os.environ.get("http_path")
4039
ACCESS_TOKEN = os.environ.get("access_token")
41-
CATALOG = os.environ.get("catalog")
42-
SCHEMA = os.environ.get("schema")
40+
CATALOG = catalog or os.environ.get("catalog")
41+
SCHEMA = schema or os.environ.get("schema")
4342

44-
connect_args = {"_user_agent_entry": USER_AGENT_TOKEN}
45-
46-
connect_args = {
47-
**connect_args,
48-
"http_path": HTTP_PATH,
49-
"server_hostname": HOST,
50-
"catalog": CATALOG,
51-
"schema": SCHEMA
52-
}
53-
54-
engine = create_engine(
55-
f"databricks://token:{ACCESS_TOKEN}@{HOST}",
56-
connect_args=connect_args,
57-
)
58-
return engine
43+
ua_connect_args = {"_user_agent_entry": USER_AGENT_TOKEN}
44+
45+
if sqlalchemy_1_3():
46+
conn_string = f"databricks://token:{ACCESS_TOKEN}@{HOST}"
47+
connect_args = {**ua_connect_args,
48+
"http_path": HTTP_PATH,
49+
"server_hostname": HOST,
50+
"catalog": CATALOG,
51+
"schema": SCHEMA
52+
}
53+
54+
return conn_string, connect_args
55+
else:
56+
return f"databricks://token:{ACCESS_TOKEN}@{HOST}?http_path={HTTP_PATH}&catalog={CATALOG}&schema={SCHEMA}", ua_connect_args
57+
58+
59+
60+
61+
@pytest.fixture
62+
def db_engine() -> Engine:
63+
conn_string, connect_args = version_agnostic_connect_arguments()
64+
return create_engine(conn_string, connect_args=connect_args)
5965

6066
@pytest.fixture
6167
def samples_engine() -> Engine:
62-
HOST = os.environ.get("host")
63-
HTTP_PATH = os.environ.get("http_path")
64-
ACCESS_TOKEN = os.environ.get("access_token")
65-
CATALOG = "samples"
6668

67-
connect_args = {"_user_agent_entry": USER_AGENT_TOKEN}
68-
69-
connect_args = {
70-
**connect_args,
71-
"http_path": HTTP_PATH,
72-
"server_hostname": HOST,
73-
"catalog": CATALOG,
74-
}
75-
76-
engine = create_engine(
77-
f"databricks://token:{ACCESS_TOKEN}@{HOST}",
78-
connect_args=connect_args,
79-
)
80-
return engine
69+
conn_string, connect_args = version_agnostic_connect_arguments(catalog="samples", schema="nyctaxi")
70+
return create_engine(conn_string, connect_args=connect_args)
8171

8272

8373
@pytest.fixture()

0 commit comments

Comments
 (0)