]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
Insist more on the GC tests
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Tue, 22 Jun 2021 10:38:18 +0000 (11:38 +0100)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Tue, 22 Jun 2021 10:38:18 +0000 (11:38 +0100)
tests/pq/test_pgconn.py
tests/test_connection.py
tests/test_connection_async.py
tests/test_copy.py
tests/test_copy_async.py
tests/test_cursor.py
tests/test_cursor_async.py
tests/test_errors.py
tests/utils.py

index fef38eca912a76e5ea9c04862d054d8d2bfc3a32..f7f8b07c60cea42b9bd2edaef6c043aac68f97b1 100644 (file)
@@ -1,4 +1,3 @@
-import gc
 import os
 import ctypes
 import logging
@@ -11,6 +10,8 @@ import psycopg3
 from psycopg3 import pq
 import psycopg3.generators
 
+from ..utils import gc_collect
+
 
 def test_connectdb(dsn):
     conn = pq.PGconn.connect(dsn.encode("utf8"))
@@ -87,7 +88,7 @@ def test_weakref(dsn):
     w = weakref.ref(conn)
     conn.finish()
     del conn
-    gc.collect()
+    gc_collect()
     assert w() is None
 
 
index 024d14f157804442c5a24c2dc7ae6040c34db1ed..3b4ae43c7059aeea4cf9605a55861220713b2d16 100644 (file)
@@ -1,4 +1,3 @@
-import gc
 import sys
 import time
 import socket
@@ -13,6 +12,8 @@ from psycopg3 import Connection, Notify
 from psycopg3.rows import tuple_row
 from psycopg3.errors import UndefinedTable
 from psycopg3.conninfo import conninfo_to_dict
+
+from .utils import gc_collect
 from .test_cursor import my_row_factory
 
 
@@ -175,7 +176,7 @@ def test_weakref(dsn):
     w = weakref.ref(conn)
     conn.close()
     del conn
-    gc.collect()
+    gc_collect()
     assert w() is None
 
 
index 25702ffd73371c757bfe7fb42a110240dc37ccf5..cf1356164912ab46b96adf49c9c7c319c2219927 100644 (file)
@@ -1,4 +1,3 @@
-import gc
 import time
 import socket
 import pytest
@@ -12,6 +11,8 @@ from psycopg3 import AsyncConnection, Notify
 from psycopg3.rows import tuple_row
 from psycopg3.errors import UndefinedTable
 from psycopg3.conninfo import conninfo_to_dict
+
+from .utils import gc_collect
 from .test_cursor import my_row_factory
 
 pytestmark = pytest.mark.asyncio
@@ -180,7 +181,7 @@ async def test_weakref(dsn):
     w = weakref.ref(conn)
     await conn.close()
     del conn
-    gc.collect()
+    gc_collect()
     assert w() is None
 
 
index e8247970e78c3085519c03f574c221f9b16e102e..17db186f25aa58a3be966b89781a8834f00908d2 100644 (file)
@@ -14,6 +14,8 @@ from psycopg3.pq import Format
 from psycopg3.adapt import Format as PgFormat
 from psycopg3.types import Int4
 
+from .utils import gc_collect
+
 eur = "\u20ac"
 
 sample_records = [(Int4(10), Int4(20), "hello"), (Int4(40), None, "world")]
@@ -540,8 +542,7 @@ def test_copy_to_leaks(dsn, faker, fmt, method, retries):
             n = []
             for i in range(3):
                 work()
