Exemplo n.º 1
0
    def test_get_bucket_with_3_size_hour_check_buckets(self):
        store = DummyStore(bucket_size=3 * 3600)
        inter = Interval(start=self.start, delta=timedelta(hours=27))
        buckets = list(store._interval_buckets('buba', interval=inter))

        self.assertEqual(buckets[0].start, dt('2018-03-03T06:00:00'))
        self.assertEqual(buckets[-1].start, dt('2018-03-04T09:00:00'))

        self.check_all_intervals(buckets, 'buba', timedelta(seconds=3 * 3600), store)
Exemplo n.º 2
0
    def test_foo(self):
        store = Store(directory='store', bucket_size=600)
        #self.save_days_of_metric(store=store, days=7)
        start = time()
        delta = seconds(3600 * 24)
        records = list(
            store.retrieve_raw(name='temp',
                               interval=Interval(
                                   start=dt('2018-03-03T12:30:00'),
                                   delta=seconds(3600 * 24 * 21))))

        print('Retrieving {} records took {}'.format(len(records),
                                                     time() - start))
Exemplo n.º 3
0
 def setUp(self):
     self.start = dt('2018-03-03T12:30:00')
Exemplo n.º 4
0
 def test_get_bucket_with_size_one_hour_check_buckets(self):
     store = DummyStore(bucket_size=3600)
     checks = (
         Check(date=dt('2018-03-03T01:35:57'), bucket=dt('2018-03-03T01:00:00')),
         Check(date=dt('2018-03-03T04:05:42'), bucket=dt('2018-03-03T04:00:00')),
         Check(date=dt('2018-03-03T09:10:00'), bucket=dt('2018-03-03T09:00:00')),
         Check(date=dt('2018-03-03T12:12:57'), bucket=dt('2018-03-03T12:00:00')),
         Check(date=dt('2018-03-03T14:25:57'), bucket=dt('2018-03-03T14:00:00')),
         Check(date=dt('2018-03-03T16:33:57'), bucket=dt('2018-03-03T16:00:00')),
         Check(date=dt('2018-03-03T19:49:57'), bucket=dt('2018-03-03T19:00:00')),
         Check(date=dt('2018-03-03T21:51:57'), bucket=dt('2018-03-03T21:00:00')),
         Check(date=dt('2018-03-03T22:59:59'), bucket=dt('2018-03-03T22:00:00')),
     )
     for check in checks:
         bucket = store._get_bucket(name='fufu', dt=check.date)
         self.assertEqual(bucket.start, check.bucket)
         self.assertEqual(bucket.length, store.bucket_size)
