Exemplo n.º 1
0
def _do_cross_table_consistency_check(project, date_start, date_end, date_step):
    """Performs sanity checks on all the time windows in the given range.

    Performs all BigSanity sanity checks on the M-Lab BigQuery tables for the
    given project and the given time range.

    Args:
        project: Numerical ID of M-Lab project in BigQuery (e.g. NDT = 0).
        date_start: Limits checks to M-Lab tests that occurred on or after this
            date.
        date_end: Limits checks to M-Lab tests that occurred before this date.
    """
    checker = check_table_equivalence.TableEquivalenceChecker(
        query_construct.TableEquivalenceQueryGeneratorFactory(),
        query_execution.QueryExecutor())
    check_windows = intervals.date_limits_to_intervals(date_start, date_end,
                                                       date_step)
    logger.info('Total of %d time intervals to check.', len(check_windows))
    anomalies_detected = 0
    for date_range_start, date_range_end in check_windows:
        logger.info('Checking cross-table consistency for project=%d, %s -> %s',
                    project, date_range_start.strftime(cli.DATE_FORMAT),
                    date_range_end.strftime(cli.DATE_FORMAT))
        check_result = checker.check(project, date_range_start, date_range_end)
        if not check_result.success:
            logger.error(check_result.message)
            anomalies_detected += 1
    logger.info(
        ('Cross-table consistency check completed for project=%d, %s -> %s, '
         'with %d failures.'), project, date_start.strftime(cli.DATE_FORMAT),
        date_end.strftime(cli.DATE_FORMAT), anomalies_detected)
Exemplo n.º 2
0
 def test_date_limits_to_intervals_when_limit_is_exactly_one_interval(self):
     intervals_expected = [(datetime.datetime(2015, 1, 1),
                            datetime.datetime(2015, 2, 1))]
     intervals_actual = intervals.date_limits_to_intervals(
         datetime.datetime(2015, 1, 1),
         datetime.datetime(2015, 2, 1),
         relativedelta.relativedelta(months=1))
     self.assertSequenceEqual(intervals_expected, intervals_actual)
Exemplo n.º 3
0
 def test_date_limits_to_intervals_when_limit_is_less_than_one_interval(
         self):
     """Intervals should never extend past the end date."""
     intervals_expected = [(datetime.datetime(2015, 1, 1),
                            datetime.datetime(2015, 1, 21))]
     intervals_actual = intervals.date_limits_to_intervals(
         datetime.datetime(2015, 1, 1),
         datetime.datetime(2015, 1, 21),
         relativedelta.relativedelta(months=1))
     self.assertSequenceEqual(intervals_expected, intervals_actual)