-                gc.collect()
-                gc.collect()
+                gc_collect()
                 n.append(len(gc.get_objects()))
 
             assert (
@@ -582,8 +583,7 @@ def test_copy_from_leaks(dsn, faker, fmt, retries):
             n = []
             for i in range(3):
                 work()
-                gc.collect()
-                gc.collect()
+                gc_collect()
                 n.append(len(gc.get_objects()))
 
     assert (
index 1d0b5f0bf5be0750abfac922036ae7834969ccc4..4675e8b77ae6aece99c3b915cbaed942e0a06594 100644 (file)
@@ -13,6 +13,7 @@ from psycopg3 import errors as e
 from psycopg3.pq import Format
 from psycopg3.adapt import Format as PgFormat
 
+from .utils import gc_collect
 from .test_copy import sample_text, sample_binary, sample_binary_rows  # noqa
 from .test_copy import eur, sample_values, sample_records, sample_tabledef
 from .test_copy import py_to_raw
@@ -519,8 +520,7 @@ async def test_copy_to_leaks(dsn, faker, fmt, method, retries):
             n = []
             for i in range(3):
                 await work()
-                gc.collect()
-                gc.collect()
+                gc_collect()
                 n.append(len(gc.get_objects()))
 
             assert (
@@ -561,8 +561,7 @@ async def test_copy_from_leaks(dsn, faker, fmt, retries):
             n = []
             for i in range(3):
                 await work()
-                gc.collect()
-                gc.collect()
+                gc_collect()
                 n.append(len(gc.get_objects()))
 
             assert (
index 7d3f935e58937e39cc7e5f983faddb046812dbde..cb89f849998b19834177d2c632fd4b0ef8c221e6 100644 (file)
@@ -10,6 +10,8 @@ from psycopg3 import sql, rows
 from psycopg3.oids import postgres_types as builtins
 from psycopg3.adapt import Format
 
+from .utils import gc_collect
+
 
 def test_close(conn):
     cur = conn.cursor()
@@ -36,7 +38,7 @@ def test_weakref(conn):
     w = weakref.ref(cur)
     cur.close()
     del cur
-    gc.collect()
+    gc_collect()
     assert w() is None
 
 
@@ -576,8 +578,7 @@ def test_leak(dsn, faker, fmt, fetch, row_factory):
                 tmp = None
 
         del cur, conn
-        gc.collect()
-        gc.collect()
+        gc_collect()
         n.append(len(gc.get_objects()))
 
     assert (
index 8ab2195e1a61c71ae7c7d210196e795b89919380..0a507dda177a69e6167a521ac7814d2f83d5e3a9 100644 (file)
@@ -6,6 +6,8 @@ import datetime as dt
 import psycopg3
 from psycopg3 import sql, rows
 from psycopg3.adapt import Format
+
+from .utils import gc_collect
 from .test_cursor import my_row_factory
 
 pytestmark = pytest.mark.asyncio
@@ -36,7 +38,7 @@ async def test_weakref(aconn):
     w = weakref.ref(cur)
     await cur.close()
     del cur
-    gc.collect()
+    gc_collect()
     assert w() is None
 
 
@@ -490,8 +492,7 @@ async def test_leak(dsn, faker, fmt, fetch, row_factory):
                 tmp = None
 
         del cur, conn
-        gc.collect()
-        gc.collect()
+        gc_collect()
         n.append(len(gc.get_objects()))
 
     assert (
index 37b91178b7a15ec5fc19c924cdf42b6c00c114d8..154fee7757a48b36dad509243080972395d0bfd2 100644 (file)
@@ -1,4 +1,3 @@
-import gc
 import pickle
 from weakref import ref
 
@@ -7,6 +6,8 @@ import pytest
 from psycopg3 import pq
 from psycopg3 import errors as e
 
+from .utils import gc_collect
+
 eur = "\u20ac"
 
 
@@ -163,7 +164,7 @@ def test_diag_survives_cursor(conn):
     del exc
     w = ref(cur)
     del cur
-    gc.collect()
+    gc_collect()
     assert w() is None
     assert diag.sqlstate == "42P01"
 
index e235d6915e77a858be4f34009b55059546bcf19d..72e6fdad7e63d92249080833020f633cf1939226 100644 (file)
@@ -1,3 +1,4 @@
+import gc
 import re
 import operator
 
@@ -67,3 +68,11 @@ def _check_version(got, want, whose_version):
             f"skipping test: {whose_version} version is {'.'.join(map(str, got))}"
             f" {revops[m.group(1)]} {'.'.join(map(str, want))}"
         )
+
+
+def gc_collect():
+    """
+    gc.collect(), but more insisting.
+    """
+    for i in range(3):
+        gc.collect()