Exemplo n.º 5
0
    def test_get_bucket_with_size_less_than_hour_check_buckets(self):
        store = DummyStore(bucket_size=600)
        checks = (
            Check(date=dt('2018-03-03T12:35:57'), bucket=dt('2018-03-03T12:30:00')),
            Check(date=dt('2018-03-03T12:05:42'), bucket=dt('2018-03-03T12:00:00')),
            Check(date=dt('2018-03-03T12:10:00'), bucket=dt('2018-03-03T12:10:00')),
            Check(date=dt('2018-03-03T12:12:57'), bucket=dt('2018-03-03T12:10:00')),
            Check(date=dt('2018-03-03T12:25:57'), bucket=dt('2018-03-03T12:20:00')),
            Check(date=dt('2018-03-03T12:33:57'), bucket=dt('2018-03-03T12:30:00')),
            Check(date=dt('2018-03-03T12:49:57'), bucket=dt('2018-03-03T12:40:00')),
            Check(date=dt('2018-03-03T23:51:57'), bucket=dt('2018-03-03T23:50:00')),
            Check(date=dt('2018-03-03T12:59:59'), bucket=dt('2018-03-03T12:50:00')),
        )
        for check in checks:
            bucket = store._get_bucket(name='fufu', dt=check.date)
            self.assertEqual(bucket.start, check.bucket)

        store = DummyStore(bucket_size=300)
        checks = (
            Check(date=dt('2018-03-03T12:35:57'), bucket=dt('2018-03-03T12:35:00')),
            Check(date=dt('2018-03-03T12:05:42'), bucket=dt('2018-03-03T12:05:00')),
            Check(date=dt('2018-03-03T12:10:00'), bucket=dt('2018-03-03T12:10:00')),
            Check(date=dt('2018-03-03T12:12:57'), bucket=dt('2018-03-03T12:10:00')),
            Check(date=dt('2018-03-03T12:25:57'), bucket=dt('2018-03-03T12:25:00')),
            Check(date=dt('2018-03-03T12:33:57'), bucket=dt('2018-03-03T12:30:00')),
            Check(date=dt('2018-03-03T12:49:57'), bucket=dt('2018-03-03T12:45:00')),
            Check(date=dt('2018-03-03T23:51:57'), bucket=dt('2018-03-03T23:50:00')),
            Check(date=dt('2018-03-03T12:59:59'), bucket=dt('2018-03-03T12:55:00')),
        )
        for check in checks:
            bucket = store._get_bucket(name='fufu', dt=check.date)
            self.assertEqual(bucket.start, check.bucket)

        store = DummyStore(bucket_size=420)
        checks = (
            Check(date=dt('2018-03-03T12:35:57'), bucket=dt('2018-03-03T12:35:00')),
            Check(date=dt('2018-03-03T12:05:42'), bucket=dt('2018-03-03T12:00:00')),
            Check(date=dt('2018-03-03T12:10:00'), bucket=dt('2018-03-03T12:07:00')),
            Check(date=dt('2018-03-03T12:12:57'), bucket=dt('2018-03-03T12:07:00')),
            Check(date=dt('2018-03-03T12:25:57'), bucket=dt('2018-03-03T12:21:00')),
            Check(date=dt('2018-03-03T12:33:57'), bucket=dt('2018-03-03T12:28:00')),
            Check(date=dt('2018-03-03T12:49:57'), bucket=dt('2018-03-03T12:49:00')),
            Check(date=dt('2018-03-03T23:51:57'), bucket=dt('2018-03-03T23:49:00')),
            Check(date=dt('2018-03-03T12:59:59'), bucket=dt('2018-03-03T12:56:00')),
        )
        for check in checks:
            bucket = store._get_bucket(name='fufu', dt=check.date)
            self.assertEqual(bucket.start, check.bucket)
            self.assertEqual(bucket.length, store.bucket_size)
