You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
2.8 KiB
112 lines
2.8 KiB
#!/usr/bin/python2
|
|
|
|
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()
|