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 .orm import metadata , start_mappers
1715from allocation import config
@@ -34,36 +32,20 @@ def session(session_factory):
3432 return session_factory ()
3533
3634
35+ @retry (stop = stop_after_delay (10 ))
3736def wait_for_postgres_to_come_up (engine ):
38- deadline = time .time () + 10
39- while time .time () < deadline :
40- try :
41- return engine .connect ()
42- except OperationalError :
43- time .sleep (0.5 )
44- pytest .fail ('Postgres never came up' )
37+ return engine .connect ()
4538
4639
40+ @retry (stop = stop_after_delay (10 ))
4741def wait_for_webapp_to_come_up ():
48- deadline = time .time () + 10
49- url = config .get_api_url ()
50- while time .time () < deadline :
51- try :
52- return requests .get (url )
53- except RequestException :
54- time .sleep (0.5 )
55- pytest .fail ('API never came up' )
42+ return requests .get (config .get_api_url ())
5643
5744
45+ @retry (stop = stop_after_delay (10 ))
5846def wait_for_redis_to_come_up ():
59- deadline = time .time () + 5
6047 r = redis .Redis (** config .get_redis_host_and_port ())
61- while time .time () < deadline :
62- try :
63- return r .ping ()
64- except RedisError :
65- time .sleep (0.5 )
66- pytest .fail ('Redis never came up' )
48+ return r .ping ()
6749
6850
6951@pytest .fixture (scope = 'session' )
0 commit comments