81f3cbb548
* bugfix + add tests
124 lines
3.5 KiB
Python
124 lines
3.5 KiB
Python
import boto
|
|
from boto.ec2.cloudwatch.alarm import MetricAlarm
|
|
import boto3
|
|
from datetime import datetime, timedelta
|
|
import pytz
|
|
import sure # noqa
|
|
|
|
from moto import mock_cloudwatch_deprecated
|
|
|
|
|
|
def alarm_fixture(name="tester", action=None):
|
|
action = action or ['arn:alarm']
|
|
return MetricAlarm(
|
|
name=name,
|
|
namespace="{0}_namespace".format(name),
|
|
metric="{0}_metric".format(name),
|
|
comparison='>=',
|
|
threshold=2.0,
|
|
period=60,
|
|
evaluation_periods=5,
|
|
statistic='Average',
|
|
description='A test',
|
|
dimensions={'InstanceId': ['i-0123456,i-0123457']},
|
|
alarm_actions=action,
|
|
ok_actions=['arn:ok'],
|
|
insufficient_data_actions=['arn:insufficient'],
|
|
unit='Seconds',
|
|
)
|
|
|
|
|
|
@mock_cloudwatch_deprecated
|
|
def test_create_alarm():
|
|
conn = boto.connect_cloudwatch()
|
|
|
|
alarm = alarm_fixture()
|
|
conn.create_alarm(alarm)
|
|
|
|
alarms = conn.describe_alarms()
|
|
alarms.should.have.length_of(1)
|
|
alarm = alarms[0]
|
|
alarm.name.should.equal('tester')
|
|
alarm.namespace.should.equal('tester_namespace')
|
|
alarm.metric.should.equal('tester_metric')
|
|
alarm.comparison.should.equal('>=')
|
|
alarm.threshold.should.equal(2.0)
|
|
alarm.period.should.equal(60)
|
|
alarm.evaluation_periods.should.equal(5)
|
|
alarm.statistic.should.equal('Average')
|
|
alarm.description.should.equal('A test')
|
|
dict(alarm.dimensions).should.equal(
|
|
{'InstanceId': ['i-0123456,i-0123457']})
|
|
list(alarm.alarm_actions).should.equal(['arn:alarm'])
|
|
list(alarm.ok_actions).should.equal(['arn:ok'])
|
|
list(alarm.insufficient_data_actions).should.equal(['arn:insufficient'])
|
|
alarm.unit.should.equal('Seconds')
|
|
|
|
|
|
@mock_cloudwatch_deprecated
|
|
def test_delete_alarm():
|
|
conn = boto.connect_cloudwatch()
|
|
|
|
alarms = conn.describe_alarms()
|
|
alarms.should.have.length_of(0)
|
|
|
|
alarm = alarm_fixture()
|
|
conn.create_alarm(alarm)
|
|
|
|
alarms = conn.describe_alarms()
|
|
alarms.should.have.length_of(1)
|
|
|
|
alarms[0].delete()
|
|
|
|
alarms = conn.describe_alarms()
|
|
alarms.should.have.length_of(0)
|
|
|
|
|
|
@mock_cloudwatch_deprecated
|
|
def test_put_metric_data():
|
|
conn = boto.connect_cloudwatch()
|
|
|
|
conn.put_metric_data(
|
|
namespace='tester',
|
|
name='metric',
|
|
value=1.5,
|
|
dimensions={'InstanceId': ['i-0123456,i-0123457']},
|
|
)
|
|
|
|
metrics = conn.list_metrics()
|
|
metrics.should.have.length_of(1)
|
|
metric = metrics[0]
|
|
metric.namespace.should.equal('tester')
|
|
metric.name.should.equal('metric')
|
|
dict(metric.dimensions).should.equal(
|
|
{'InstanceId': ['i-0123456,i-0123457']})
|
|
|
|
|
|
@mock_cloudwatch_deprecated
|
|
def test_describe_alarms():
|
|
conn = boto.connect_cloudwatch()
|
|
|
|
alarms = conn.describe_alarms()
|
|
alarms.should.have.length_of(0)
|
|
|
|
conn.create_alarm(alarm_fixture(name="nfoobar", action="afoobar"))
|
|
conn.create_alarm(alarm_fixture(name="nfoobaz", action="afoobaz"))
|
|
conn.create_alarm(alarm_fixture(name="nbarfoo", action="abarfoo"))
|
|
conn.create_alarm(alarm_fixture(name="nbazfoo", action="abazfoo"))
|
|
|
|
alarms = conn.describe_alarms()
|
|
alarms.should.have.length_of(4)
|
|
alarms = conn.describe_alarms(alarm_name_prefix="nfoo")
|
|
alarms.should.have.length_of(2)
|
|
alarms = conn.describe_alarms(
|
|
alarm_names=["nfoobar", "nbarfoo", "nbazfoo"])
|
|
alarms.should.have.length_of(3)
|
|
alarms = conn.describe_alarms(action_prefix="afoo")
|
|
alarms.should.have.length_of(2)
|
|
|
|
for alarm in conn.describe_alarms():
|
|
alarm.delete()
|
|
|
|
alarms = conn.describe_alarms()
|
|
alarms.should.have.length_of(0)
|