def test_get_time_buckets_misaligned(): # Test for regression on bug when querying over x buckets for a timeframe # (end - start) of < x buckets (i.e. end of B0 to start of B2) start = DatalakeRecord.TIME_BUCKET_SIZE_IN_MS * 4 / 5 end = DatalakeRecord.TIME_BUCKET_SIZE_IN_MS * 11 / 5 buckets = DatalakeRecord.get_time_buckets(start, end) assert buckets == [0, 1, 2]
def test_get_time_buckets_misaligned(): # Test for regression on bug when querying over x buckets for a timeframe # (end - start) of < x buckets (i.e. end of B0 to start of B2) start = DatalakeRecord.TIME_BUCKET_SIZE_IN_MS * 4 / 5 end = DatalakeRecord.TIME_BUCKET_SIZE_IN_MS * 11 / 5 buckets = DatalakeRecord.get_time_buckets(start, end) assert buckets == [0, 1, 2]
def query_by_time(self, start, end, what, where=None, cursor=None): results = [] buckets = DatalakeRecord.get_time_buckets(start, end) if cursor: current_bucket = cursor['current_time_bucket'] i = buckets.index(current_bucket) buckets = buckets[i:] for b in buckets: cursor = self._query_time_bucket(b, results, start, end, what, where, cursor) return QueryResults(results, cursor)
def query_by_time(self, start, end, what, where=None, cursor=None): results = [] buckets = DatalakeRecord.get_time_buckets(start, end) if cursor: current_bucket = cursor['current_time_bucket'] i = buckets.index(current_bucket) buckets = buckets[i:] for b in buckets: cursor = self._query_time_bucket(b, results, start, end, what, where, cursor) if cursor and \ cursor.current_time_bucket and \ cursor.current_time_bucket > buckets[-1]: # this is a corner case. It means that the next query would take us # into the next bucket, but the next bucket is beyond the time of # interest. Just clear the cursor in this case. cursor = None return QueryResults(results, cursor)