Skip to content

Commit b96c80e

Browse files
committed
Merge branch 'master' into 'req'.
2 parents a37fd50 + 7636c80 commit b96c80e

File tree

8 files changed

+114
-82
lines changed

8 files changed

+114
-82
lines changed

google/setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
url="https://github.com/testcontainers/testcontainers-python",
1313
install_requires=[
1414
"testcontainers-core",
15-
"google-cloud-pubsub < 2",
15+
"google-cloud-pubsub>=2",
1616
],
1717
python_requires=">=3.7",
1818
)

google/testcontainers/google/pubsub.py

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,10 @@
1111
# License for the specific language governing permissions and limitations
1212
# under the License.
1313
from google.cloud import pubsub
14-
import grpc
15-
from typing import Optional
14+
import os
1615
from testcontainers.core.container import DockerContainer
16+
from typing import Type
17+
from unittest.mock import patch
1718

1819

1920
class PubSubContainer(DockerContainer):
@@ -49,15 +50,12 @@ def __init__(self, image: str = "google/cloud-sdk:emulators", project: str = "te
4950
def get_pubsub_emulator_host(self) -> str:
5051
return f"{self.get_container_host_ip()}:{self.get_exposed_port(self.port)}"
5152

52-
def _get_channel(self, channel: Optional[grpc.Channel] = None) -> grpc.Channel:
53-
if channel is None:
54-
return grpc.insecure_channel(target=self.get_pubsub_emulator_host())
55-
return channel
53+
def _get_client(self, cls: Type, **kwargs) -> dict:
54+
with patch.dict(os.environ, PUBSUB_EMULATOR_HOST=self.get_pubsub_emulator_host()):
55+
return cls(**kwargs)
5656

5757
def get_publisher_client(self, **kwargs) -> pubsub.PublisherClient:
58-
kwargs['channel'] = self._get_channel(kwargs.get('channel'))
59-
return pubsub.PublisherClient(**kwargs)
58+
return self._get_client(pubsub.PublisherClient, **kwargs)
6059

6160
def get_subscriber_client(self, **kwargs) -> pubsub.SubscriberClient:
62-
kwargs['channel'] = self._get_channel(kwargs.get('channel'))
63-
return pubsub.SubscriberClient(**kwargs)
61+
return self._get_client(pubsub.SubscriberClient, **kwargs)

google/tests/test_google.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,19 @@
44

55

66
def test_pubsub_container():
7+
pubsub: PubSubContainer
78
with PubSubContainer() as pubsub:
8-
wait_for_logs(pubsub, r"Server started, listening on \d+", timeout=10)
9+
wait_for_logs(pubsub, r"Server started, listening on \d+", timeout=60)
910
# Create a new topic
1011
publisher = pubsub.get_publisher_client()
1112
topic_path = publisher.topic_path(pubsub.project, "my-topic")
12-
publisher.create_topic(topic_path)
13+
publisher.create_topic(name=topic_path)
1314

1415
# Create a subscription
1516
subscriber = pubsub.get_subscriber_client()
1617
subscription_path = subscriber.subscription_path(pubsub.project,
1718
"my-subscription")
18-
subscriber.create_subscription(subscription_path, topic_path)
19+
subscriber.create_subscription(name=subscription_path, topic=topic_path)
1920

2021
# Publish a message
2122
publisher.publish(topic_path, b"Hello world!")

requirements/3.10.txt

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,7 @@ charset-normalizer==3.1.0
113113
clickhouse-driver==0.2.5
114114
# via testcontainers-clickhouse
115115
coverage[toml]==7.2.3
116-
# via
117-
# pytest-cov
116+
# via pytest-cov
118117
cryptography==36.0.2
119118
# via
120119
# -r requirements.in
@@ -158,7 +157,7 @@ google-api-core[grpc]==2.11.0
158157
# via google-cloud-pubsub
159158
google-auth==2.17.2
160159
# via google-api-core
161-
google-cloud-pubsub==1.7.2
160+
google-cloud-pubsub==2.16.0
162161
# via testcontainers-gcp
163162
googleapis-common-protos[grpc]==1.59.0
164163
# via
@@ -172,11 +171,14 @@ grpc-google-iam-v1==0.12.6
172171
grpcio==1.53.0
173172
# via
174173
# google-api-core
174+
# google-cloud-pubsub
175175
# googleapis-common-protos
176176
# grpc-google-iam-v1
177177
# grpcio-status
178-
grpcio-status==1.48.2
179-
# via google-api-core
178+
grpcio-status==1.53.0
179+
# via
180+
# google-api-core
181+
# google-cloud-pubsub
180182
h11==0.14.0
181183
# via wsproto
182184
idna==3.4
@@ -225,7 +227,7 @@ opensearch-py==2.2.0
225227
# via testcontainers-opensearch
226228
outcome==1.2.0
227229
# via trio
228-
packaging==23.0
230+
packaging==23.1
229231
# via
230232
# deprecation
231233
# docker
@@ -241,13 +243,16 @@ pkginfo==1.9.6
241243
# via twine
242244
pluggy==1.0.0
243245
# via pytest
244-
protobuf==3.20.3
246+
proto-plus==1.22.2
247+
# via google-cloud-pubsub
248+
protobuf==4.22.1
245249
# via
246250
# google-api-core
247251
# google-cloud-pubsub
248252
# googleapis-common-protos
249253
# grpc-google-iam-v1
250254
# grpcio-status
255+
# proto-plus
251256
psycopg2-binary==2.9.6
252257
# via testcontainers-postgres
253258
pyasn1==0.4.8
@@ -331,7 +336,7 @@ requests-toolbelt==0.10.1
331336
# twine
332337
rfc3986==2.0.0
333338
# via twine
334-
rich==13.3.3
339+
rich==13.3.4
335340
# via twine
336341
rsa==4.9
337342
# via

requirements/3.11.txt

Lines changed: 49 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -78,18 +78,15 @@ alabaster==0.7.13
7878
asn1crypto==1.5.1
7979
# via scramp
8080
async-generator==1.10
81-
# via
82-
# trio
83-
# trio-websocket
81+
# via trio
8482
async-timeout==4.0.2
8583
# via redis
8684
attrs==22.2.0
8785
# via
8886
# jsonschema
8987
# outcome
90-
# pytest
9188
# trio
92-
azure-core==1.26.3
89+
azure-core==1.26.4
9390
# via azure-storage-blob
9491
azure-storage-blob==12.15.0
9592
# via testcontainers-azurite
@@ -115,14 +112,14 @@ charset-normalizer==3.1.0
115112
# via requests
116113
clickhouse-driver==0.2.5
117114
# via testcontainers-clickhouse
118-
coverage[toml]==7.2.1
119-
# via
120-
# pytest-cov
115+
coverage[toml]==7.2.3
116+
# via pytest-cov
121117
cryptography==36.0.2
122118
# via
123119
# -r requirements.in
124120
# azure-storage-blob
125121
# paramiko
122+
# secretstorage
126123
cx-oracle==8.3.0
127124
# via testcontainers-oracle
128125
deprecation==2.1.0
@@ -149,29 +146,36 @@ ecdsa==0.18.0
149146
# via python-jose
150147
entrypoints==0.3
151148
# via flake8
149+
exceptiongroup==1.1.1
150+
# via trio-websocket
152151
flake8==3.7.9
153152
# via -r requirements.in
154-
google-api-core[grpc]==2.10.2
153+
google-api-core[grpc]==2.11.0
155154
# via google-cloud-pubsub
156-
google-auth==2.16.2
155+
google-auth==2.17.2
157156
# via google-api-core
158-
google-cloud-pubsub==1.7.2
157+
google-cloud-pubsub==2.16.0
159158
# via testcontainers-gcp
160-
googleapis-common-protos[grpc]==1.58.0
159+
googleapis-common-protos[grpc]==1.59.0
161160
# via
162161
# google-api-core
163162
# grpc-google-iam-v1
164163
# grpcio-status
164+
greenlet==2.0.2
165+
# via sqlalchemy
165166
grpc-google-iam-v1==0.12.6
166167
# via google-cloud-pubsub
167-
grpcio==1.51.3
168+
grpcio==1.53.0
168169
# via
169170
# google-api-core
171+
# google-cloud-pubsub
170172
# googleapis-common-protos
171173
# grpc-google-iam-v1
172174
# grpcio-status
173-
grpcio-status==1.48.2
174-
# via google-api-core
175+
grpcio-status==1.53.0
176+
# via
177+
# google-api-core
178+
# google-cloud-pubsub
175179
h11==0.14.0
176180
# via wsproto
177181
idna==3.4
@@ -180,7 +184,7 @@ idna==3.4
180184
# trio
181185
imagesize==1.4.1
182186
# via sphinx
183-
importlib-metadata==6.0.0
187+
importlib-metadata==6.3.0
184188
# via
185189
# keyring
186190
# twine
@@ -190,6 +194,10 @@ isodate==0.6.1
190194
# via azure-storage-blob
191195
jaraco-classes==3.2.3
192196
# via keyring
197+
jeepney==0.8.0
198+
# via
199+
# keyring
200+
# secretstorage
193201
jinja2==3.1.2
194202
# via sphinx
195203
jsonschema==3.2.0
@@ -206,23 +214,23 @@ mccabe==0.6.1
206214
# via flake8
207215
mdurl==0.1.2
208216
# via markdown-it-py
209-
minio==7.1.13
217+
minio==7.1.14
210218
# via testcontainers-minio
211219
more-itertools==9.1.0
212220
# via jaraco-classes
213-
neo4j==5.6.0
221+
neo4j==5.7.0
214222
# via testcontainers-neo4j
215223
opensearch-py==2.2.0
216224
# via testcontainers-opensearch
217225
outcome==1.2.0
218226
# via trio
219-
packaging==23.0
227+
packaging==23.1
220228
# via
221229
# deprecation
222230
# docker
223231
# pytest
224232
# sphinx
225-
paramiko==3.0.0
233+
paramiko==3.1.0
226234
# via docker
227235
pg8000==1.29.4
228236
# via -r requirements.in
@@ -232,14 +240,17 @@ pkginfo==1.9.6
232240
# via twine
233241
pluggy==1.0.0
234242
# via pytest
235-
protobuf==3.20.3
243+
proto-plus==1.22.2
244+
# via google-cloud-pubsub
245+
protobuf==4.22.1
236246
# via
237247
# google-api-core
238248
# google-cloud-pubsub
239249
# googleapis-common-protos
240250
# grpc-google-iam-v1
241251
# grpcio-status
242-
psycopg2-binary==2.9.5
252+
# proto-plus
253+
psycopg2-binary==2.9.6
243254
# via testcontainers-postgres
244255
pyasn1==0.4.8
245256
# via
@@ -254,7 +265,7 @@ pycparser==2.21
254265
# via cffi
255266
pyflakes==2.1.1
256267
# via flake8
257-
pygments==2.14.0
268+
pygments==2.15.0
258269
# via
259270
# readme-renderer
260271
# rich
@@ -265,15 +276,15 @@ pymongo==4.3.3
265276
# via testcontainers-mongodb
266277
pymssql==2.2.7
267278
# via testcontainers-mssql
268-
pymysql==1.0.2
279+
pymysql==1.0.3
269280
# via testcontainers-mysql
270281
pynacl==1.5.0
271282
# via paramiko
272283
pyrsistent==0.19.3
273284
# via jsonschema
274285
pysocks==1.7.1
275286
# via urllib3
276-
pytest==7.2.2
287+
pytest==7.3.0
277288
# via
278289
# -r requirements.in
279290
# pytest-cov
@@ -289,9 +300,9 @@ python-dotenv==0.21.1
289300
# via docker-compose
290301
python-jose==3.3.0
291302
# via python-keycloak
292-
python-keycloak==2.13.2
303+
python-keycloak==2.15.3
293304
# via testcontainers-keycloak
294-
pytz==2022.7.1
305+
pytz==2023.3
295306
# via
296307
# clickhouse-driver
297308
# neo4j
@@ -301,7 +312,7 @@ pyyaml==5.4.1
301312
# via docker-compose
302313
readme-renderer==37.3
303314
# via twine
304-
redis==4.5.1
315+
redis==4.5.4
305316
# via testcontainers-redis
306317
requests==2.28.2
307318
# via
@@ -322,15 +333,17 @@ requests-toolbelt==0.10.1
322333
# twine
323334
rfc3986==2.0.0
324335
# via twine
325-
rich==13.3.2
336+
rich==13.3.4
326337
# via twine
327338
rsa==4.9
328339
# via
329340
# google-auth
330341
# python-jose
331342
scramp==1.4.4
332343
# via pg8000
333-
selenium==4.8.2
344+
secretstorage==3.3.3
345+
# via keyring
346+
selenium==4.8.3
334347
# via testcontainers-selenium
335348
six==1.16.0
336349
# via
@@ -364,7 +377,7 @@ sphinxcontrib-qthelp==1.0.3
364377
# via sphinx
365378
sphinxcontrib-serializinghtml==1.1.5
366379
# via sphinx
367-
sqlalchemy==2.0.5.post1
380+
sqlalchemy==2.0.9
368381
# via
369382
# testcontainers-mssql
370383
# testcontainers-mysql
@@ -376,7 +389,7 @@ trio==0.22.0
376389
# via
377390
# selenium
378391
# trio-websocket
379-
trio-websocket==0.9.2
392+
trio-websocket==0.10.2
380393
# via selenium
381394
twine==4.0.2
382395
# via -r requirements.in
@@ -385,11 +398,11 @@ typing-extensions==4.5.0
385398
# azure-core
386399
# azure-storage-blob
387400
# sqlalchemy
388-
tzdata==2022.7
401+
tzdata==2023.3
389402
# via pytz-deprecation-shim
390-
tzlocal==4.2
403+
tzlocal==4.3
391404
# via clickhouse-driver
392-
urllib3[socks]==1.26.14
405+
urllib3[socks]==1.26.15
393406
# via
394407
# docker
395408
# minio
@@ -405,7 +418,7 @@ websocket-client==0.59.0
405418
# via
406419
# docker
407420
# docker-compose
408-
wheel==0.38.4
421+
wheel==0.40.0
409422
# via -r requirements.in
410423
wrapt==1.15.0
411424
# via testcontainers-core

0 commit comments

Comments
 (0)