| #!/usr/bin/env vpython3 |
| |
| # Copyright 2024 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| """File for testing monitors.py.""" |
| |
| import importlib |
| import os |
| import tempfile |
| import unittest |
| import unittest.mock as mock |
| |
| import monitors |
| |
| |
| def dump() -> bool: |
| """Tries to dump the metrics into a temporary file and returns if the |
| file exits.""" |
| with tempfile.TemporaryDirectory() as tmpdir: |
| monitors.dump(tmpdir) |
| return os.path.isfile( |
| os.path.join(tmpdir, 'test_script_metrics.jsonpb')) |
| |
| |
| class MonitorsRealTest(unittest.TestCase): |
| """Test real implementation of monitors.py.""" |
| |
| def test_run_real_implementation(self) -> None: |
| """Ensures the real version of the monitors is loaded.""" |
| importlib.reload(monitors) |
| ave = monitors.average('test', 'run', 'real', 'implementation') |
| ave.record(1) |
| ave.record(2) |
| self.assertTrue(dump()) |
| |
| @mock.patch('os.path.isdir', side_effect=[False, True]) |
| def test_run_dummy_implementation(self, *_) -> None: |
| """Ensures the dummy version of the monitors is loaded.""" |
| importlib.reload(monitors) |
| ave = monitors.average('test', 'run', 'dummy', 'implementation') |
| ave.record(1) |
| ave.record(2) |
| self.assertFalse(dump()) |
| |
| @mock.patch('os.path.isdir', side_effect=[False, True]) |
| def test_with_dummy_implementation(self, *_) -> None: |
| """Ensures the dummy version of the monitors can be used by 'with' |
| statement.""" |
| importlib.reload(monitors) |
| executed = False |
| with monitors.time_consumption('test', 'with', 'dummy'): |
| executed = True |
| self.assertTrue(executed) |
| self.assertFalse(dump()) |
| |
| |
| if __name__ == '__main__': |
| unittest.main() |