Esempio n. 1
0
    def test_response_unixtime_converted_to_isodate(self, mock_get_request):
        mock_response = Mock()
        mock_response.json.return_value = {
            'summary': {
                'hours': [{
                    'starttime': 1356998400
                }, {
                    'starttime': 1356998500
                }]
            }
        }
        mock_get_request.return_value = mock_response

        pingdom = Pingdom(self.config)

        mock_check_id = Mock()
        mock_check_id.return_value = '12345'
        pingdom.check_id = mock_check_id
        uptime = pingdom.stats(check_name='Foo',
                               start=date(2012, 12, 31),
                               end=date(2013, 1, 1))

        assert_that(uptime[0]['starttime'],
                    is_(datetime(2013, 1, 1, 0, tzinfo=pytz.UTC)))
        assert_that(uptime[1]['starttime'],
                    is_(datetime(2013, 1, 1, 0, 1, 40, tzinfo=pytz.UTC)))
    def test_querying_for_stats(self, send_request):

        def mock_send_request(*args, **kwargs):
            if kwargs["path"] == "summary.performance/12345":
                return {"summary": {"hours": []}}
            if kwargs["path"] == "checks":
                return {"checks": [{"name": "Foo", "id": 12345}]}

        send_request.side_effect = mock_send_request

        pingdom = Pingdom(self.config)

        uptime = pingdom.stats(
            check_name='Foo',
            start=datetime(2012, 12, 31, 18, 0, 0),
            end=datetime(2013, 1, 1, 18, 0, 0)
        )

        send_request.assert_called_with(
            path="summary.performance/12345",
            user="******",
            password="******",
            app_key="12345",
            url_params={
                "includeuptime": "true",
                "from": unix_timestamp(datetime(2012, 12, 31, 18, 0, 0)),
                "to": unix_timestamp(datetime(2013, 1, 1, 18, 0, 0)),
                "resolution": "hour"
            }
        )

        assert_that(uptime, is_([]))
Esempio n. 3
0
    def test_querying_for_stats(self, send_request):
        def mock_send_request(*args, **kwargs):
            if kwargs["path"] == "summary.performance/12345":
                return {"summary": {"hours": []}}
            if kwargs["path"] == "checks":
                return {"checks": [{"name": "Foo", "id": 12345}]}

        send_request.side_effect = mock_send_request

        pingdom = Pingdom(self.config)

        uptime = pingdom.stats(check_name='Foo',
                               start=datetime(2012, 12, 31, 18, 0, 0),
                               end=datetime(2013, 1, 1, 18, 0, 0))

        send_request.assert_called_with(
            path="summary.performance/12345",
            user="******",
            password="******",
            app_key="12345",
            url_params={
                "includeuptime": "true",
                "from": unix_timestamp(datetime(2012, 12, 31, 18, 0, 0)),
                "to": unix_timestamp(datetime(2013, 1, 1, 18, 0, 0)),
                "resolution": "hour"
            })

        assert_that(uptime, is_([]))
    def test_stats_returns_none_when_there_is_an_error(self, send_request):
        send_request.side_effect = requests.exceptions.HTTPError()

        pingdom = Pingdom(self.config)
        mock_check_id = Mock()
        mock_check_id.return_value = '12345'
        pingdom.check_id = mock_check_id
        uptime = pingdom.stats_for_24_hours(name="don't care",
                                            limit_time=date(2013, 1, 1))
        assert_that(uptime, is_(None))
Esempio n. 5
0
    def test_stats_returns_none_when_there_is_an_error(self, send_request):
        send_request.side_effect = requests.exceptions.HTTPError()

        pingdom = Pingdom(self.config)
        mock_check_id = Mock()
        mock_check_id.return_value = '12345'
        pingdom.check_id = mock_check_id
        uptime = pingdom.stats(check_name="don't care",
                               start=date(2012, 12, 31),
                               end=date(2013, 1, 1))
        assert_that(uptime, is_(None))
def main():
    configure_logging()

    args = arguments.parse_args(name="Pingdom")

    start_dt, end_dt = parse_time_range(args.start_at, args.end_at)

    pingdom = Pingdom(args.credentials)

    check_name = args.query['query']['name']
    pingdom_stats = pingdom.stats(check_name, start_dt, end_dt)

    push_stats_to_data_set(
        pingdom_stats,
        check_name,
        data_set_url=args.query['target']['data_set'],
        data_set_token=args.query['target']['token'])
    def test_response_unixtime_converted_to_isodate(self, mock_get_request):
        mock_response = Mock()
        mock_response.json.return_value = {
            'summary': {
                'hours': [{'starttime': 1356998400}, {'starttime': 1356998500}]
            }
        }
        mock_get_request.return_value = mock_response

        pingdom = Pingdom(self.config)

        mock_check_id = Mock()
        mock_check_id.return_value = '12345'
        pingdom.check_id = mock_check_id
        uptime = pingdom.stats_for_24_hours(name='Foo',
                                            limit_time=date(2013, 1, 1))

        assert_that(uptime[0]['starttime'],
                    is_(datetime(2013, 1, 1, 0, tzinfo=pytz.UTC)))
        assert_that(uptime[1]['starttime'],
                    is_(datetime(2013, 1, 1, 0, 1, 40, tzinfo=pytz.UTC)))
Esempio n. 8
0
 def test_init_from_config(self):
     pingdom = Pingdom(self.config)
     assert_that(pingdom, is_(instance_of(Pingdom)))
        'check': name_of_check
    }


def truncate_hour_fraction(a_datetime):
    return a_datetime.replace(minute=0, second=0, microsecond=0)


if __name__ == '__main__':
    app_path = os.path.dirname(os.path.realpath(__file__))
    logfile_path = os.path.join(app_path, 'log')
    set_up_logging('pingdom', logging.DEBUG, logfile_path)

    args = arguments.parse_args(name="Pingdom")

    collection_date = datetime.now()
    if args.end_at:
        collection_date = args.end_at

    pingdom = Pingdom(args.credentials)

    check_name = args.query['query']['name']
    timestamp = truncate_hour_fraction(collection_date)
    pingdom_stats = pingdom.stats_for_24_hours(check_name, timestamp)

    bucket_url = args.query['target']['bucket']
    bucket_token = args.query['target']['token']
    bucket = Bucket(url=bucket_url, token=bucket_token)
    bucket.post([convert_from_pingdom_to_backdrop(thing, check_name) for
                 thing in pingdom_stats])