diff options
author | Amber Brown <hawkowl@atleastfornow.net> | 2018-09-20 20:14:34 +1000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-20 20:14:34 +1000 |
commit | 1f3f5fcf52efdf5215dc6c7cd3805b1357bf8236 (patch) | |
tree | 0ea1a5b02e4f0659e92b40ea450af96d8a6ab702 /tests/utils.py | |
parent | Merge pull request #3914 from matrix-org/erikj/remove_retry_cache (diff) | |
download | synapse-1f3f5fcf52efdf5215dc6c7cd3805b1357bf8236.tar.xz |
Fix client IPs being broken on Python 3 (#3908)
Diffstat (limited to 'tests/utils.py')
-rw-r--r-- | tests/utils.py | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/tests/utils.py b/tests/utils.py index 215226debf..aaed1149c3 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -16,7 +16,9 @@ import atexit import hashlib import os +import time import uuid +import warnings from inspect import getcallargs from mock import Mock, patch @@ -237,20 +239,41 @@ def setup_test_homeserver( else: # We need to do cleanup on PostgreSQL def cleanup(): + import psycopg2 + # Close all the db pools hs.get_db_pool().close() + dropped = False + # Drop the test database db_conn = db_engine.module.connect( database=POSTGRES_BASE_DB, user=POSTGRES_USER ) db_conn.autocommit = True cur = db_conn.cursor() - cur.execute("DROP DATABASE IF EXISTS %s;" % (test_db,)) - db_conn.commit() + + # Try a few times to drop the DB. Some things may hold on to the + # database for a few more seconds due to flakiness, preventing + # us from dropping it when the test is over. If we can't drop + # it, warn and move on. + for x in range(5): + try: + cur.execute("DROP DATABASE IF EXISTS %s;" % (test_db,)) + db_conn.commit() + dropped = True + except psycopg2.OperationalError as e: + warnings.warn( + "Couldn't drop old db: " + str(e), category=UserWarning + ) + time.sleep(0.5) + cur.close() db_conn.close() + if not dropped: + warnings.warn("Failed to drop old DB.", category=UserWarning) + if not LEAVE_DB: # Register the cleanup hook cleanup_func(cleanup) |