def __init__(self, scoped_patcher): """Initialise a SystemStatus instance with an appropriate configuration.""" if platform.system() == 'Darwin': self.lo_iface = 'lo0' else: self.lo_iface = 'lo' self.interfaces = "{}, bad".format(self.lo_iface) self.disks = "/, /bad" self.rate = 0.001 self.mocked_proc_name = "mock_proc" self.processes = ", ".join([self.mocked_proc_name, "proc2"]) self.mocked_procs = [] self.parent_process = 1 self.child_process = 0 self.cpu_affinity_vals = [1, 2, 3] for idx, (name, cmdline) in enumerate([ (self.mocked_proc_name, "one two"), (self.mocked_proc_name, "four five"), ("bash", self.mocked_proc_name + " etc"), ]): proc = Mock() proc.pid = 1000 + idx proc.name.return_value = name proc.cmdline.return_value = cmdline.split() proc.cpu_percent.return_value = 1.23 if idx == self.parent_process: proc.children.return_value = [ self.mocked_procs[self.child_process] ] else: proc.children.return_value = None if idx > 0: proc.cpu_affinity.return_value = self.cpu_affinity_vals else: delattr(proc, 'cpu_affinity') proc.status.return_value = psutil.STATUS_RUNNING self.mocked_procs.append(proc) self.num_mocked_procs = len(self.mocked_procs) def mock_process_iter(attrs=None, ad_value=None): procs_to_yield = min(self.num_mocked_procs, len(self.mocked_procs)) for proc in self.mocked_procs[:procs_to_yield]: yield proc scoped_patcher.setattr(psutil, "process_iter", mock_process_iter) self.system_status = SystemStatus(interfaces=self.interfaces, disks=self.disks, processes=self.processes, rate=self.rate)
def test_default_rate_argument(self): stash_singleton = dict(Singleton._instances) Singleton._instances = {} temp_system_status = SystemStatus( interfaces=self.interfaces, disks=self.disks, processes=self.processes, ) assert_almost_equal(1.0, temp_system_status._update_interval) Singleton._instances = {} Singleton._instances = dict(stash_singleton)
def test_default_rate_argument(self, test_system_status): """Test that that the default monitoring rate argument is applied correctly.""" stash_singleton = dict(Singleton._instances) Singleton._instances = {} temp_system_status = SystemStatus( interfaces=test_system_status.interfaces, disks=test_system_status.disks, processes=test_system_status.processes, ) assert pytest.approx(1.0) == temp_system_status._update_interval Singleton._instances = {} Singleton._instances = dict(stash_singleton)
def setup_class(cls): if platform.system() == 'Darwin': cls.lo_iface='lo0' else: cls.lo_iface='lo' cls.interfaces="{}, bad".format(cls.lo_iface) cls.disks = "/, /bad" cls.processes = "python, proc2" cls.rate = 0.001 cls.system_status = SystemStatus( interfaces=cls.interfaces, disks=cls.disks, processes=cls.processes, rate=cls.rate)
def __init__(self): """Initialise a SystemStatus instance with an appropriate configuration.""" if platform.system() == 'Darwin': self.lo_iface = 'lo0' else: self.lo_iface = 'lo' self.interfaces = "{}, bad".format(self.lo_iface) self.disks = "/, /bad" self.processes = "python, proc2" self.rate = 0.001 self.system_status = SystemStatus(interfaces=self.interfaces, disks=self.disks, processes=self.processes, rate=self.rate)
def test_system_status_single_instance(self): new_instance = SystemStatus() assert_equal(self.system_status, new_instance)
def test_system_status_single_instance(self, test_system_status): """Test that the SystemStatus class exhibits singleton behaviour.""" new_instance = SystemStatus() assert test_system_status.system_status == new_instance