def test_02_delete_stats(self):

        ts = datetime.datetime.now()
        write_stats("key2", "B")

        # Now we delete some keys (the three old ones)
        with self.app.test_request_context('/monitoring/key2',
                                           method='DELETE',
                                           data={
                                               "start": "2010-01-01",
                                               "end":
                                               ts.strftime(AUTH_DATE_FORMAT)
                                           },
                                           headers={'Authorization': self.at}):
            res = self.app.full_dispatch_request()
            self.assertTrue(res.status_code == 200, res)
            result = json.loads(res.data).get("result")
            # Number of deleted values
            self.assertEqual(result.get("value"), 3)

        # ..and check if there is only one key left!
        with self.app.test_request_context('/monitoring/key2',
                                           method='GET',
                                           headers={'Authorization': self.at}):
            res = self.app.full_dispatch_request()
            self.assertTrue(res.status_code == 200, res)
            result = json.loads(res.data).get("result")
            # Number of remaining values
            self.assertEqual(len(result.get("value")), 1)
    def test_02_delete_stats(self):

        ts = datetime.datetime.now()
        write_stats("key2", "B")

        # Now we delete some keys (the three old ones)
        with self.app.test_request_context('/monitoring/key2',
                                           method='DELETE',
                                           data={"start": "2010-01-01",
                                                 "end": ts.strftime(AUTH_DATE_FORMAT)},
                                           headers={'Authorization': self.at}):
            res = self.app.full_dispatch_request()
            self.assertTrue(res.status_code == 200, res)
            result = json.loads(res.data.decode('utf8')).get("result")
            # Number of deleted values
            self.assertEqual(result.get("value"), 3)

        # ..and check if there is only one key left!
        with self.app.test_request_context('/monitoring/key2',
                                           method='GET',
                                           headers={'Authorization': self.at}):
            res = self.app.full_dispatch_request()
            self.assertTrue(res.status_code == 200, res)
            result = json.loads(res.data.decode('utf8')).get("result")
            # Number of remaining values
            self.assertEqual(len(result.get("value")), 1)
Example #3
0
    def do(self, params):
        for opt in self.options.keys():
            if is_true(params.get(opt)):
                log.debug("Got param {0}".format(opt))
                write_stats(opt, getattr(self, '_' + opt))

        return True
    def test_02_delete_stats(self):
        key1 = "otherkey"
        now = datetime.datetime.now(tzlocal())
        write_stats(key1, 12, timestamp=now - timedelta(days=1))
        write_stats(key1, 13, timestamp=now)
        write_stats(key1, 14, timestamp=now + timedelta(days=1))
        db.session.commit()
        self.assertEqual(
            MonitoringStats.query.filter_by(stats_key=key1).count(), 3)

        # delete the last two entries
        r = delete_stats(key1, start_timestamp=now - timedelta(minutes=60))

        # check there is only one entry
        db.session.commit()
        self.assertEqual(
            MonitoringStats.query.filter_by(stats_key=key1).count(), 1)
        self.assertEqual(r, 2)

        # Again write three entries
        write_stats(key1, 13, timestamp=now)
        write_stats(key1, 14, timestamp=now + timedelta(days=1))
        db.session.commit()
        self.assertEqual(
            MonitoringStats.query.filter_by(stats_key=key1).count(), 3)

        # Delete the first two entries
        r = delete_stats(key1, end_timestamp=now + timedelta(minutes=60))
        db.session.commit()
        self.assertEqual(
            MonitoringStats.query.filter_by(stats_key=key1).count(), 1)
        self.assertEqual(r, 2)
Example #5
0
    def do(self, params):
        for opt in self.options.keys():
            if is_true(params.get(opt)):
                log.debug("Got param {0}".format(opt))
                write_stats(opt, getattr(self, '_' + opt))

        return True
Example #6
0
    def do(self, params):
        event_counter = params.get("event_counter")
        stats_key = params.get("stats_key")
        reset_event_counter = params.get("reset_event_counter")

        counter_value = read(event_counter)
        if is_true(reset_event_counter) and counter_value:
            reset(event_counter)

        # now write the current value of the counter
        if counter_value is None:
            log.warning(u"Trying to create statistics of a counter_value '{0}', "
                        u"that does not exist.".format(event_counter))
        else:
            write_stats(stats_key, counter_value)

        return True
