Mike Frysinger | d03e6b5 | 2019-08-03 12:49:01 -0400 | [diff] [blame] | 1 | #!/usr/bin/python2 |
jadmanski | 61cf6e7 | 2008-11-14 23:42:10 +0000 | [diff] [blame] | 2 | |
| 3 | import unittest |
| 4 | import common |
jadmanski | 043e113 | 2008-11-19 17:10:32 +0000 | [diff] [blame] | 5 | from autotest_lib.client.common_lib import profiler_manager |
jadmanski | 61cf6e7 | 2008-11-14 23:42:10 +0000 | [diff] [blame] | 6 | |
| 7 | |
| 8 | # simple job stub for using in tests |
| 9 | class stub_job(object): |
| 10 | tmpdir = "/home/autotest/tmp" |
| 11 | autodir = "/home/autotest" |
| 12 | |
| 13 | |
| 14 | # simple profiler stub for using in tests |
| 15 | class stub_profiler(object): |
| 16 | started = 0 |
| 17 | def __init__(self, name): |
| 18 | self.name = name |
| 19 | @classmethod |
| 20 | def start(cls, test): |
| 21 | cls.started += 1 |
| 22 | @classmethod |
| 23 | def stop(cls, test): |
| 24 | cls.started -= 1 |
| 25 | |
| 26 | |
jadmanski | 043e113 | 2008-11-19 17:10:32 +0000 | [diff] [blame] | 27 | # replace profiler_manager.load_profiler with a simple stub |
| 28 | class stub_manager(profiler_manager.profiler_manager): |
| 29 | def load_profiler(self, profiler, args, dargs): |
jadmanski | 61cf6e7 | 2008-11-14 23:42:10 +0000 | [diff] [blame] | 30 | return stub_profiler(profiler) |
jadmanski | 61cf6e7 | 2008-11-14 23:42:10 +0000 | [diff] [blame] | 31 | |
| 32 | |
jadmanski | 043e113 | 2008-11-19 17:10:32 +0000 | [diff] [blame] | 33 | class TestProfilerManager(unittest.TestCase): |
jadmanski | 61cf6e7 | 2008-11-14 23:42:10 +0000 | [diff] [blame] | 34 | def test_starts_with_no_profilers(self): |
jadmanski | 043e113 | 2008-11-19 17:10:32 +0000 | [diff] [blame] | 35 | p = stub_manager(stub_job) |
jadmanski | 61cf6e7 | 2008-11-14 23:42:10 +0000 | [diff] [blame] | 36 | self.assertEqual(set(), p.current_profilers()) |
| 37 | |
| 38 | |
| 39 | def test_single_add(self): |
jadmanski | 043e113 | 2008-11-19 17:10:32 +0000 | [diff] [blame] | 40 | p = stub_manager(stub_job) |
jadmanski | 61cf6e7 | 2008-11-14 23:42:10 +0000 | [diff] [blame] | 41 | p.add("prof1") |
| 42 | self.assertEqual(set(["prof1"]), p.current_profilers()) |
| 43 | |
| 44 | |
| 45 | def test_duplicate_adds(self): |
jadmanski | 043e113 | 2008-11-19 17:10:32 +0000 | [diff] [blame] | 46 | p = stub_manager(stub_job) |
jadmanski | 61cf6e7 | 2008-11-14 23:42:10 +0000 | [diff] [blame] | 47 | p.add("prof1") |
| 48 | p.add("prof1") |
| 49 | self.assertEqual(set(["prof1"]), p.current_profilers()) |
| 50 | |
| 51 | |
| 52 | def test_multiple_adds(self): |
jadmanski | 043e113 | 2008-11-19 17:10:32 +0000 | [diff] [blame] | 53 | p = stub_manager(stub_job) |
jadmanski | 61cf6e7 | 2008-11-14 23:42:10 +0000 | [diff] [blame] | 54 | p.add("prof1") |
| 55 | p.add("prof2") |
| 56 | self.assertEqual(set(["prof1", "prof2"]), p.current_profilers()) |
| 57 | |
| 58 | |
| 59 | def test_add_and_delete(self): |
jadmanski | 043e113 | 2008-11-19 17:10:32 +0000 | [diff] [blame] | 60 | p = stub_manager(stub_job) |
jadmanski | 61cf6e7 | 2008-11-14 23:42:10 +0000 | [diff] [blame] | 61 | p.add("prof1") |
| 62 | p.add("prof2") |
| 63 | p.delete("prof1") |
| 64 | self.assertEqual(set(["prof2"]), p.current_profilers()) |
| 65 | |
| 66 | |
| 67 | def test_present_with_no_profilers(self): |
jadmanski | 043e113 | 2008-11-19 17:10:32 +0000 | [diff] [blame] | 68 | p = stub_manager(stub_job) |
jadmanski | 61cf6e7 | 2008-11-14 23:42:10 +0000 | [diff] [blame] | 69 | self.assertEqual(False, p.present()) |
| 70 | |
| 71 | |
| 72 | def test_present_after_add(self): |
jadmanski | 043e113 | 2008-11-19 17:10:32 +0000 | [diff] [blame] | 73 | p = stub_manager(stub_job) |
jadmanski | 61cf6e7 | 2008-11-14 23:42:10 +0000 | [diff] [blame] | 74 | p.add("prof1") |
| 75 | self.assertEqual(True, p.present()) |
| 76 | |
| 77 | |
| 78 | def test_present_after_add_and_remove(self): |
jadmanski | 043e113 | 2008-11-19 17:10:32 +0000 | [diff] [blame] | 79 | p = stub_manager(stub_job) |
jadmanski | 61cf6e7 | 2008-11-14 23:42:10 +0000 | [diff] [blame] | 80 | p.add("prof1") |
| 81 | p.delete("prof1") |
| 82 | self.assertEqual(False, p.present()) |
| 83 | |
| 84 | |
| 85 | def test_started(self): |
jadmanski | 043e113 | 2008-11-19 17:10:32 +0000 | [diff] [blame] | 86 | p = stub_manager(stub_job) |
jadmanski | 61cf6e7 | 2008-11-14 23:42:10 +0000 | [diff] [blame] | 87 | p.add("prof1") |
| 88 | p.add("prof2") |
| 89 | started = stub_profiler.started |
| 90 | self.assertEqual(False, p.active()) |
| 91 | p.start(object()) |
| 92 | self.assertEqual(started + 2, stub_profiler.started) |
| 93 | self.assertEqual(True, p.active()) |
| 94 | |
| 95 | |
| 96 | def test_stop(self): |
jadmanski | 043e113 | 2008-11-19 17:10:32 +0000 | [diff] [blame] | 97 | p = stub_manager(stub_job) |
jadmanski | 61cf6e7 | 2008-11-14 23:42:10 +0000 | [diff] [blame] | 98 | p.add("prof1") |
| 99 | p.add("prof2") |
| 100 | started = stub_profiler.started |
| 101 | self.assertEqual(False, p.active()) |
| 102 | test = object() |
| 103 | p.start(test) |
| 104 | p.stop(test) |
| 105 | self.assertEqual(started, stub_profiler.started) |
| 106 | self.assertEqual(False, p.active()) |
| 107 | |
| 108 | |
| 109 | |
| 110 | if __name__ == "__main__": |
| 111 | unittest.main() |