Merge "Handle non-ascii character in meter name"
This commit is contained in:
commit
0ecfe09075
|
@ -972,8 +972,10 @@ class Meter(_Base):
|
||||||
"The unique identifier for the meter"
|
"The unique identifier for the meter"
|
||||||
|
|
||||||
def __init__(self, **kwargs):
|
def __init__(self, **kwargs):
|
||||||
meter_id = base64.encodestring('%s+%s' % (kwargs['resource_id'],
|
meter_id = '%s+%s' % (kwargs['resource_id'], kwargs['name'])
|
||||||
kwargs['name']))
|
# meter_id is of type Unicode but base64.encodestring() only accepts
|
||||||
|
# strings. See bug #1333177
|
||||||
|
meter_id = base64.encodestring(meter_id.encode('utf-8'))
|
||||||
kwargs['meter_id'] = meter_id
|
kwargs['meter_id'] = meter_id
|
||||||
super(Meter, self).__init__(**kwargs)
|
super(Meter, self).__init__(**kwargs)
|
||||||
|
|
||||||
|
|
|
@ -163,6 +163,17 @@ class TestListMeters(v2.FunctionalTest,
|
||||||
'size': 0,
|
'size': 0,
|
||||||
'util': 0.58,
|
'util': 0.58,
|
||||||
'is_public': True},
|
'is_public': True},
|
||||||
|
source='test_source1'),
|
||||||
|
sample.Sample(
|
||||||
|
u'meter.accent\xe9\u0437',
|
||||||
|
'gauge',
|
||||||
|
'',
|
||||||
|
1,
|
||||||
|
'user-id4',
|
||||||
|
'project-id2',
|
||||||
|
'resource-id4',
|
||||||
|
timestamp=datetime.datetime(2014, 7, 2, 10, 43),
|
||||||
|
resource_metadata={},
|
||||||
source='test_source1')]:
|
source='test_source1')]:
|
||||||
msg = utils.meter_message_from_counter(
|
msg = utils.meter_message_from_counter(
|
||||||
cnt,
|
cnt,
|
||||||
|
@ -172,13 +183,14 @@ class TestListMeters(v2.FunctionalTest,
|
||||||
|
|
||||||
def test_list_meters(self):
|
def test_list_meters(self):
|
||||||
data = self.get_json('/meters')
|
data = self.get_json('/meters')
|
||||||
self.assertEqual(5, len(data))
|
self.assertEqual(6, len(data))
|
||||||
self.assertEqual(set(['resource-id',
|
self.assertEqual(set(['resource-id',
|
||||||
'resource-id2',
|
'resource-id2',
|
||||||
'resource-id3',
|
'resource-id3',
|
||||||
'resource-id4']),
|
'resource-id4']),
|
||||||
set(r['resource_id'] for r in data))
|
set(r['resource_id'] for r in data))
|
||||||
self.assertEqual(set(['meter.test', 'meter.mine', 'meter.test.new']),
|
self.assertEqual(set(['meter.test', 'meter.mine', 'meter.test.new',
|
||||||
|
u'meter.accent\xe9\u0437']),
|
||||||
set(r['name'] for r in data))
|
set(r['name'] for r in data))
|
||||||
self.assertEqual(set(['test_source', 'test_source1']),
|
self.assertEqual(set(['test_source', 'test_source1']),
|
||||||
set(r['source'] for r in data))
|
set(r['source'] for r in data))
|
||||||
|
@ -199,7 +211,7 @@ class TestListMeters(v2.FunctionalTest,
|
||||||
|
|
||||||
def test_list_samples(self):
|
def test_list_samples(self):
|
||||||
data = self.get_json('/samples')
|
data = self.get_json('/samples')
|
||||||
self.assertEqual(6, len(data))
|
self.assertEqual(7, len(data))
|
||||||
|
|
||||||
def test_query_samples_with_invalid_field_name_and_non_eq_operator(self):
|
def test_query_samples_with_invalid_field_name_and_non_eq_operator(self):
|
||||||
resp = self.get_json('/samples',
|
resp = self.get_json('/samples',
|
||||||
|
@ -484,7 +496,7 @@ class TestListMeters(v2.FunctionalTest,
|
||||||
'value': 'test_source1',
|
'value': 'test_source1',
|
||||||
}])
|
}])
|
||||||
nids = set(r['name'] for r in data)
|
nids = set(r['name'] for r in data)
|
||||||
self.assertEqual(set(['meter.mine']), nids)
|
self.assertEqual(set(['meter.mine', u'meter.accent\xe9\u0437']), nids)
|
||||||
|
|
||||||
sids = set(r['source'] for r in data)
|
sids = set(r['source'] for r in data)
|
||||||
self.assertEqual(set(['test_source1']), sids)
|
self.assertEqual(set(['test_source1']), sids)
|
||||||
|
@ -654,6 +666,6 @@ class TestListMeters(v2.FunctionalTest,
|
||||||
def test_list_meters_meter_id(self):
|
def test_list_meters_meter_id(self):
|
||||||
data = self.get_json('/meters')
|
data = self.get_json('/meters')
|
||||||
for i in data:
|
for i in data:
|
||||||
expected = base64.encodestring('%s+%s' % (i['resource_id'],
|
meter_id = '%s+%s' % (i['resource_id'], i['name'])
|
||||||
i['name']))
|
expected = base64.encodestring(meter_id.encode('utf-8'))
|
||||||
self.assertEqual(expected, i['meter_id'])
|
self.assertEqual(expected, i['meter_id'])
|
||||||
|
|
Loading…
Reference in New Issue