Example #1
0
    def test_os_stat(self):
        '''Test sizing os.stat and os.statvfs objects.
        '''
        try:
            stat = os.stat(__file__)
        except Exception:
            pass
        else:
            stat_size = asizeof.asizeof(stat)
            self.assertTrue(stat_size > 0, stat_size)
            refs = asizeof.named_refs(stat)
            ref_names = set([name for name, _ in refs])
            self.assertTrue(
                set(['st_mode', 'st_size', 'st_mtime']) <= ref_names,
                ref_names)

        try:
            stat = os.statvfs(__file__)
        except Exception:
            pass
        else:
            stat_size = asizeof.asizeof(stat)
            self.assertTrue(stat_size > 0, stat_size)
            refs = asizeof.named_refs(stat)
            ref_names = set([name for name, _ in refs])
            self.assertTrue(
                set(['f_bsize', 'f_blocks']) <= ref_names, ref_names)
Example #2
0
 def test_weakref(self):
     '''Test sizing weak references.
     '''
     alive = Foo('alive')
     aref = weakref.ref(alive)
     dead = Foo('dead')
     dref = weakref.ref(dead)
     del dead
     aref_size = asizeof.asizeof(aref)
     self.assertTrue(aref_size > asizeof.asizeof(alive), aref_size)
     refs = asizeof.named_refs(aref)
     # TODO: Should a weakref return ('ref', obj)?
     dref_size = asizeof.asizeof(dref)
     self.assertTrue(dref_size > 0, dref_size)
     self.assertNotEqual(dref_size, aref_size)
     refs = asizeof.named_refs(dref)
Example #3
0
 def test_weakref(self):
     '''Test sizing weak references.
     '''
     alive = Foo('alive')
     aref = weakref.ref(alive)
     dead = Foo('dead')
     dref = weakref.ref(dead)
     del dead
     aref_size = asizeof.asizeof(aref)
     self.assertTrue(aref_size > asizeof.asizeof(alive), aref_size)
     refs = asizeof.named_refs(aref)
     # TODO: Should a weakref return ('ref', obj)?
     dref_size = asizeof.asizeof(dref)
     self.assertTrue(dref_size > 0, dref_size)
     self.assertNotEqual(dref_size, aref_size)
     refs = asizeof.named_refs(dref)
Example #4
0
 def test_enumerate(self):
     '''Test sizing enumerators.
     '''
     enum = enumerate([1,2,3])
     enum_size = asizeof.asizeof(enum)
     self.assertTrue(enum_size > 0, enum_size)
     refs = asizeof.named_refs(enum)
     ref_names = set([name for name, _ in refs])
     self.assertTrue(set(['__doc__']) <= ref_names, ref_names)
Example #5
0
 def test_enumerate(self):
     '''Test sizing enumerators.
     '''
     enum = enumerate([1, 2, 3])
     enum_size = asizeof.asizeof(enum)
     self.assertTrue(enum_size > 0, enum_size)
     refs = asizeof.named_refs(enum)
     ref_names = set([name for name, _ in refs])
     self.assertTrue(set(['__doc__']) <= ref_names, ref_names)
Example #6
0
def get_obj_referents(oid):
    referents = {}
    obj = get_obj(oid)
    if type(obj) is dict:
        named_objects = asizeof.named_refs(obj)
    else:
        refs = asizeof._getreferents(obj)
        named_objects = [(repr(type(x)), x) for x in refs]
    for name, o in named_objects:
        referents[name] = (get_ref(o), type(o).__name__, safe_repr(o, clip=48), asizeof.asizeof(o))
    return dict(referents=referents)
Example #7
0
def get_obj_referents(oid):
    referents = {}
    obj = get_obj(oid)
    if type(obj) is dict:
        named_objects = asizeof.named_refs(obj)
    else:
        refs = asizeof._getreferents(obj)
        named_objects = [(repr(type(x)), x) for x in refs]
    for name, o in named_objects:
        referents[name] = (get_ref(o), type(o).__name__, safe_repr(o, clip=48),
                           asizeof.asizeof(o))
    return dict(referents=referents)
Example #8
0
    def test_os_stat(self):
        '''Test sizing os.stat and os.statvfs objects.
        '''
        try:
            stat = os.stat(__file__)
        except Exception:
            pass
        else:
            stat_size = asizeof.asizeof(stat)
            self.assertTrue(stat_size > 0, stat_size)
            refs = asizeof.named_refs(stat)
            ref_names = set([name for name, _ in refs])
            self.assertTrue(set(['st_mode', 'st_size', 'st_mtime']) <= ref_names, ref_names)

        try:
            stat = os.statvfs(__file__)
        except Exception:
            pass
        else:
            stat_size = asizeof.asizeof(stat)
            self.assertTrue(stat_size > 0, stat_size)
            refs = asizeof.named_refs(stat)
            ref_names = set([name for name, _ in refs])
            self.assertTrue(set(['f_bsize', 'f_blocks']) <= ref_names, ref_names)
Example #9
0
 def test_exception(self):
     '''Test sizing exceptions.
     '''
     try:
         raise Exception("Test exception-sizing.")
     except Exception:
         etype, exc, etb = sys.exc_info()
         try:
             tb_size = asizeof.asizeof(etb)
             self.assertTrue(tb_size > 0, tb_size)
             refs = asizeof.named_refs(etb)
             ref_names = set([name for name, _ in refs])
             self.assertTrue(set(['tb_frame', 'tb_next']) <= ref_names, ref_names)
             ex_size = asizeof.asizeof(etype, exc)
             self.assertTrue(ex_size > 0, ex_size)
         finally:
             del etb
Example #10
0
 def test_exception(self):
     '''Test sizing exceptions.
     '''
     try:
         raise Exception("Test exception-sizing.")
     except Exception:
         etype, exc, etb = sys.exc_info()
         try:
             tb_size = asizeof.asizeof(etb)
             self.assertTrue(tb_size > 0, tb_size)
             refs = asizeof.named_refs(etb)
             ref_names = set([name for name, _ in refs])
             self.assertTrue(set(['tb_frame', 'tb_next']) <= ref_names, ref_names)
             ex_size = asizeof.asizeof(etype, exc)
             self.assertTrue(ex_size > 0, ex_size)
         finally:
             del etb
Example #11
0
 def _get_edges(self):
     """
     Compute the edges for the reference graph.
     The function returns a set of tuples (id(a), id(b), ref) if a
     references b with the referent 'ref'.
     """
     idset = set([id(x) for x in self.objects])
     self.edges = set([])
     for n in self.objects:
         refset = set([id(x) for x in get_referents(n)])
         for ref in refset.intersection(idset):
             label = ''
             members = None
             if isinstance(n, dict):
                 members = n.items()
             if not members:
                 members = named_refs(n)
             for (k, v) in members:
                 if id(v) == ref:
                     label = k
                     break
             self.edges.add(_Edge(id(n), ref, label))
Example #12
0
 def _get_edges(self):
     """
     Compute the edges for the reference graph.
     The function returns a set of tuples (id(a), id(b), ref) if a
     references b with the referent 'ref'.
     """
     idset = set([id(x) for x in self.objects])
     self.edges = set([])
     for n in self.objects:
         refset = set([id(x) for x in get_referents(n)])
         for ref in refset.intersection(idset):
             label = ''
             members = None
             if isinstance(n, dict):
                 members = n.items()
             if not members:
                 members = named_refs(n)
             for (k, v) in members:
                 if id(v) == ref:
                     label = k
                     break
             self.edges.add(_Edge(id(n), ref, label))