summaryrefslogtreecommitdiff
path: root/ceilometerclient/tests
diff options
context:
space:
mode:
authorMehdi Abaakouk <mehdi.abaakouk@enovance.com>2013-09-26 09:50:37 +0200
committerMehdi Abaakouk <mehdi.abaakouk@enovance.com>2013-10-01 18:05:17 +0200
commit66ef360c1480899bcdf6ad7af8f2d581b532c5e6 (patch)
treeb3b93eb6a7e7689881e139908ad52168d45e980b /ceilometerclient/tests
parentb961738765976e77711d909eec1ecc402fa8a484 (diff)
downloadpython-ceilometerclient-66ef360c1480899bcdf6ad7af8f2d581b532c5e6.tar.gz
Allow to update an alarm partially
The patch allow to only modify a part of an alarm instead of force to set the full alarm description. This permit to an application that have been written code around alarm with ceilometerclient 1.0.4 and ceilometer pre havana-3. To update alarm without any change with this and ceilometer >= havana-3 (ie: heat). Fixes bug #1231303 Change-Id: I20250131d05d20bfadbca450dfe6b8237f4b7183
Diffstat (limited to 'ceilometerclient/tests')
-rw-r--r--ceilometerclient/tests/test_utils.py31
-rw-r--r--ceilometerclient/tests/v2/test_alarms.py24
2 files changed, 51 insertions, 4 deletions
diff --git a/ceilometerclient/tests/test_utils.py b/ceilometerclient/tests/test_utils.py
index 0e209b0..e0626af 100644
--- a/ceilometerclient/tests/test_utils.py
+++ b/ceilometerclient/tests/test_utils.py
@@ -93,3 +93,34 @@ class UtilsTest(test_utils.BaseTestCase):
pass
_, args = not_required_default.__dict__['arguments'][0]
self.assertEqual(args['help'], "not_required_default. Defaults to 42.")
+
+ def test_merge_nested_dict(self):
+ dest = {'key': 'value',
+ 'nested': {'key2': 'value2',
+ 'key3': 'value3',
+ 'nested2': {'key': 'value',
+ 'some': 'thing'}}}
+ source = {'key': 'modified',
+ 'nested': {'key3': 'modified3',
+ 'nested2': {'key5': 'value5'}}}
+ utils.merge_nested_dict(dest, source, depth=1)
+
+ self.assertEqual(dest, {'key': 'modified',
+ 'nested': {'key2': 'value2',
+ 'key3': 'modified3',
+ 'nested2': {'key5': 'value5'}}})
+
+ def test_merge_nested_dict_no_depth(self):
+ dest = {'key': 'value',
+ 'nested': {'key2': 'value2',
+ 'key3': 'value3',
+ 'nested2': {'key': 'value',
+ 'some': 'thing'}}}
+ source = {'key': 'modified',
+ 'nested': {'key3': 'modified3',
+ 'nested2': {'key5': 'value5'}}}
+ utils.merge_nested_dict(dest, source)
+
+ self.assertEqual(dest, {'key': 'modified',
+ 'nested': {'key3': 'modified3',
+ 'nested2': {'key5': 'value5'}}})
diff --git a/ceilometerclient/tests/v2/test_alarms.py b/ceilometerclient/tests/v2/test_alarms.py
index 82279f5..f64ded1 100644
--- a/ceilometerclient/tests/v2/test_alarms.py
+++ b/ceilometerclient/tests/v2/test_alarms.py
@@ -61,6 +61,7 @@ DELTA_ALARM_RULE = {u'comparison_operator': u'lt',
UPDATED_ALARM = copy.deepcopy(AN_ALARM)
UPDATED_ALARM.update(DELTA_ALARM)
UPDATED_ALARM['threshold_rule'].update(DELTA_ALARM_RULE)
+DELTA_ALARM['threshold_rule'] = DELTA_ALARM_RULE
UPDATE_ALARM = copy.deepcopy(UPDATED_ALARM)
del UPDATE_ALARM['user_id']
del UPDATE_ALARM['project_id']
@@ -215,7 +216,20 @@ class AlarmManagerTest(testtools.TestCase):
def test_update(self):
alarm = self.mgr.update(alarm_id='alarm-id', **UPDATE_ALARM)
expect = [
- ('PUT', '/v2/alarms/alarm-id', {}, UPDATE_ALARM),
+ ('GET', '/v2/alarms/alarm-id', {}, None),
+ ('PUT', '/v2/alarms/alarm-id', {}, UPDATED_ALARM),
+ ]
+ self.assertEqual(self.api.calls, expect)
+ self.assertTrue(alarm)
+ self.assertEqual(alarm.alarm_id, 'alarm-id')
+ for (key, value) in UPDATED_ALARM.iteritems():
+ self.assertEqual(getattr(alarm, key), value)
+
+ def test_update_delta(self):
+ alarm = self.mgr.update(alarm_id='alarm-id', **DELTA_ALARM)
+ expect = [
+ ('GET', '/v2/alarms/alarm-id', {}, None),
+ ('PUT', '/v2/alarms/alarm-id', {}, UPDATED_ALARM),
]
self.assertEqual(self.api.calls, expect)
self.assertTrue(alarm)
@@ -276,9 +290,10 @@ class AlarmLegacyManagerTest(testtools.TestCase):
self.assertTrue(alarm)
def test_update(self):
- alarm = self.mgr.update(alarm_id='alarm-id', **UPDATE_LEGACY_ALARM)
+ alarm = self.mgr.update(alarm_id='alarm-id', **DELTA_LEGACY_ALARM)
expect = [
- ('PUT', '/v2/alarms/alarm-id', {}, UPDATE_ALARM),
+ ('GET', '/v2/alarms/alarm-id', {}, None),
+ ('PUT', '/v2/alarms/alarm-id', {}, UPDATED_ALARM),
]
self.assertEqual(self.api.calls, expect)
self.assertTrue(alarm)
@@ -293,7 +308,8 @@ class AlarmLegacyManagerTest(testtools.TestCase):
del updated['meter_name']
alarm = self.mgr.update(alarm_id='alarm-id', **updated)
expect = [
- ('PUT', '/v2/alarms/alarm-id', {}, UPDATE_ALARM),
+ ('GET', '/v2/alarms/alarm-id', {}, None),
+ ('PUT', '/v2/alarms/alarm-id', {}, UPDATED_ALARM),
]
self.assertEqual(self.api.calls, expect)
self.assertTrue(alarm)