Files
python-aodhclient/aodhclient/tests/functional/test_alarm_history.py
Kevin_Zheng f39ec4348d Add event_id for alarm-history display
We only shows timestamp, type, and detail when calling alarm-history show;
As for the pagination implementation, alarm-history can only marked using
event_id, so it is not easy to use for CLI users, we should also provide
event_id when we display the results.

Change-Id: I2f8cf1d2dd9d6ddf28652ad8ccb4a25d2ec1082b
Closes-bug: #1589480
2016-06-16 14:09:44 +08:00

110 lines
4.5 KiB
Python

# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import uuid
from oslo_serialization import jsonutils
from aodhclient.tests.functional import base
class AlarmHistoryTest(base.ClientTestBase):
def test_help(self):
self.aodh("help", params="alarm-history show")
self.aodh("help", params="alarm-history search")
def test_alarm_history_scenario(self):
PROJECT_ID = str(uuid.uuid4())
result = self.aodh(u'alarm',
params=(u"create --type threshold --name history1 "
"-m meter_name --threshold 5 "
"--project-id %s" % PROJECT_ID))
alarm = self.details_multiple(result)[0]
ALARM_ID = alarm['alarm_id']
result = self.aodh(u'alarm',
params=(u"create --type threshold --name history2 "
"-m meter_name --threshold 10 "
"--project-id %s" % PROJECT_ID))
alarm = self.details_multiple(result)[0]
ALARM_ID2 = alarm['alarm_id']
# LIST WITH PAGINATION
# list with limit
result = self.aodh('alarm-history',
params=("show %s --limit 1" % ALARM_ID))
alarm_list = self.parser.listing(result)
self.assertEqual(1, len(alarm_list))
# list with sort key=timestamp, dir=asc
result = self.aodh('alarm-history',
params=("show %s --sort timestamp:asc" % ALARM_ID))
alarm_history_list = self.parser.listing(result)
timestamp = [r['timestamp'] for r in alarm_history_list]
sorted_timestamp = sorted(timestamp)
self.assertEqual(sorted_timestamp, timestamp)
# list with sort key=type dir = desc and key=timestamp, dir=asc
result = self.aodh('alarm-history',
params=("show %s --sort type:desc "
"--sort timestamp:asc" % ALARM_ID))
alarm_history_list = self.parser.listing(result)
creation = alarm_history_list.pop(-1)
timestamp = [r['timestamp'] for r in alarm_history_list]
sorted_timestamp = sorted(timestamp)
self.assertEqual(sorted_timestamp, timestamp)
self.assertEqual('creation', creation['type'])
# TEST FIELDS
result = self.aodh(
'alarm-history', params=("show %s" % ALARM_ID))
history = self.parser.listing(result)[0]
for key in ["timestamp", "type", "detail", "event_id"]:
self.assertIn(key, history)
# SHOW
result = self.aodh(
'alarm-history', params=("show %s" % ALARM_ID))
history = self.parser.listing(result)[0]
self.assertEqual('creation', history['type'])
self.assertEqual('history1',
jsonutils.loads(history['detail'])['name'])
result = self.aodh(
'alarm-history', params=("show %s" % ALARM_ID2))
history = self.parser.listing(result)[0]
self.assertEqual('creation', history['type'])
self.assertEqual('history2',
jsonutils.loads(history['detail'])['name'])
# SEARCH ALL
result = self.aodh('alarm-history', params=("search"))
self.assertIn(ALARM_ID,
[r['alarm_id'] for r in self.parser.listing(result)])
self.assertIn(ALARM_ID2,
[r['alarm_id'] for r in self.parser.listing(result)])
# SEARCH
result = self.aodh('alarm-history',
params=("search --query "
"alarm_id=%s"
% ALARM_ID))
history = self.parser.listing(result)[0]
self.assertEqual(ALARM_ID, history["alarm_id"])
self.assertEqual('creation', history['type'])
self.assertEqual('history1',
jsonutils.loads(history['detail'])['name'])
# CLEANUP
self.aodh('alarm', params="delete %s" % ALARM_ID)
self.aodh('alarm', params="delete %s" % ALARM_ID2)