예제 #1
0
    def test_fetch_all(self):
        valid_procs = 0
        default = object()
        failures = []
        for p, name in self.iter_procs():
            ret = default
            try:
                ret = self.call_meth(p, name)
            except NotImplementedError:
                msg = "%r was skipped because not implemented" % (
                    self.__class__.__name__ + '.test_' + name)
                warn(msg)
            except (psutil.NoSuchProcess, psutil.AccessDenied) as err:
                self.assertEqual(err.pid, p.pid)
                if err.name:
                    # make sure exception's name attr is set
                    # with the actual process name
                    self.assertEqual(err.name, p.name())
                assert str(err)
                assert err.msg
            except Exception:
                s = '\n' + '=' * 70 + '\n'
                s += "FAIL: test_%s (proc=%s" % (name, p)
                if ret != default:
                    s += ", ret=%s)" % repr(ret)
                s += ')\n'
                s += '-' * 70
                s += "\n%s" % traceback.format_exc()
                s = "\n".join((" " * 4) + i for i in s.splitlines())
                s += '\n'
                failures.append(s)
                break
            else:
                valid_procs += 1
                if ret not in (0, 0.0, [], None, '', {}):
                    assert ret, ret
                meth = getattr(self, name)
                meth(ret, p)

        if failures:
            self.fail(''.join(failures))

        # we should always have a non-empty list, not including PID 0 etc.
        # special cases.
        assert valid_procs
예제 #2
0
    def test_fetch_all(self):
        valid_procs = 0
        default = object()
        failures = []
        for p, name in self.iter_procs():
            ret = default
            try:
                ret = self.call_meth(p, name)
            except NotImplementedError:
                msg = "%r was skipped because not implemented" % (
                    self.__class__.__name__ + '.test_' + name)
                warn(msg)
            except (psutil.NoSuchProcess, psutil.AccessDenied) as err:
                self.assertEqual(err.pid, p.pid)
                if err.name:
                    # make sure exception's name attr is set
                    # with the actual process name
                    self.assertEqual(err.name, p.name())
                assert str(err)
                assert err.msg
            except Exception:
                s = '\n' + '=' * 70 + '\n'
                s += "FAIL: test_%s (proc=%s" % (name, p)
                if ret != default:
                    s += ", ret=%s)" % repr(ret)
                s += ')\n'
                s += '-' * 70
                s += "\n%s" % traceback.format_exc()
                s = "\n".join((" " * 4) + i for i in s.splitlines())
                s += '\n'
                failures.append(s)
                break
            else:
                valid_procs += 1
                if ret not in (0, 0.0, [], None, '', {}):
                    assert ret, ret
                meth = getattr(self, name)
                meth(ret, p)

        if failures:
            self.fail(''.join(failures))

        # we should always have a non-empty list, not including PID 0 etc.
        # special cases.
        assert valid_procs
예제 #3
0
    def test_fetch_all(self):
        valid_procs = 0
        excluded_names = set([
            'send_signal',
            'suspend',
            'resume',
            'terminate',
            'kill',
            'wait',
            'as_dict',
            'parent',
            'children',
            'memory_info_ex',
            'oneshot',
        ])
        if LINUX and not HAS_RLIMIT:
            excluded_names.add('rlimit')
        attrs = []
        for name in dir(psutil.Process):
            if name.startswith("_"):
                continue
            if name in excluded_names:
                continue
            attrs.append(name)

        default = object()
        failures = []
        for p in psutil.process_iter():
            with p.oneshot():
                for name in attrs:
                    ret = default
                    try:
                        args = ()
                        kwargs = {}
                        attr = getattr(p, name, None)
                        if attr is not None and callable(attr):
                            if name == 'rlimit':
                                args = (psutil.RLIMIT_NOFILE, )
                            elif name == 'memory_maps':
                                kwargs = {'grouped': False}
                            ret = attr(*args, **kwargs)
                        else:
                            ret = attr
                        valid_procs += 1
                    except NotImplementedError:
                        msg = "%r was skipped because not implemented" % (
                            self.__class__.__name__ + '.test_' + name)
                        warn(msg)
                    except (psutil.NoSuchProcess, psutil.AccessDenied) as err:
                        self.assertEqual(err.pid, p.pid)
                        if err.name:
                            # make sure exception's name attr is set
                            # with the actual process name
                            self.assertEqual(err.name, p.name())
                        assert str(err)
                        assert err.msg
                    except Exception as err:
                        s = '\n' + '=' * 70 + '\n'
                        s += "FAIL: test_%s (proc=%s" % (name, p)
                        if ret != default:
                            s += ", ret=%s)" % repr(ret)
                        s += ')\n'
                        s += '-' * 70
                        s += "\n%s" % traceback.format_exc()
                        s = "\n".join((" " * 4) + i for i in s.splitlines())
                        s += '\n'
                        failures.append(s)
                        break
                    else:
                        if ret not in (0, 0.0, [], None, '', {}):
                            assert ret, ret
                        meth = getattr(self, name)
                        meth(ret, p)

        if failures:
            self.fail(''.join(failures))

        # we should always have a non-empty list, not including PID 0 etc.
        # special cases.
        assert valid_procs
예제 #4
0
    def test_fetch_all(self):
        valid_procs = 0
        excluded_names = set([
            'send_signal', 'suspend', 'resume', 'terminate', 'kill', 'wait',
            'as_dict', 'parent', 'children', 'memory_info_ex', 'oneshot',
        ])
        if LINUX and not HAS_RLIMIT:
            excluded_names.add('rlimit')
        attrs = []
        for name in dir(psutil.Process):
            if name.startswith("_"):
                continue
            if name in excluded_names:
                continue
            attrs.append(name)

        default = object()
        failures = []
        for p in psutil.process_iter():
            with p.oneshot():
                for name in attrs:
                    ret = default
                    try:
                        args = ()
                        kwargs = {}
                        attr = getattr(p, name, None)
                        if attr is not None and callable(attr):
                            if name == 'rlimit':
                                args = (psutil.RLIMIT_NOFILE,)
                            elif name == 'memory_maps':
                                kwargs = {'grouped': False}
                            ret = attr(*args, **kwargs)
                        else:
                            ret = attr
                        valid_procs += 1
                    except NotImplementedError:
                        msg = "%r was skipped because not implemented" % (
                            self.__class__.__name__ + '.test_' + name)
                        warn(msg)
                    except (psutil.NoSuchProcess, psutil.AccessDenied) as err:
                        self.assertEqual(err.pid, p.pid)
                        if err.name:
                            # make sure exception's name attr is set
                            # with the actual process name
                            self.assertEqual(err.name, p.name())
                        assert str(err)
                        assert err.msg
                    except Exception as err:
                        s = '\n' + '=' * 70 + '\n'
                        s += "FAIL: test_%s (proc=%s" % (name, p)
                        if ret != default:
                            s += ", ret=%s)" % repr(ret)
                        s += ')\n'
                        s += '-' * 70
                        s += "\n%s" % traceback.format_exc()
                        s = "\n".join((" " * 4) + i for i in s.splitlines())
                        s += '\n'
                        failures.append(s)
                        break
                    else:
                        if ret not in (0, 0.0, [], None, '', {}):
                            assert ret, ret
                        meth = getattr(self, name)
                        meth(ret, p)

        if failures:
            self.fail(''.join(failures))

        # we should always have a non-empty list, not including PID 0 etc.
        # special cases.
        assert valid_procs