def test_build_by_time(self):
    """Tests basic build_results with valid parameters (group by time)."""
    build_args = [
        'testFuzzer_2_fuzzer', ['job'], 'by-time', '2016-10-19', '2016-10-21'
    ]
    self.client.raw_query.return_value = _mock_query(*build_args)
    result = fuzzer_stats.build_results(*build_args)

    self.assertDictEqual(
        ast.literal_eval(_read_data_file('by_time_expected.txt')), result)
  def test_build_none_results(self):
    """Tests basic build_results, with bigquery returning None for some
    columns."""
    build_args = ['testFuzzer', None, 'by-fuzzer', '2016-10-20', '2016-10-22']
    self.client.raw_query.return_value = _mock_query(*build_args)
    result = fuzzer_stats.build_results(*build_args)

    self.assertDictEqual(
        ast.literal_eval(_read_data_file('by_fuzzer_expected_None.txt')),
        result)
  def test_build_today_results(self):
    """Tests build_results is caching results from today appropriately."""
    test_helpers.patch(self, [
        'handlers.fuzzer_stats._build_old_results',
        'handlers.fuzzer_stats._build_todays_results',
        'base.utils.utcnow',
    ])

    self.mock._build_old_results.return_value = None
    self.mock._build_todays_results.return_value = None
    self.mock.utcnow.return_value = datetime.datetime(2018, 5, 4)

    date_today = '2018-05-04'
    build_args = [
        'testFuzzer_2_fuzzer', ['job'], 'by-time', date_today, date_today
    ]

    # Test that results from yesterday are cached for a full day.
    fuzzer_stats.build_results(*build_args)
    self.mock._build_todays_results.assert_called_with(*build_args)
    self.assertEqual(0, self.mock._build_old_results.call_count)
 def test_build_invalid_params(self):
   """Tests build_results with invalid/missing params."""
   with self.assertRaises(helpers.EarlyExitException):
     fuzzer_stats.build_results('', '', '', '', '')