Example #7
0
    def test_03_get_keys(self):
        # delete old entries
        keys = get_stats_keys()
        for k in keys:
            delete_stats(k)

        # write new stats entries
        write_stats("key1", 13)
        write_stats("key1", 13)
        write_stats("key1", 13)
        write_stats("key2", 12)
        write_stats("key3", 12)

        keys = get_stats_keys()
        self.assertEqual(len(keys), 3)
        self.assertTrue("key1" in keys)
        self.assertTrue("key2" in keys)
        self.assertTrue("key3" in keys)
    def test_03_get_keys(self):
        # delete old entries
        keys = get_stats_keys()
        for k in keys:
            delete_stats(k)

        # write new stats entries
        write_stats("key1", 13)
        write_stats("key1", 13)
        write_stats("key1", 13)
        write_stats("key2", 12)
        write_stats("key3", 12)

        keys = get_stats_keys()
        self.assertEqual(len(keys), 3)
        self.assertTrue("key1" in keys)
        self.assertTrue("key2" in keys)
        self.assertTrue("key3" in keys)
    def test_02_delete_stats(self):
        key1 = "otherkey"
        now = datetime.datetime.now(tzlocal())
        write_stats(key1, 12, timestamp=now- timedelta(days=1))
        write_stats(key1, 13, timestamp=now)
        write_stats(key1, 14, timestamp=now + timedelta(days=1))
        self.assertEqual(MonitoringStats.query.filter_by(stats_key=key1).count(), 3)

        # delete the last two entries
        r = delete_stats(key1, start_timestamp=now - timedelta(minutes=60))

        # check there is only one entry
        self.assertEqual(MonitoringStats.query.filter_by(stats_key=key1).count(), 1)
        self.assertEqual(r, 2)

        # Again write three entries
        write_stats(key1, 13, timestamp=now)
        write_stats(key1, 14, timestamp=now + timedelta(days=1))
        self.assertEqual(MonitoringStats.query.filter_by(stats_key=key1).count(), 3)

        # Delete the first two entries
        r = delete_stats(key1, end_timestamp=now + timedelta(minutes=60))
        self.assertEqual(MonitoringStats.query.filter_by(stats_key=key1).count(), 1)
        self.assertEqual(r, 2)
    def test_01_write_stats(self):
        key1 = "some_key"
        write_stats(key1, 12)
        write_stats(key1, 13)

        self.assertEqual(MonitoringStats.query.filter_by(stats_key=key1).count(), 2)
        # Assert naive datetime
        self.assertEqual(MonitoringStats.query.filter_by(stats_key=key1).first().timestamp.tzinfo, None)

        # Now we write a new value, but with the paramter to delete old values
        write_stats(key1, 14, reset_values=True)
        self.assertEqual(MonitoringStats.query.filter_by(stats_key=key1).count(), 1)
