testcontainers / testcontainers/testcontainers-python
test is stuck at waiting and then times out : postgres container
Open
Nobody has claimed this yet.
🍏 macos
🐛 bug
👀 requires attention
📦 package: postgres
🪟 windows
- Dominant language
- Python
- Stars
- 2.3k
- Forks
- 386
- Avg merge
- 4h 40m
- Merged PRs (30d)
- 1
Description
Can someone please help fix this issue? Not sure what to do. Container starts up fine. But my test is timing out.
py.test -s
========================================================================== test session starts ==========================================================================
platform darwin -- Python 3.8.3, pytest-5.4.3, py-1.8.1, pluggy-0.13.1
rootdir: /Users/ypatel/postgres
collecting ... testing
collected 1 item
test_db_containers.py
Pulling image localhost/opensource/postgres/postgresql12:12.3
⠴
Container started: d21da7fa95
Waiting to be ready...
F
=============================================================================== FAILURES ================================================================================
_______________________________________________________________________ test_docker_run_postgress _______________________________________________________________________
def test_docker_run_postgress():
postgres_container = PostgresContainer("localhost/opensource/postgres/postgresql12:12.3")
> with postgres_container as postgres:
test_db_containers.py:21:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/testcontainers/core/container.py:64: in __enter__
return self.start()
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/testcontainers/core/generic.py:42: in start
self._connect()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
wrapped = <bound method DbContainer._connect of <testcontainers.postgres.PostgresContainer object at 0x7fcb692b6700>>
instance = <testcontainers.postgres.PostgresContainer object at 0x7fcb692b6700>, args = (), kwargs = {}
@wrapt.decorator
def wrapper(wrapped, instance, args, kwargs):
exception = None
print(crayons.yellow("Waiting to be ready..."))
with blindspin.spinner():
for _ in range(0, config.MAX_TRIES):
try:
return wrapped(*args, **kwargs)
except Exception as e:
time.sleep(config.SLEEP_TIME)
exception = e
> raise TimeoutException(
"""Wait time exceeded {0} sec.
Method {1}, args {2} , kwargs {3}.
Exception {4}""".format(config.MAX_TRIES,
wrapped.__name__,
args, kwargs, exception))
E testcontainers.core.exceptions.TimeoutException: Wait time exceeded 120 sec.
E Method _connect, args () , kwargs {}.
E Exception (psycopg2.OperationalError) server closed the connection unexpectedly
E This probably means the server terminated abnormally
E before or while processing the request.
E
E (Background on this error at: http://sqlalche.me/e/e3q8)
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/testcontainers/core/waiting_utils.py:46: TimeoutException
======================================================================== short test summary info ========================================================================
FAILED test_db_containers.py::test_docker_run_postgress - testcontainers.core.exceptions.TimeoutException: Wait time exceeded 120 sec.
===================================================================== 1 failed in 124.21s (0:02:04) =====================================================================
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with test_db_containers.py and the PostgresContainer context-manager path shown in the traceback, then run py.test -s to reproduce the timeout. Compare the reported PostgreSQL connection failure with the container startup behavior; done means the test connects successfully and completes without the 120-second TimeoutException.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker, postgres, python
- Domain
- databases, devops, testing
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100