Example #1
0
    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)
Example #2
0
    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)
Example #3
0
 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)
Example #4
0
    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)
Example #6
0
 def test_system_status_single_instance(self):
     new_instance = SystemStatus()
     assert_equal(self.system_status, new_instance)
Example #7
0
 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