1import itertools 2from unittest import TestCase 3 4from dogpile.cache.api import NO_VALUE 5from . import eq_ 6from ._fixtures import _GenericBackendFixture 7 8 9class NullBackendTest(_GenericBackendFixture, TestCase): 10 backend = "dogpile.cache.null" 11 12 def test_get(self): 13 reg = self._region() 14 15 eq_(reg.get("some key"), NO_VALUE) 16 17 def test_set(self): 18 reg = self._region() 19 reg.set("some key", "some value") 20 eq_(reg.get("some key"), NO_VALUE) 21 22 def test_delete(self): 23 reg = self._region() 24 reg.delete("some key") 25 eq_(reg.get("some key"), NO_VALUE) 26 27 def test_get_multi(self): 28 reg = self._region() 29 30 eq_(reg.get_multi(["a", "b", "c"]), [NO_VALUE, NO_VALUE, NO_VALUE]) 31 32 def test_set_multi(self): 33 reg = self._region() 34 reg.set_multi({"a": 1, "b": 2, "c": 3}) 35 eq_(reg.get_multi(["a", "b", "c"]), [NO_VALUE, NO_VALUE, NO_VALUE]) 36 37 def test_delete_multi(self): 38 reg = self._region() 39 reg.delete_multi(["a", "b", "c"]) 40 eq_(reg.get_multi(["a", "b", "c"]), [NO_VALUE, NO_VALUE, NO_VALUE]) 41 42 def test_decorator(self): 43 reg = self._region() 44 45 counter = itertools.count(1) 46 47 @reg.cache_on_arguments() 48 def go(a, b): 49 val = next(counter) 50 return val, a, b 51 52 eq_(go(1, 2), (1, 1, 2)) 53 eq_(go(1, 2), (2, 1, 2)) 54 eq_(go(1, 3), (3, 1, 3)) 55 56 def test_mutex(self): 57 backend = self._backend() 58 mutex = backend.get_mutex("foo") 59 60 ac = mutex.acquire() 61 assert ac 62 mutex.release() 63 64 ac2 = mutex.acquire(False) 65 assert ac2 66 mutex.release() 67 68 def test_mutex_doesnt_actually_lock(self): 69 backend = self._backend() 70 mutex = backend.get_mutex("foo") 71 72 ac = mutex.acquire() 73 assert ac 74 75 ac2 = mutex.acquire(False) 76 assert ac2 77 mutex.release() 78