| #!/usr/bin/python |
| |
| import unittest |
| import common |
| from autotest_lib.client.common_lib import profiler_manager |
| |
| |
| # simple job stub for using in tests |
| class stub_job(object): |
| tmpdir = "/home/autotest/tmp" |
| autodir = "/home/autotest" |
| |
| |
| # simple profiler stub for using in tests |
| class stub_profiler(object): |
| started = 0 |
| def __init__(self, name): |
| self.name = name |
| @classmethod |
| def start(cls, test): |
| cls.started += 1 |
| @classmethod |
| def stop(cls, test): |
| cls.started -= 1 |
| |
| |
| # replace profiler_manager.load_profiler with a simple stub |
| class stub_manager(profiler_manager.profiler_manager): |
| def load_profiler(self, profiler, args, dargs): |
| return stub_profiler(profiler) |
| |
| |
| class TestProfilerManager(unittest.TestCase): |
| def test_starts_with_no_profilers(self): |
| p = stub_manager(stub_job) |
| self.assertEqual(set(), p.current_profilers()) |
| |
| |
| def test_single_add(self): |
| p = stub_manager(stub_job) |
| p.add("prof1") |
| self.assertEqual(set(["prof1"]), p.current_profilers()) |
| |
| |
| def test_duplicate_adds(self): |
| p = stub_manager(stub_job) |
| p.add("prof1") |
| p.add("prof1") |
| self.assertEqual(set(["prof1"]), p.current_profilers()) |
| |
| |
| def test_multiple_adds(self): |
| p = stub_manager(stub_job) |
| p.add("prof1") |
| p.add("prof2") |
| self.assertEqual(set(["prof1", "prof2"]), p.current_profilers()) |
| |
| |
| def test_add_and_delete(self): |
| p = stub_manager(stub_job) |
| p.add("prof1") |
| p.add("prof2") |
| p.delete("prof1") |
| self.assertEqual(set(["prof2"]), p.current_profilers()) |
| |
| |
| def test_present_with_no_profilers(self): |
| p = stub_manager(stub_job) |
| self.assertEqual(False, p.present()) |
| |
| |
| def test_present_after_add(self): |
| p = stub_manager(stub_job) |
| p.add("prof1") |
| self.assertEqual(True, p.present()) |
| |
| |
| def test_present_after_add_and_remove(self): |
| p = stub_manager(stub_job) |
| p.add("prof1") |
| p.delete("prof1") |
| self.assertEqual(False, p.present()) |
| |
| |
| def test_started(self): |
| p = stub_manager(stub_job) |
| p.add("prof1") |
| p.add("prof2") |
| started = stub_profiler.started |
| self.assertEqual(False, p.active()) |
| p.start(object()) |
| self.assertEqual(started + 2, stub_profiler.started) |
| self.assertEqual(True, p.active()) |
| |
| |
| def test_stop(self): |
| p = stub_manager(stub_job) |
| p.add("prof1") |
| p.add("prof2") |
| started = stub_profiler.started |
| self.assertEqual(False, p.active()) |
| test = object() |
| p.start(test) |
| p.stop(test) |
| self.assertEqual(started, stub_profiler.started) |
| self.assertEqual(False, p.active()) |
| |
| |
| |
| if __name__ == "__main__": |
| unittest.main() |