Fix unicode key of azcache can't be stored to memcache
The memcache library we are using assumes all strings passed to it are plain ascii, so we need to convert unicode to string. Fix bug #1212164 Change-Id: Ibf36e6b096893cb9f056371bb43cbb441cae6e32
This commit is contained in:
@@ -56,7 +56,7 @@ def _reset_cache():
|
|||||||
|
|
||||||
|
|
||||||
def _make_cache_key(host):
|
def _make_cache_key(host):
|
||||||
return "azcache-%s" % host
|
return "azcache-%s" % host.encode('utf-8')
|
||||||
|
|
||||||
|
|
||||||
def set_availability_zones(context, services):
|
def set_availability_zones(context, services):
|
||||||
|
@@ -103,6 +103,16 @@ class AvailabilityZoneTestCases(test.TestCase):
|
|||||||
|
|
||||||
self._destroy_service(service)
|
self._destroy_service(service)
|
||||||
|
|
||||||
|
def test_set_availability_zone_unicode_key(self):
|
||||||
|
"""Test set availability zone cache key is unicode."""
|
||||||
|
service = self._create_service_with_topic('network', self.host)
|
||||||
|
services = db.service_get_all(self.context)
|
||||||
|
new_service = az.set_availability_zones(self.context, services)[0]
|
||||||
|
self.assertEquals(type(services[0]['host']), unicode)
|
||||||
|
cached_key = az._make_cache_key(services[0]['host'])
|
||||||
|
self.assertEquals(type(cached_key), str)
|
||||||
|
self._destroy_service(service)
|
||||||
|
|
||||||
def test_set_availability_zone_not_compute_service(self):
|
def test_set_availability_zone_not_compute_service(self):
|
||||||
"""Test not compute service get right availability zone."""
|
"""Test not compute service get right availability zone."""
|
||||||
service = self._create_service_with_topic('network', self.host)
|
service = self._create_service_with_topic('network', self.host)
|
||||||
|
Reference in New Issue
Block a user