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)
 |