diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2016-06-13 16:41:39 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2016-06-13 16:41:39 -0400 |
commit | 1253edbacce8ac640f44a4604cf72781f8eb7a52 (patch) | |
tree | 6748849bbabbcd3dcac1ee3f82665d7ae639e229 /tests | |
parent | 4048651252e1276cd65006cc45b77a805c6eef2a (diff) | |
download | dogpile-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.py | 25 |
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) |