-
Notifications
You must be signed in to change notification settings - Fork 21
/
Copy pathtest.py
94 lines (83 loc) · 2.24 KB
/
test.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import functools
import time
from django.conf import settings
settings.configure(DEBUG=False, TEMPLATE_DEBUG=False, FLAVOR='test',
CACHE_HERD_TIMEOUT=1)
from newcache import CacheClass
def get_client(server='127.0.0.1:11211', **kwargs):
return CacheClass(server, kwargs)
def cachetest(f):
@functools.wraps(f)
def inner(*args, **kwargs):
c = get_client()
c._cache.flush_all()
resp = f(c, *args, **kwargs)
c._cache.flush_all()
return resp
return inner
@cachetest
def test_basic(c):
"""
Basic set, get, and delete.
"""
assert c.get('test') is None
c.set('test', True, 10)
assert c.get('test') == True
c.delete('test')
assert c.get('test') is None
@cachetest
def test_add(c):
"""
Ensures that the add command works properly.
"""
assert c.get('test') is None
c.add('test', 1, 10)
assert c.get('test') == 1
c.add('test', 2, 10)
assert c.get('test') == 1
@cachetest
def test_incr_decr(c):
"""
Increment and decrement functions.
"""
assert c.get('test') is None
c.set('test', 5, 10, herd=False)
assert c.get('test') == 5
c.incr('test', 1)
assert c.get('test') == 6
c.decr('test', 3)
assert c.get('test') == 3
@cachetest
def test_get_set_many(c):
"""
Tests the batch set, get, and delete functions.
"""
assert c.get_many(['a', 'b', 'c']) == {}
c.set_many({'a': 1, 'b': 2, 'c': 3}, 10)
assert c.get_many(['a', 'b', 'c']) == {'a': 1, 'b': 2, 'c': 3}
c.delete_many(['a', 'b'])
assert c.get_many(['a', 'b', 'c']) == {'c': 3}
@cachetest
def test_herd(c):
"""
Ensures that the herd effects works properly.
"""
assert c.get('test') is None
c.set('test', 1, 1)
time.sleep(1.1)
assert c.get('test') == 1
time.sleep(1)
assert c.get('test') is None
@cachetest
def test_none_timeout(c):
"""
Tests that setting the cache with None as the timeout works properly.
"""
c.set('test1', 1, timeout=None)
assert c.get('test1') == 1
c.add('test2', 2, timeout=None)
assert c.get('test2') == 2
c.set('test3', 3, timeout=None, herd=False)
assert c.get('test3') == 3
c.add('test4', 4, timeout=None, herd=False)
assert c.get('test4') == 4