Exemplo n.º 6
0
class BaseStoreGetBucketsTestCase(TestCase):

    start = dt('2018-03-03T06:25:11')
    end = dt('2018-03-04T07:25:11')

    def test_get_buckets_with_size_less_than_hour_check_buckets(self):
        store = DummyStore(bucket_size=600)
        inter = Interval(start=self.start, delta=timedelta(hours=10))
        buckets = list(store._interval_buckets('buba', interval=inter))

        self.assertEqual(buckets[0].start, dt('2018-03-03T06:20:00'))

        self.assertEqual(buckets[-1].start, dt('2018-03-03T16:20:00'))

        self.check_all_intervals(buckets, 'buba', timedelta(seconds=600), store)

    def test_get_buckets_300_check_buckets(self):
        store = DummyStore(bucket_size=300)
        inter = Interval(start=self.start, delta=timedelta(hours=5))
        buckets = list(store._interval_buckets('buba', interval=inter))

        self.assertEqual(buckets[0].start, dt('2018-03-03T06:25:00'))

        self.assertEqual(buckets[-1].start, dt('2018-03-03T11:25:00'))

        self.check_all_intervals(buckets, 'buba', timedelta(seconds=300), store)

    def test_get_buckets_size_420_check_buckets(self):
        store = DummyStore(bucket_size=420)
        inter = Interval(start=self.start, delta=timedelta(hours=27))
        buckets = list(store._interval_buckets('buba', interval=inter))

        self.assertEqual(buckets[0].start, dt('2018-03-03T06:21:00'))

        self.assertEqual(buckets[-1].start, dt('2018-03-04T09:21:00'))

        self.check_all_intervals(buckets, 'buba', timedelta(seconds=420), store)

    def test_get_bucket_with_1_size_hour_check_buckets(self):
        store = DummyStore(bucket_size=3600)
        inter = Interval(start=self.start, delta=timedelta(hours=27))
        buckets = list(store._interval_buckets('buba', interval=inter))

        self.assertEqual(buckets[0].start, dt('2018-03-03T06:00:00'))
        self.assertEqual(buckets[-1].start, dt('2018-03-04T09:00:00'))

        self.check_all_intervals(buckets, 'buba', timedelta(seconds=3600), store)

    def test_get_bucket_with_2_size_hour_check_buckets(self):
        store = DummyStore(bucket_size=7200)
        inter = Interval(start=self.start, delta=timedelta(hours=27))
        buckets = list(store._interval_buckets('buba', interval=inter))

        self.assertEqual(buckets[0].start, dt('2018-03-03T06:00:00'))
        self.assertEqual(buckets[-1].start, dt('2018-03-04T08:00:00'))

        self.check_all_intervals(buckets, 'buba', timedelta(seconds=7200), store)

    def test_get_bucket_with_3_size_hour_check_buckets(self):
        store = DummyStore(bucket_size=3 * 3600)
        inter = Interval(start=self.start, delta=timedelta(hours=27))
        buckets = list(store._interval_buckets('buba', interval=inter))

        self.assertEqual(buckets[0].start, dt('2018-03-03T06:00:00'))
        self.assertEqual(buckets[-1].start, dt('2018-03-04T09:00:00'))

        self.check_all_intervals(buckets, 'buba', timedelta(seconds=3 * 3600), store)


    def check_all_intervals(self, buckets, name, delta, store):

        hour = buckets[0].start.hour
        for i, bucket in enumerate(buckets):
            # on beginning of each our we will get the 00 bucket
            if hour == bucket.start.hour:
                if i > 0:
                    self.assertEqual(bucket.start, buckets[i - 1].start + delta)
            else:
                self.assertEqual(0, bucket.start.minute)
                hour = bucket.start.hour

            self.assertEqual(bucket.name, name)
            self.assertEqual(bucket.length, delta.seconds)

            # make sure that random timestamp from inside that bucket lands
            # in that bucket
            timestamp = bucket.start + timedelta(seconds=randint(0, bucket.length - 1))
            same_bucket = store._get_bucket(name, timestamp)
            # we can get here a bucket from the next hour (every hour is) so it will be the same bucket
            # or first one from last hour
            if same_bucket.start.hour == bucket.start.hour:
                self.assertEqual(same_bucket.start, bucket.start)
            else:
                # start hour will be next hour it might be 0 at midnight hence modulo 24
                self.assertEqual(same_bucket.start.hour, (bucket.start.hour + 1) % 24)

                self.assertEqual(same_bucket.start.minute, 0)
Exemplo n.º 7
0
 def test_get_bucket_check_name(self):
     store = Store(bucket_size=24 * 3600)
     bucket = store._get_bucket('some_name', dt('2018-03-03T00:00:00'))
     self.assertEqual(bucket.name, 'some_name')
Exemplo n.º 8
0
 def test_get_bucket_not_existing_check_return_and_not_created(self):
     with temporary_directory() as tem_dir:
         store = Store(directory=tem_dir, bucket_size=600)
         buck = store._get_bucket('some', dt('2017-03-03T10:25:11'))
         self.assertFalse(os.path.exists(buck.full_path))
Exemplo n.º 9
0
 def setUp(self):
     self.name = 'some'
     self.start = dt('2018-03-03T12:30:00')