@@ -99,3 +99,63 @@ def test_invalidate_cache(get_cluster_info):
9999 pass
100100 eq_ (backend ._cache .get .call_count , 2 )
101101 eq_ (get_cluster_info .call_count , 3 )
102+
103+
104+ @patch ('django.conf.settings' , global_settings )
105+ @patch ('django_elastipymemcache.memcached.get_cluster_info' )
106+ def test_client_get_many (get_cluster_info ):
107+ from django_elastipymemcache .memcached import ElastiPyMemCache
108+
109+ servers = [('h1' , 0 ), ('h2' , 0 )]
110+ get_cluster_info .return_value = {
111+ 'nodes' : servers
112+ }
113+
114+ backend = ElastiPyMemCache ('h:0' , {})
115+ ret = backend .get_many (['key1' ])
116+ eq_ (ret , {})
117+
118+ # When server does not found...
119+ with patch ('pymemcache.client.hash.HashClient._get_client' ) as p :
120+ p .return_value = None
121+ ret = backend .get_many (['key2' ])
122+ eq_ (ret , {})
123+
124+ with patch ('django_elastipymemcache.client.Client.get_many' ), \
125+ patch ('pymemcache.client.hash.HashClient._safely_run_func' ) as p2 :
126+ p2 .return_value = {
127+ ':1:key3' : 1509111630.048594
128+ }
129+
130+ ret = backend .get_many (['key3' ])
131+ eq_ (ret , {'key3' : 1509111630.048594 })
132+
133+ # If False value is included, ignore it.
134+ with patch ('pymemcache.client.hash.HashClient.get_many' ) as p :
135+ p .return_value = {
136+ ':1:key1' : 1509111630.048594 ,
137+ ':1:key2' : False ,
138+ ':1:key3' : 1509111630.058594 ,
139+ }
140+ ret = backend .get_many (['key1' , 'key2' , 'key3' ])
141+ eq_ (
142+ ret ,
143+ {
144+ 'key1' : 1509111630.048594 ,
145+ 'key3' : 1509111630.058594
146+ },
147+ )
148+
149+ with patch ('pymemcache.client.hash.HashClient.get_many' ) as p :
150+ p .return_value = {
151+ ':1:key1' : None ,
152+ ':1:key2' : 1509111630.048594 ,
153+ ':1:key3' : False ,
154+ }
155+ ret = backend .get_many (['key1' , 'key2' , 'key3' ])
156+ eq_ (
157+ ret ,
158+ {
159+ 'key2' : 1509111630.048594 ,
160+ },
161+ )
0 commit comments