Skip to content

Commit c5e627b

Browse files
authored
Avoid 'timeout_ms' aliass in tests, switching to correct params everywhere (#336)
* Avoid any 'timeout_ms' alias in tests and switch to the correct timeout params * fix selection of timeout in (async_)fetch_raw_database_info_from_id_token
1 parent ea8fccd commit c5e627b

File tree

6 files changed

+75
-46
lines changed

6 files changed

+75
-46
lines changed

astrapy/admin/admin.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,8 @@ def fetch_raw_database_info_from_id_token(
205205
gd_response = dev_ops_commander.request(
206206
http_method=HttpMethod.GET,
207207
timeout_context=_TimeoutContext(
208-
request_ms=timeout_ms, label=_timeout_context_label
208+
request_ms=_api_options.timeout_options.request_timeout_ms,
209+
label=_timeout_context_label,
209210
),
210211
)
211212
return gd_response
@@ -299,7 +300,8 @@ async def async_fetch_raw_database_info_from_id_token(
299300
gd_response = await dev_ops_commander.async_request(
300301
http_method=HttpMethod.GET,
301302
timeout_context=_TimeoutContext(
302-
request_ms=timeout_ms, label=_timeout_context_label
303+
request_ms=_api_options.timeout_options.request_timeout_ms,
304+
label=_timeout_context_label,
303305
),
304306
)
305307
return gd_response
@@ -1747,7 +1749,7 @@ def get_database(
17471749
(
17481750
self.database_info(
17491751
parsed_api_endpoint.database_id,
1750-
timeout_ms=_database_admin_timeout_ms,
1752+
database_admin_timeout_ms=_database_admin_timeout_ms,
17511753
).raw
17521754
or {}
17531755
).get("info")
@@ -1775,7 +1777,8 @@ def get_database(
17751777
_keyspace = (
17761778
(
17771779
self.database_info(
1778-
_id_p, timeout_ms=_database_admin_timeout_ms
1780+
_id_p,
1781+
database_admin_timeout_ms=_database_admin_timeout_ms,
17791782
).raw
17801783
or {}
17811784
).get("info")

astrapy/exceptions/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -439,7 +439,7 @@ def remaining_timeout(
439439
Returns:
440440
A _TimeoutContext appropriately detailing the residual time an overall
441441
operation is allowed to last. Alternatively, the method may not return
442-
and raise a DataAPITimeoutException directly.
442+
and raise a DataAPITimeoutException/DevOpsAPITimeoutException directly.
443443
"""
444444

445445
# a zero 'cap' must be treated as None:

tests/base/integration/collections/test_collection_timeout_async.py

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ async def test_collection_count_documents_timeout_async(
4040

4141
with pytest.raises(DataAPITimeoutException) as exc:
4242
await async_empty_collection.count_documents(
43-
{}, upper_bound=800, timeout_ms=1
43+
{}, upper_bound=800, general_method_timeout_ms=1
4444
)
4545
assert await async_empty_collection.count_documents({}, upper_bound=800) >= 500
4646
assert exc.value.timeout_type in {"connect", "read"}
@@ -65,7 +65,7 @@ async def test_database_info_timeout_async(
6565
async_database.api_endpoint,
6666
token=async_database.api_options.token,
6767
keyspace=async_database.keyspace,
68-
timeout_ms=1,
68+
request_timeout_ms=1,
6969
)
7070
assert info is not None
7171
assert exc.value.timeout_type in {"connect", "read"}
@@ -80,37 +80,41 @@ async def test_cursor_overalltimeout_exceptions_async(
8080
acol = async_empty_collection
8181
await acol.insert_many([{"a": 1}] * 1000)
8282

83-
await acol.distinct("a", timeout_ms=60000)
83+
await acol.distinct("a", general_method_timeout_ms=60000)
8484
with pytest.raises(DataAPITimeoutException):
85-
await acol.distinct("a", timeout_ms=1)
85+
await acol.distinct("a", general_method_timeout_ms=1)
8686

87-
await acol.distinct("a", timeout_ms=60000)
87+
await acol.distinct("a", general_method_timeout_ms=60000)
8888
with pytest.raises(DataAPITimeoutException):
89-
await acol.distinct("a", timeout_ms=1)
89+
await acol.distinct("a", general_method_timeout_ms=1)
9090

9191
@pytest.mark.describe("test of insert_many timeouts, async")
9292
async def test_insert_many_timeout_exceptions_async(
9393
self,
9494
async_collection: DefaultAsyncCollection,
9595
) -> None:
9696
fifty_docs = [{"seq": i} for i in range(50)]
97-
await async_collection.insert_many(fifty_docs, ordered=True, timeout_ms=20000)
9897
await async_collection.insert_many(
99-
fifty_docs, ordered=False, concurrency=1, timeout_ms=20000
98+
fifty_docs, ordered=True, general_method_timeout_ms=20000
10099
)
101100
await async_collection.insert_many(
102-
fifty_docs, ordered=False, concurrency=2, timeout_ms=20000
101+
fifty_docs, ordered=False, concurrency=1, general_method_timeout_ms=20000
102+
)
103+
await async_collection.insert_many(
104+
fifty_docs, ordered=False, concurrency=2, general_method_timeout_ms=20000
103105
)
104106

105107
with pytest.raises(DataAPITimeoutException):
106-
await async_collection.insert_many(fifty_docs, ordered=True, timeout_ms=2)
108+
await async_collection.insert_many(
109+
fifty_docs, ordered=True, general_method_timeout_ms=2
110+
)
107111
with pytest.raises(DataAPITimeoutException):
108112
await async_collection.insert_many(
109-
fifty_docs, ordered=False, concurrency=1, timeout_ms=2
113+
fifty_docs, ordered=False, concurrency=1, general_method_timeout_ms=2
110114
)
111115
with pytest.raises(DataAPITimeoutException):
112116
await async_collection.insert_many(
113-
fifty_docs, ordered=False, concurrency=2, timeout_ms=2
117+
fifty_docs, ordered=False, concurrency=2, general_method_timeout_ms=2
114118
)
115119

116120
@pytest.mark.describe("test of update_many timeouts, async")
@@ -123,12 +127,16 @@ async def test_update_many_timeout_exceptions_async(
123127

124128
await async_collection.update_many({"f": "update_many"}, {"$inc": {"seq": 100}})
125129
await async_collection.update_many(
126-
{"f": "update_many"}, {"$inc": {"seq": 100}}, timeout_ms=20000
130+
{"f": "update_many"},
131+
{"$inc": {"seq": 100}},
132+
general_method_timeout_ms=20000,
127133
)
128134

129135
with pytest.raises(DataAPITimeoutException):
130136
await async_collection.update_many(
131-
{"f": "update_many"}, {"$inc": {"seq": 100}}, timeout_ms=2
137+
{"f": "update_many"},
138+
{"$inc": {"seq": 100}},
139+
general_method_timeout_ms=2,
132140
)
133141

134142
@pytest.mark.describe("test of delete_many timeouts, async")
@@ -146,9 +154,13 @@ async def test_delete_many_timeout_exceptions_async(
146154
)
147155

148156
await async_collection.delete_many({"f": "delete_many1"})
149-
await async_collection.delete_many({"f": "delete_many2"}, timeout_ms=20000)
157+
await async_collection.delete_many(
158+
{"f": "delete_many2"}, general_method_timeout_ms=20000
159+
)
150160
with pytest.raises(DataAPITimeoutException):
151-
await async_collection.delete_many({"f": "delete_many3"}, timeout_ms=2)
161+
await async_collection.delete_many(
162+
{"f": "delete_many3"}, general_method_timeout_ms=2
163+
)
152164

153165
@pytest.mark.describe("test of collection find-with-collective timeout, async")
154166
async def test_collection_find_with_collective_timeout_async(

tests/base/integration/collections/test_collection_timeout_sync.py

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@ def test_collection_count_documents_timeout_sync(
3535
time.sleep(2)
3636

3737
with pytest.raises(DataAPITimeoutException) as exc:
38-
sync_empty_collection.count_documents({}, upper_bound=800, timeout_ms=1)
38+
sync_empty_collection.count_documents(
39+
{}, upper_bound=800, general_method_timeout_ms=1
40+
)
3941
assert sync_empty_collection.count_documents({}, upper_bound=800) >= 500
4042
assert exc.value.timeout_type in {"connect", "read"}
4143
assert exc.value.endpoint is not None
@@ -59,7 +61,7 @@ def test_database_info_timeout_sync(
5961
sync_database.api_endpoint,
6062
token=sync_database.api_options.token,
6163
keyspace=sync_database.keyspace,
62-
timeout_ms=1,
64+
request_timeout_ms=1,
6365
)
6466
assert info is not None
6567
assert exc.value.timeout_type in {"connect", "read"}
@@ -74,37 +76,41 @@ def test_cursor_overalltimeout_exceptions_sync(
7476
col = sync_empty_collection
7577
col.insert_many([{"a": 1}] * 1000)
7678

77-
col.distinct("a", timeout_ms=20000)
79+
col.distinct("a", general_method_timeout_ms=20000)
7880
with pytest.raises(DataAPITimeoutException):
7981
col.distinct("a", timeout_ms=1)
8082

81-
col.distinct("a", timeout_ms=20000)
83+
col.distinct("a", general_method_timeout_ms=20000)
8284
with pytest.raises(DataAPITimeoutException):
83-
col.distinct("a", timeout_ms=1)
85+
col.distinct("a", general_method_timeout_ms=1)
8486

8587
@pytest.mark.describe("test of insert_many timeouts, sync")
8688
def test_insert_many_timeout_exceptions_sync(
8789
self,
8890
sync_collection: DefaultCollection,
8991
) -> None:
9092
fifty_docs = [{"seq": i} for i in range(50)]
91-
sync_collection.insert_many(fifty_docs, ordered=True, timeout_ms=20000)
9293
sync_collection.insert_many(
93-
fifty_docs, ordered=False, concurrency=1, timeout_ms=20000
94+
fifty_docs, ordered=True, general_method_timeout_ms=20000
95+
)
96+
sync_collection.insert_many(
97+
fifty_docs, ordered=False, concurrency=1, general_method_timeout_ms=20000
9498
)
9599
sync_collection.insert_many(
96-
fifty_docs, ordered=False, concurrency=2, timeout_ms=20000
100+
fifty_docs, ordered=False, concurrency=2, general_method_timeout_ms=20000
97101
)
98102

99103
with pytest.raises(DataAPITimeoutException):
100-
sync_collection.insert_many(fifty_docs, ordered=True, timeout_ms=2)
104+
sync_collection.insert_many(
105+
fifty_docs, ordered=True, general_method_timeout_ms=2
106+
)
101107
with pytest.raises(DataAPITimeoutException):
102108
sync_collection.insert_many(
103-
fifty_docs, ordered=False, concurrency=1, timeout_ms=2
109+
fifty_docs, ordered=False, concurrency=1, general_method_timeout_ms=2
104110
)
105111
with pytest.raises(DataAPITimeoutException):
106112
sync_collection.insert_many(
107-
fifty_docs, ordered=False, concurrency=2, timeout_ms=2
113+
fifty_docs, ordered=False, concurrency=2, general_method_timeout_ms=2
108114
)
109115

110116
@pytest.mark.describe("test of update_many timeouts, sync")
@@ -117,12 +123,16 @@ def test_update_many_timeout_exceptions_sync(
117123

118124
sync_collection.update_many({"f": "update_many"}, {"$inc": {"seq": 100}})
119125
sync_collection.update_many(
120-
{"f": "update_many"}, {"$inc": {"seq": 100}}, timeout_ms=20000
126+
{"f": "update_many"},
127+
{"$inc": {"seq": 100}},
128+
general_method_timeout_ms=20000,
121129
)
122130

123131
with pytest.raises(DataAPITimeoutException):
124132
sync_collection.update_many(
125-
{"f": "update_many"}, {"$inc": {"seq": 100}}, timeout_ms=2
133+
{"f": "update_many"},
134+
{"$inc": {"seq": 100}},
135+
general_method_timeout_ms=2,
126136
)
127137

128138
@pytest.mark.describe("test of delete_many timeouts, sync")
@@ -140,9 +150,13 @@ def test_delete_many_timeout_exceptions_sync(
140150
)
141151

142152
sync_collection.delete_many({"f": "delete_many1"})
143-
sync_collection.delete_many({"f": "delete_many2"}, timeout_ms=20000)
153+
sync_collection.delete_many(
154+
{"f": "delete_many2"}, general_method_timeout_ms=20000
155+
)
144156
with pytest.raises(DataAPITimeoutException):
145-
sync_collection.delete_many({"f": "delete_many3"}, timeout_ms=2)
157+
sync_collection.delete_many(
158+
{"f": "delete_many3"}, general_method_timeout_ms=2
159+
)
146160

147161
@pytest.mark.describe("test of collection find-with-collective timeout, sync")
148162
def test_collection_find_with_collective_timeout_sync(

tests/base/unit/test_collection_timeouts.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ def test_collection_count_documents_timeout_sync(
7070
).respond_with_handler(response_sleeper)
7171
with pytest.raises(DataAPITimeoutException):
7272
mock_collection.count_documents(
73-
{}, upper_bound=800, timeout_ms=TIMEOUT_PARAM_MS
73+
{}, upper_bound=800, general_method_timeout_ms=TIMEOUT_PARAM_MS
7474
)
7575

7676
@pytest.mark.describe("test of collection count_documents timeout, async")
@@ -91,7 +91,7 @@ async def test_collection_count_documents_timeout_async(
9191
).respond_with_handler(response_sleeper)
9292
with pytest.raises(DataAPITimeoutException):
9393
await mock_acollection.count_documents(
94-
{}, upper_bound=800, timeout_ms=TIMEOUT_PARAM_MS
94+
{}, upper_bound=800, general_method_timeout_ms=TIMEOUT_PARAM_MS
9595
)
9696

9797
@pytest.mark.describe("test of collection cursor-based timeouts, async")
@@ -107,7 +107,7 @@ async def test_collection_cursor_timeouts_async(
107107
cur0 = mock_acollection.find({})
108108
await cur0.__anext__()
109109

110-
cur1 = mock_acollection.find({}, timeout_ms=1)
110+
cur1 = mock_acollection.find({}, request_timeout_ms=1)
111111
httpserver.expect_oneshot_request(
112112
f"/{BASE_PATH}/{PATH_SUFFIX}",
113113
method=HttpMethod.POST,
@@ -132,7 +132,7 @@ async def test_collection_find_one_timeouts_async(
132132
method=HttpMethod.POST,
133133
).respond_with_handler(response_sleeper)
134134
with pytest.raises(DataAPITimeoutException):
135-
await mock_acollection.find_one({}, timeout_ms=1)
135+
await mock_acollection.find_one({}, general_method_timeout_ms=1)
136136

137137
@pytest.mark.describe("test of collection cursor-based timeouts, sync")
138138
def test_collection_cursor_timeouts_sync(
@@ -147,7 +147,7 @@ def test_collection_cursor_timeouts_sync(
147147
cur0 = mock_collection.find({})
148148
cur0.__next__()
149149

150-
cur1 = mock_collection.find({}, timeout_ms=1)
150+
cur1 = mock_collection.find({}, request_timeout_ms=1)
151151
httpserver.expect_oneshot_request(
152152
f"/{BASE_PATH}/{PATH_SUFFIX}",
153153
method=HttpMethod.POST,
@@ -172,4 +172,4 @@ def test_collection_find_one_timeouts_sync(
172172
method=HttpMethod.POST,
173173
).respond_with_handler(response_sleeper)
174174
with pytest.raises(DataAPITimeoutException):
175-
mock_collection.find_one({}, timeout_ms=1)
175+
mock_collection.find_one({}, general_method_timeout_ms=1)

tests/base/unit/test_timeouts.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ def test_collection_timeout_suppression_sync(self, httpserver: HTTPServer) -> No
298298
dmr_LS_zrq = collection_L_S.delete_many({}, general_method_timeout_ms=0)
299299
assert dmr_LS_zrq.deleted_count == 12
300300

301-
# remove the timeout completely with a zero per-method 'timeout_ms' shorthand
301+
# remove the timeout completely: a zero per-method 'general_method_timeout_ms'
302302
httpserver.expect_oneshot_request(
303303
expected_url,
304304
method="POST",
@@ -313,7 +313,7 @@ def test_collection_timeout_suppression_sync(self, httpserver: HTTPServer) -> No
313313
},
314314
)
315315
)
316-
dmr_LS_zgrq = collection_L_S.delete_many({}, timeout_ms=0)
316+
dmr_LS_zgrq = collection_L_S.delete_many({}, general_method_timeout_ms=0)
317317
assert dmr_LS_zgrq.deleted_count == 12
318318

319319
@pytest.mark.describe(
@@ -491,7 +491,7 @@ async def test_collection_timeout_suppression_async(
491491
dmr_LS_zrq = await acollection_L_S.delete_many({}, general_method_timeout_ms=0)
492492
assert dmr_LS_zrq.deleted_count == 12
493493

494-
# remove the timeout completely with a zero per-method 'timeout_ms' shorthand
494+
# remove the timeout completely: a zero per-method 'general_method_timeout_ms'
495495
httpserver.expect_oneshot_request(
496496
expected_url,
497497
method="POST",
@@ -506,5 +506,5 @@ async def test_collection_timeout_suppression_async(
506506
},
507507
)
508508
)
509-
dmr_LS_zgrq = await acollection_L_S.delete_many({}, timeout_ms=0)
509+
dmr_LS_zgrq = await acollection_L_S.delete_many({}, general_method_timeout_ms=0)
510510
assert dmr_LS_zgrq.deleted_count == 12

0 commit comments

Comments
 (0)