#!/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()