コード例 #1
0
    def test_uncollectable(self):
        """Test uncollectable object tracking.

        This is fixed in Python 3.4 (PEP 442).
        """
        foo = Foo()
        foo.parent = foo

        enemy = Enemy()
        enemy.parent = enemy

        idfoo = id(foo)
        idenemy = id(enemy)

        del foo
        del enemy

        gb = GarbageGraph(collectable=0)

        gfoo = [x for x in gb.metadata if x.id == idfoo]
        self.assertEqual(len(gfoo), 0)
        genemy = [x for x in gb.metadata if x.id == idenemy]
        if sys.version_info < (3, 4):
            self.assertEqual(len(genemy), 1)

        self.assertEqual(gb.reduce_to_cycles(), None)
コード例 #2
0
ファイル: test_garbage.py プロジェクト: tharun2011/pympler
    def test_prune(self):
        """Test pruning of reference graph.
        """
        foo = Foo()
        bar = Bar()

        foo.parent = foo
        foo.leaf = bar

        idb = id(bar)

        del foo
        del bar

        gb1 = GarbageGraph()
        gb2 = GarbageGraph(reduce=True)

        self.assertEqual(gb1.count, gb2.count)
        self.assert_(len(gb1.metadata) > len(gb2.metadata))

        gbar = [x for x in gb1.metadata if x.id == idb]
        self.assertEqual(len(gbar), 1)
        gbar = [x for x in gb2.metadata if x.id == idb]
        self.assertEqual(len(gbar), 0)

        full = StringIO()
        gb1.print_stats(stream=full)
        reduced = StringIO()
        gb2.print_stats(stream=reduced)
        lazy_reduce = StringIO()
        gb1_pruned = gb1.reduce_to_cycles()
        self.assertTrue(gb1_pruned is gb1.reduce_to_cycles())
        gb1_pruned.print_stats(stream=lazy_reduce)
        self.assertEqual(lazy_reduce.getvalue(), reduced.getvalue())

        self.assertTrue('Foo' in reduced.getvalue())
        self.assertFalse('Bar' in reduced.getvalue())
        self.assertTrue('Foo' in full.getvalue())
        self.assertTrue('Bar' in full.getvalue())
コード例 #3
0
ファイル: test_garbage.py プロジェクト: tharun2011/pympler
    def test_uncollectable(self):
        """Test uncollectable object tracking.
        """
        foo = Foo()
        foo.parent = foo

        enemy = Enemy()
        enemy.parent = enemy

        idfoo = id(foo)
        idenemy = id(enemy)

        del foo
        del enemy

        gb = GarbageGraph(collectable=0)

        gfoo = [x for x in gb.metadata if x.id == idfoo]
        self.assertEqual(len(gfoo), 0)
        genemy = [x for x in gb.metadata if x.id == idenemy]
        self.assertEqual(len(genemy), 1)

        self.assertEqual(gb.reduce_to_cycles(), None)