summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2016-06-13 16:41:39 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2016-06-13 16:41:39 -0400
commit1253edbacce8ac640f44a4604cf72781f8eb7a52 (patch)
tree6748849bbabbcd3dcac1ee3f82665d7ae639e229 /tests
parent4048651252e1276cd65006cc45b77a805c6eef2a (diff)
downloaddogpile-cache-1253edbacce8ac640f44a4604cf72781f8eb7a52.tar.gz
Use a weakref instead of __del__ for reference counting
Try to improve test stability here using a weakref.ref counting approach Change-Id: I02ed38c2c4d070c1e5d3ce8336500cf977e06434
Diffstat (limited to 'tests')
-rw-r--r--tests/cache/test_memcached_backend.py25
1 files changed, 14 insertions, 11 deletions
diff --git a/tests/cache/test_memcached_backend.py b/tests/cache/test_memcached_backend.py
index fecf92f..b8dde85 100644
--- a/tests/cache/test_memcached_backend.py
+++ b/tests/cache/test_memcached_backend.py
@@ -6,6 +6,7 @@ import time
import pytest
from dogpile.util import compat
import os
+import weakref
MEMCACHED_PORT = os.getenv('DOGPILE_MEMCACHED_PORT', '11211')
@@ -178,14 +179,22 @@ class MockPylibmcBackend(PylibmcBackend):
class MockClient(object):
- number_of_clients = 0
+ clients = set()
def __init__(self, *arg, **kw):
self.arg = arg
self.kw = kw
self.canary = []
self._cache = {}
- MockClient.number_of_clients += 1
+ self.clients.add(weakref.ref(self, MockClient._remove))
+
+ @classmethod
+ def _remove(cls, ref):
+ cls.clients.remove(ref)
+
+ @classmethod
+ def number_of_clients(cls):
+ return len(cls.clients)
def get(self, key):
return self._cache.get(key)
@@ -197,9 +206,6 @@ class MockClient(object):
def delete(self, key):
self._cache.pop(key, None)
- def __del__(self):
- MockClient.number_of_clients -= 1
-
class PylibmcArgsTest(TestCase):
@@ -258,7 +264,7 @@ class LocalThreadTest(TestCase):
def setUp(self):
import gc
gc.collect()
- eq_(MockClient.number_of_clients, 0)
+ eq_(MockClient.number_of_clients(), 0)
def test_client_cleanup_1(self):
self._test_client_cleanup(1)
@@ -275,7 +281,7 @@ class LocalThreadTest(TestCase):
def f():
backend._clients.memcached
- canary.append(MockClient.number_of_clients)
+ canary.append(MockClient.number_of_clients())
time.sleep(.05)
threads = [Thread(target=f) for i in range(count)]
@@ -287,7 +293,4 @@ class LocalThreadTest(TestCase):
import gc
gc.collect()
- if compat.py27:
- eq_(MockClient.number_of_clients, 0)
- else:
- eq_(MockClient.number_of_clients, 1)
+ eq_(MockClient.number_of_clients(), 0)