Example #11
0
    def test_01_write_stats(self):
        key1 = "some_key"
        write_stats(key1, 12)
        write_stats(key1, 13)

        self.assertEqual(
            MonitoringStats.query.filter_by(stats_key=key1).count(), 2)
        # Assert naive datetime
        self.assertEqual(
            MonitoringStats.query.filter_by(
                stats_key=key1).first().timestamp.tzinfo, None)

        # Now we write a new value, but with the paramter to delete old values
        write_stats(key1, 14, reset_values=True)
        self.assertEqual(
            MonitoringStats.query.filter_by(stats_key=key1).count(), 1)
    def test_01_write_stats(self):
        key1 = "some_key"
        write_stats(key1, 12)
        write_stats(key1, 13)

        self.assertEqual(
            MonitoringStats.query.filter_by(stats_key=key1).count(), 2)
        # Assert naive datetime
        self.assertEqual(
            MonitoringStats.query.filter_by(
                stats_key=key1).first().timestamp.tzinfo, None)

        # Now we write a new value, but with the parameter to delete old values
        write_stats(key1, 14, reset_values=True)
        # Since the sqlstats monitoring module handles the db in its own
        # session, we need to refresh the current session in order to retrieve
        # the updated (removed) data
        db.session.commit()
        self.assertEqual(
            MonitoringStats.query.filter_by(stats_key=key1).count(), 1)
    def test_01_get_stats(self):

        # create some statistics

        write_stats("key1", 1)
        write_stats("key2", "A")
        write_stats("key1", 2)
        ts = datetime.datetime.now().isoformat()

        write_stats("key2", "B")
        write_stats("key1", 3)
        write_stats("key2", "A")
        write_stats("key1", 4)

        # get available stats keys
        with self.app.test_request_context('/monitoring/',
                                           method='GET',
                                           headers={'Authorization': self.at}):

            res = self.app.full_dispatch_request()
            self.assertTrue(res.status_code == 200, res)
            result = json.loads(res.data).get("result")
            self.assertTrue("key1" in result.get("value"))
            self.assertTrue("key2" in result.get("value"))

        # check values of key1
        with self.app.test_request_context('/monitoring/key1',
                                           method='GET',
                                           headers={'Authorization': self.at}):

            res = self.app.full_dispatch_request()
            self.assertTrue(res.status_code == 200, res)
            result = json.loads(res.data).get("result")
            self.assertEqual(len(result.get("value")), 4)
            self.assertEqual(result.get("value")[0][1], 1)
            self.assertEqual(result.get("value")[1][1], 2)
            self.assertEqual(result.get("value")[2][1], 3)
            self.assertEqual(result.get("value")[3][1], 4)

        # check values of key1, with a start value in the past
        with self.app.test_request_context(
                '/monitoring/key1',
                data={"start": "2010-01-01 10:00+0200"},
                method='GET',
                headers={'Authorization': self.at}):

            res = self.app.full_dispatch_request()
            self.assertTrue(res.status_code == 200, res)
            result = json.loads(res.data).get("result")
            self.assertEqual(len(result.get("value")), 4)

        # End value in the past will return no data.
        with self.app.test_request_context('/monitoring/key1',
                                           data={"end": "2010-01-01"},
                                           method='GET',
                                           headers={'Authorization': self.at}):

            res = self.app.full_dispatch_request()
            self.assertTrue(res.status_code == 200, res)
            result = json.loads(res.data).get("result")
            self.assertEqual(len(result.get("value")), 0)

        # check with start timestamp after the 2nd value.
        # This should return the 3rd and 4th.
        with self.app.test_request_context('/monitoring/key1',
                                           data={"start": ts},
                                           method='GET',
                                           headers={'Authorization': self.at}):

            res = self.app.full_dispatch_request()
            self.assertTrue(res.status_code == 200, res)
            result = json.loads(res.data).get("result")
            self.assertEqual(len(result.get("value")), 2)
            self.assertEqual(result.get("value")[0][1], 3)
            self.assertEqual(result.get("value")[1][1], 4)

        # check the last value of key1
        with self.app.test_request_context('/monitoring/key1/last',
                                           method='GET',
                                           headers={'Authorization': self.at}):

            res = self.app.full_dispatch_request()
            self.assertTrue(res.status_code == 200, res)
            result = json.loads(res.data).get("result")
            self.assertEqual(result.get("value"), 4)
    def test_01_get_stats(self):

        # create some statistics

        write_stats("key1", 1)
        write_stats("key2", "A")
        write_stats("key1", 2)
        ts = datetime.datetime.now().isoformat()

        write_stats("key2", "B")
        write_stats("key1", 3)
        write_stats("key2", "A")
        write_stats("key1", 4)

        # get available stats keys
        with self.app.test_request_context('/monitoring/',
                                           method='GET',
                                           headers={'Authorization': self.at}):

            res = self.app.full_dispatch_request()
            self.assertTrue(res.status_code == 200, res)
            result = json.loads(res.data.decode('utf8')).get("result")
            self.assertTrue("key1" in result.get("value"))
            self.assertTrue("key2" in result.get("value"))

        # check values of key1
        with self.app.test_request_context('/monitoring/key1',
                                           method='GET',
                                           headers={'Authorization': self.at}):

            res = self.app.full_dispatch_request()
            self.assertTrue(res.status_code == 200, res)
            result = json.loads(res.data.decode('utf8')).get("result")
            self.assertEqual(len(result.get("value")), 4)
            self.assertEqual(result.get("value")[0][1], 1)
            self.assertEqual(result.get("value")[1][1], 2)
            self.assertEqual(result.get("value")[2][1], 3)
            self.assertEqual(result.get("value")[3][1], 4)

        # check values of key1, with a start value in the past
        with self.app.test_request_context('/monitoring/key1',
                                           data={"start": "2010-01-01 10:00+0200"},
                                           method='GET',
                                           headers={'Authorization': self.at}):

            res = self.app.full_dispatch_request()
            self.assertTrue(res.status_code == 200, res)
            result = json.loads(res.data.decode('utf8')).get("result")
            self.assertEqual(len(result.get("value")), 4)

        # End value in the past will return no data.
        with self.app.test_request_context('/monitoring/key1',
                                           data={"end": "2010-01-01"},
                                           method='GET',
                                           headers={'Authorization': self.at}):

            res = self.app.full_dispatch_request()
            self.assertTrue(res.status_code == 200, res)
            result = json.loads(res.data.decode('utf8')).get("result")
            self.assertEqual(len(result.get("value")), 0)

        # check with start timestamp after the 2nd value.
        # This should return the 3rd and 4th.
        with self.app.test_request_context('/monitoring/key1',
                                           data={"start": ts},
                                           method='GET',
                                           headers={'Authorization': self.at}):

            res = self.app.full_dispatch_request()
            self.assertTrue(res.status_code == 200, res)
            result = json.loads(res.data.decode('utf8')).get("result")
            self.assertEqual(len(result.get("value")), 2)
            self.assertEqual(result.get("value")[0][1], 3)
            self.assertEqual(result.get("value")[1][1], 4)

        # check the last value of key1
        with self.app.test_request_context('/monitoring/key1/last',
                                           method='GET',
                                           headers={'Authorization': self.at}):

            res = self.app.full_dispatch_request()
            self.assertTrue(res.status_code == 200, res)
            result = json.loads(res.data.decode('utf8')).get("result")
            self.assertEqual(result.get("value"), 4)
    def test_04_get_values(self):
        # delete old entries
        keys = get_stats_keys()
        for k in keys:
            delete_stats(k)

        ts = datetime.datetime.now(tzlocal())
        write_stats("key1", 1, timestamp=ts - timedelta(minutes=10))
        write_stats("key1", 2, timestamp=ts - timedelta(minutes=9))
        write_stats("key1", 3, timestamp=ts - timedelta(minutes=8))
        write_stats("key1", 4, timestamp=ts - timedelta(minutes=7))
        write_stats("key1", 5, timestamp=ts - timedelta(minutes=6))
        write_stats("key1", 6, timestamp=ts - timedelta(minutes=5))
        write_stats("key1", 7, timestamp=ts - timedelta(minutes=4))
        write_stats("key1", 8, timestamp=ts - timedelta(minutes=3))
        write_stats("key1", 9, timestamp=ts - timedelta(minutes=2))
        write_stats("key1", 10, timestamp=ts - timedelta(minutes=1))

        db.session.commit()
        r = get_values("key1")
        self.assertEqual(len(r), 10)
        # The third entry is a 3
        self.assertEqual(r[2][1], 3)
        # The last value is a 10
        self.assertEqual(r[9][1], 10)

        r = get_values("key1",
                       start_timestamp=ts - timedelta(minutes=8),
                       end_timestamp=ts - timedelta(minutes=4))
        # We get 3,4,5,6,7
        self.assertEqual([entry[1] for entry in r], [3, 4, 5, 6, 7])
        # Assert it is the correct time, and timezone-aware UTC
        self.assertEqual(r[0][0], ts - timedelta(minutes=8))
        self.assertEqual(r[0][0].tzinfo, tzutc())
        self.assertEqual(r[-1][0], ts - timedelta(minutes=4))

        r = get_values("key1", start_timestamp=ts - timedelta(minutes=8))
        self.assertEqual([entry[1] for entry in r], [3, 4, 5, 6, 7, 8, 9, 10])

        r = get_values("key1", end_timestamp=ts - timedelta(minutes=8))
        self.assertEqual([entry[1] for entry in r], [1, 2, 3])

        # Get the last value of key1
        r = get_last_value("key1")
        self.assertEqual(r, 10)
    def test_04_get_values(self):
        # delete old entries
        keys = get_stats_keys()
        for k in keys:
            delete_stats(k)

        ts = datetime.datetime.now(tzlocal())
        write_stats("key1", 1, timestamp=ts - timedelta(minutes=10))
        write_stats("key1", 2, timestamp=ts - timedelta(minutes=9))
        write_stats("key1", 3, timestamp=ts - timedelta(minutes=8))
        write_stats("key1", 4, timestamp=ts - timedelta(minutes=7))
        write_stats("key1", 5, timestamp=ts - timedelta(minutes=6))
        write_stats("key1", 6, timestamp=ts - timedelta(minutes=5))
        write_stats("key1", 7, timestamp=ts - timedelta(minutes=4))
        write_stats("key1", 8, timestamp=ts - timedelta(minutes=3))
        write_stats("key1", 9, timestamp=ts - timedelta(minutes=2))
        write_stats("key1", 10, timestamp=ts - timedelta(minutes=1))

        r = get_values("key1")
        self.assertEqual(len(r), 10)
        # The third entry is a 3
        self.assertEqual(r[2][1], 3)
        # The last value is a 10
        self.assertEqual(r[9][1], 10)

        r = get_values("key1",
                       start_timestamp=ts - timedelta(minutes=8),
                       end_timestamp=ts - timedelta(minutes=4))
        # We get 3,4,5,6,7
        self.assertEqual([entry[1] for entry in r], [3, 4, 5, 6, 7])
        # Assert it is the correct time, and timezone-aware UTC
        self.assertEqual(r[0][0], ts - timedelta(minutes=8))
        self.assertEqual(r[0][0].tzinfo, tzutc())
        self.assertEqual(r[-1][0], ts - timedelta(minutes=4))

        r = get_values("key1",
                       start_timestamp=ts - timedelta(minutes=8))
        self.assertEqual([entry[1] for entry in r], [3, 4, 5, 6, 7, 8, 9, 10])

        r = get_values("key1",
                       end_timestamp=ts - timedelta(minutes=8))
        self.assertEqual([entry[1] for entry in r], [1, 2, 3])

        # Get the last value of key1
        r = get_last_value("key1")
        self.assertEqual(r, 10)