80 lines
2.5 KiB
Python
Executable File
80 lines
2.5 KiB
Python
Executable File
#!/usr/bin/env vpython3
|
|
# Copyright 2021 The Chromium Authors
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
# pylint: disable=protected-access
|
|
|
|
import json
|
|
import unittest
|
|
import unittest.mock as mock
|
|
|
|
from flake_suppressor_common import queries
|
|
from flake_suppressor_common import unittest_utils as uu
|
|
|
|
|
|
class GetResultCountsUnittest(unittest.TestCase):
|
|
def setUp(self) -> None:
|
|
expectations_proceccor = uu.UnitTestExpectationProcessor()
|
|
results_processor = uu.UnitTestResultProcessor(expectations_proceccor)
|
|
self._querier_instance = uu.UnitTest_BigQueryQuerier(
|
|
1, 'project', results_processor)
|
|
|
|
self._querier_instance._submitted_builds = set(['build-1234', 'build-2345'])
|
|
self._subprocess_patcher = mock.patch(
|
|
'flake_suppressor_common.queries.subprocess.run')
|
|
self._subprocess_mock = self._subprocess_patcher.start()
|
|
self.addCleanup(self._subprocess_patcher.stop)
|
|
|
|
def testBasic(self) -> None:
|
|
"""Tests that queried data is properly returned."""
|
|
|
|
def SideEffect(*_, **kwargs) -> uu.FakeProcess:
|
|
query = kwargs['input']
|
|
if 'submitted_builds' in query:
|
|
# Try results.
|
|
query_result = [{
|
|
'typ_tags': ['a1', 'a2', 'a3'],
|
|
'test_name': 'garbage.suite.garbage.alphanumeric',
|
|
'result_count': '200',
|
|
}, {
|
|
'typ_tags': ['a', 'b', 'c'],
|
|
'test_name': 'garbage.suite.garbage.alphabet',
|
|
'result_count': '50',
|
|
}]
|
|
else:
|
|
# CI Results.
|
|
query_result = [
|
|
{
|
|
'typ_tags': ['a', 'b', 'c'],
|
|
'test_name': 'garbage.suite.garbage.alphabet',
|
|
'result_count': '100',
|
|
},
|
|
{
|
|
'typ_tags': ['1', '2', '3'],
|
|
'test_name': 'garbage.suite.garbage.numbers',
|
|
'result_count': '50',
|
|
},
|
|
]
|
|
return uu.FakeProcess(stdout=json.dumps(query_result))
|
|
|
|
self._subprocess_mock.side_effect = SideEffect
|
|
result_counts = self._querier_instance.GetResultCounts()
|
|
expected_result_counts = {
|
|
('a', 'b', 'c'): {
|
|
'alphabet': 150,
|
|
},
|
|
('1', '2', '3'): {
|
|
'numbers': 50,
|
|
},
|
|
('a1', 'a2', 'a3'): {
|
|
'alphanumeric': 200,
|
|
}
|
|
}
|
|
self.assertEqual(result_counts, expected_result_counts)
|
|
self.assertEqual(self._subprocess_mock.call_count, 2)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main(verbosity=2)
|