Ejemplo n.º 1
0
def test_cloudwatch_query_one_bad_period(monkeypatch):
    client = MagicMock()
    get = MagicMock()
    get.return_value.json.return_value = {'region': 'myregion'}
    monkeypatch.setattr('requests.get', get)
    monkeypatch.setattr('boto3.client', lambda x, region_name: client)
    cloudwatch = CloudwatchWrapper()
    with pytest.raises(ValueError):
        cloudwatch.query_one({'LoadBalancerName': 'pierone-1'}, 'Latency', 'Average', 'AWS/ELB', period=90)
Ejemplo n.º 2
0
def test_cloudwatch_query_one_bad_period(monkeypatch):
    client = MagicMock()
    get = MagicMock()
    get.return_value.json.return_value = {'region': 'myregion'}
    monkeypatch.setattr('requests.get', get)
    monkeypatch.setattr('boto3.client', lambda x, region_name: client)
    cloudwatch = CloudwatchWrapper()
    with pytest.raises(ValueError):
        cloudwatch.query_one({'LoadBalancerName': 'pierone-1'},
                             'Latency',
                             'Average',
                             'AWS/ELB',
                             period=90)
Ejemplo n.º 3
0
def test_cloudwatch_query_one_no_result(monkeypatch):
    client = MagicMock()
    client.get_metric_statistics.return_value = {'Datapoints': []}
    get = MagicMock()
    get.return_value.json.return_value = {'region': 'myregion'}
    monkeypatch.setattr('requests.get', get)
    monkeypatch.setattr('boto3.client', lambda x, region_name: client)
    cloudwatch = CloudwatchWrapper()
    elb_data = cloudwatch.query_one({'AvailabilityZone': 'NOT_SET', 'LoadBalancerName': 'pierone-1'}, 'Latency', 'Average', 'AWS/ELB')
    assert elb_data is None
    assert not client.list_metrics.called
Ejemplo n.º 4
0
def test_cloudwatch_query_one_no_result(monkeypatch):
    client = MagicMock()
    client.get_metric_statistics.return_value = {'Datapoints': []}
    get = MagicMock()
    get.return_value.json.return_value = {'region': 'myregion'}
    monkeypatch.setattr('requests.get', get)
    monkeypatch.setattr('boto3.client', lambda x, region_name: client)
    cloudwatch = CloudwatchWrapper()
    elb_data = cloudwatch.query_one(
        {
            'AvailabilityZone': 'NOT_SET',
            'LoadBalancerName': 'pierone-1'
        }, 'Latency', 'Average', 'AWS/ELB')
    assert elb_data is None
    assert not client.list_metrics.called
Ejemplo n.º 5
0
def test_cloudwatch_query_one_multiple_and_extended_statistics_no_points(
        monkeypatch):
    client = MagicMock()
    client.get_metric_statistics.return_value = {
        'Datapoints': [{
            'Timestamp': 99,
            'Average': 6.15,
            'Maximum': 120.43
        }, {
            'Timestamp': 11,
            'Average': 5.65,
            'Maximum': 100.12
        }]
    }

    get = MagicMock()
    get.return_value.json.return_value = {'region': 'myregion'}
    monkeypatch.setattr('requests.get', get)

    monkeypatch.setattr('boto3.client', lambda x, region_name: client)

    cloudwatch = CloudwatchWrapper()

    start = datetime.datetime.now()
    end = start  # makes no sense, but works for our test
    elb_data = cloudwatch.query_one({'LoadBalancerName': 'pierone-1'},
                                    'Latency', ['Average', 'Maximum'],
                                    'AWS/ELB',
                                    extended_statistics=['p99', 'p95'],
                                    start=start,
                                    end=end)

    assert {'Average': 6.15, 'Maximum': 120.43} == elb_data

    client.get_metric_statistics.assert_called_with(
        Namespace='AWS/ELB',
        MetricName='Latency',
        Dimensions=[{
            'Name': 'LoadBalancerName',
            'Value': 'pierone-1'
        }],
        StartTime=start,
        EndTime=end,
        Period=60,
        Statistics=['Average', 'Maximum'],
        ExtendedStatistics=['p99', 'p95'])
Ejemplo n.º 6
0
def test_cloudwatch_query_one(monkeypatch):
    client = MagicMock()
    client.get_metric_statistics.return_value = {
        'Datapoints': [{
            'Timestamp': 99,
            'Average': 111.25
        }, {
            'Timestamp': 11,
            'Average': 100.25
        }]
    }
    get = MagicMock()
    get.return_value.json.return_value = {'region': 'myregion'}
    monkeypatch.setattr('requests.get', get)
    monkeypatch.setattr('boto3.client', lambda x, region_name: client)
    cloudwatch = CloudwatchWrapper()
    start = datetime.datetime.now()
    end = start  # makes no sense, but works for our test
    elb_data = cloudwatch.query_one({'LoadBalancerName': 'pierone-1'},
                                    'Latency',
                                    'Average',
                                    'AWS/ELB',
                                    start=start,
                                    end=end)
    assert 111.25 == elb_data
    assert not client.list_metrics.called
    client.get_metric_statistics.assert_called_with(Namespace='AWS/ELB',
                                                    MetricName='Latency',
                                                    Dimensions=[{
                                                        'Name':
                                                        'LoadBalancerName',
                                                        'Value':
                                                        'pierone-1'
                                                    }],
                                                    StartTime=start,
                                                    EndTime=end,
                                                    Period=60,
                                                    Statistics=['Average'])
Ejemplo n.º 7
0
def test_cloudwatch_query_one(monkeypatch):
    client = MagicMock()
    client.get_metric_statistics.return_value = {
        'Datapoints': [
            {'Timestamp': 99, 'Average': 111.25},
            {'Timestamp': 11, 'Average': 100.25}
        ]}
    get = MagicMock()
    get.return_value.json.return_value = {'region': 'myregion'}
    monkeypatch.setattr('requests.get', get)
    monkeypatch.setattr('boto3.client', lambda x, region_name: client)
    cloudwatch = CloudwatchWrapper()
    start = datetime.datetime.now()
    end = start # makes no sense, but works for our test
    elb_data = cloudwatch.query_one({'LoadBalancerName': 'pierone-1'}, 'Latency', 'Average', 'AWS/ELB', start=start, end=end)
    assert 111.25 == elb_data
    assert not client.list_metrics.called
    client.get_metric_statistics.assert_called_with(Namespace='AWS/ELB', MetricName='Latency',
            Dimensions=[{'Name': 'LoadBalancerName', 'Value': 'pierone-1'}],
            StartTime=start,
            EndTime=end,
            Period=60,
            Statistics=['Average'])