77import pytest
88import redis
99import requests
10- from requests .exceptions import RequestException
11- from redis .exceptions import RedisError
12- from sqlalchemy .exc import OperationalError
1310from sqlalchemy import create_engine
1411from sqlalchemy .orm import sessionmaker , clear_mappers
12+ from tenacity import retry , stop_after_delay
1513
1614from allocation .adapters .orm import metadata , start_mappers
1715from allocation import config
@@ -36,36 +34,20 @@ def session(session_factory):
3634 return session_factory ()
3735
3836
37+ @retry (stop = stop_after_delay (10 ))
3938def wait_for_postgres_to_come_up (engine ):
40- deadline = time .time () + 10
41- while time .time () < deadline :
42- try :
43- return engine .connect ()
44- except OperationalError :
45- time .sleep (0.5 )
46- pytest .fail ("Postgres never came up" )
39+ return engine .connect ()
4740
4841
42+ @retry (stop = stop_after_delay (10 ))
4943def wait_for_webapp_to_come_up ():
50- deadline = time .time () + 10
51- url = config .get_api_url ()
52- while time .time () < deadline :
53- try :
54- return requests .get (url )
55- except RequestException :
56- time .sleep (0.5 )
57- pytest .fail ("API never came up" )
44+ return requests .get (config .get_api_url ())
5845
5946
47+ @retry (stop = stop_after_delay (10 ))
6048def wait_for_redis_to_come_up ():
61- deadline = time .time () + 5
6249 r = redis .Redis (** config .get_redis_host_and_port ())
63- while time .time () < deadline :
64- try :
65- return r .ping ()
66- except RedisError :
67- time .sleep (0.5 )
68- pytest .fail ("Redis never came up" )
50+ return r .ping ()
6951
7052
7153@pytest .fixture (scope = "session" )
0 commit comments