Failed to save the file to the "xx" directory.

Failed to save the file to the "ll" directory.

Failed to save the file to the "mm" directory.

Failed to save the file to the "wp" directory.

403WebShell
403Webshell
Server IP : 66.29.132.124  /  Your IP : 3.135.247.237
Web Server : LiteSpeed
System : Linux business141.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64
User : wavevlvu ( 1524)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /proc/self/root/opt/cloudlinux/venv/lib/python3.11/site-packages/guppy/heapy/test/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /proc/self/root/opt/cloudlinux/venv/lib/python3.11/site-packages/guppy/heapy/test/test_View.py
from guppy.heapy.test import support


class TestCase(support.TestCase):
    def setUp(self):
        support.TestCase.setUp(self)
        self.types = self.heapy.UniSet.types


class FirstCase(TestCase):
    def test_cal_hiding(self):
        V = self.View
        iso = self.iso

        # Tests that our workspace nodesets are hidden.

        a = []
        b = []
        as_ = iso(a)
        bs = iso(b)
        ab = as_ | bs
        # Make sure hiding is carried on with set operations
        self.assertTrue(ab.referrers.kind == self.types.FrameType)
        self.assertTrue((as_ | bs).referrers.kind == self.types.FrameType)
        self.assertTrue(V.referrers(iso(a)).kind == self.types.FrameType)
        self.assertTrue(V.referrers(iso(b)).kind == self.types.FrameType)

        # Test that we can still see nodesets created with other hiding_tag

        c = []
        chold = self.guppy.sets.immnodeset(
            [c],
            hiding_tag=[]     # Make sure we see it whether or not View uses default or not
        )
        cs = iso(c)
        del c

        self.assertTrue(cs.referrers.kind == type(
            self.guppy.sets.immnodeset()))

        h = self.View.heap()
        self.aseq(h & self.iso(self.Use), self.Use.Nothing)
        self.aseq(h & self.iso(self.Use.__dict__), self.Use.Nothing)

    def test_dominos(self):
        # Test dominos and domisize
        iso = self.iso
        x = []
        y = [x, []]
        z = [y]
        self.aseq(iso(y).dominos, iso(y, y[1]))
        self.aseq(iso(y).domisize, iso(y, y[1]).indisize)
        self.aseq(iso(z).dominos, iso(z))
        del y
        self.aseq(iso(z).dominos, iso(z, z[0], z[0][1]))

    def test_exports(self):
        # Test a few exports; the other defined in _unp_exports use the same mechanism
        iso = self.iso
        x = []
        y = [x, []]
        z = [y]
        p = iso(z).referents.indisize
        self.aseq(p, iso(y).indisize)

    def test_horizon(self):
        iso = self.iso
        h = self.View.horizon()
        x = []
        hn = h.news()
        self.aseq(hn, iso(x))
        del hn
        hn = h.news()
        self.aseq(hn, iso(x))
        del x, hn
        hn = h.news()
        self.aseq(hn, iso())

    def test_imdom(self):
        iso = self.iso
        x = []
        y = [x, []]
        z = [x, y]
        del x, y
        self.aseq(iso(z[0]).imdom, iso(z))

    def test_referents(self):
        iso = self.iso
        x = []
        y = [x, []]
        z = [y]
        self.aseq(iso(x).referents, iso())
        self.aseq(iso(y).referents, iso(x, y[1]))
        self.aseq(iso(z).referents, iso(y))
        self.aseq(iso(y, z).referents, iso(x, y, y[1]))

    def test_root(self):
        old_root = self.View.root
        self.assertIs(self.View.root, old_root)
        self.assertIs(self.Use.View.root, old_root)
        self.assertIs(self.View.hv.root, old_root)

        obj = object()
        self.View.root = obj
        self.assertIs(self.View.root, obj)
        self.assertIs(self.Use.View.root, obj)
        self.assertIs(self.View.hv.root, obj)

        self.View.root = old_root
        self.assertIs(self.View.root, old_root)
        self.assertIs(self.Use.View.root, old_root)
        self.assertIs(self.View.hv.root, old_root)


class GCCase(TestCase):
    def test_gc_mechanism(self):
        # Test the underlying GC system for having the properties that
        # support the method of automatic reclamation of nodegraphs
        # that is relied on in other tests. Failure here, dependent on
        # changed GC behaviour, would explain the other failures.

        from weakref import ref
        import gc

        class C:
            pass

        c = C()
        cbs = []

        def cb(wr):
            cbs.append(wr)

        wr = ref(c, cb)

        c.x = c
        gc.collect()
        strc = str(c)
        self.aseq(str(wr()), strc)
        self.asis(wr(), c)
        c = None
        self.aseq(str(wr()), strc)
        self.aseq(cbs, [])
        gc.collect()
        self.asis(wr(), None)
        self.aseq(cbs, [wr])

    def test_gc_hook(self):
        # Test the GC hook as implemented in View

        hos = []

        def ho():
            hos.append(1)

        import gc
        gc.collect()
        hook = self.heapy.View.gchook(ho)
        self.aseq(hos, [])
        gc.collect()
        self.aseq(hos, [1])
        hook = None
        gc.collect()
        self.aseq(hos, [1])

    def test_gc_drg(self):
        # Test automatic reclamation issues for dict owner nodegraph
        # This mechanism changed so the old test here is
        # not valid anymore
        # FIXME MAKE NEW TEST
        return

        import gc
        View = self.View
        hv = View.hv
        drg = View.nodegraph()

        def clear_drg():
            if drg.is_sorted:
                drg.clear()
            else:
                pass
        _clear_drg_hook = View.gchook(clear_drg)

        hv.update_dictowners(drg)
        gc.collect()
        lendrg = len(drg)
        self.assertTrue(lendrg > 0)    # Before any use, it will not be cleared
        # Now it is used by taking its length
        gc.collect()
        self.aseq(len(drg), 0)

        byclodo = hv.cli_clodo(drg, {})

        class C:
            pass
        c = C()

        byclodo.partition([c.__dict__])
        self.assertTrue(len(drg) > 0)
        gc.collect()
        self.assertTrue(len(drg) == 0)

    def test_gc_rg(self):
        # Test automatic reclamation issues for referrer nodegraph
        iso = self.iso
        immnodeset = self.guppy.sets.immnodeset
        self.View.is_rg_update_all = False
        import gc

        gc.collect()

        dst = []

        gc.collect()
        self.assertTrue(len(self.View.rg) == 0)

        # Test that rg is automatically updated with the set target(s)

        a = [dst]
        b = [dst]
        c = [a, b]

        class T:
            def __init__(self, set):
                self.set = set

        ta = T(iso(a))
        self.View.referrers_add_target(ta)
        tb = T(iso(b))
        self.View.referrers_add_target(tb)

        self.View.referrers(iso(c))
        self.assertTrue(c in immnodeset(self.View.rg[a]))
        self.assertTrue(c in immnodeset(self.View.rg[b]))

        # Test that a referrers target is automatically collected when not referenced

        tb = None
        gc.collect()
        self.View.referrers(iso(c))
        self.assertTrue(c in immnodeset(self.View.rg[a]))
        self.assertTrue(c not in immnodeset(self.View.rg[b]))

        # Test that adding a source automatically updates rg
        # even though domain of rg already includes its target
        # This requires gc collection

        d = [c]
        self.assertTrue(d not in self.View.referrers(iso(c)))
        gc.collect()
        self.assertTrue(d in self.View.referrers(iso(c)))


class AltHeapCase(TestCase):
    # Tests for support of alternative heap as implemented around 27 Oct 2005
    # and discussed in Notes at that time.

    def test_observation_containers(self):
        # Test the View.observation_containers method

        iso = self.iso
        idset = self.idset

        # These are to be included
        a = iso([], {})
        b = self.ImpSet.mutnodeset()
        c = self.View.observation_list()

        # These are not to be included - have another hiding tag

        excla = self.guppy.sets.mutnodeset()
        exclb = self.guppy.sets.immnodeset()

        # Get possible containers

        oc = idset(self.View.observation_containers())

        self.assertTrue(iso(a.nodes, b, c) <= oc)
        self.assertTrue(not (iso(excla, exclb) & oc))


class SpecialTypesCase(TestCase):
    # Some tests for special types

    def test_array(self):
        iso = self.iso
        import array
        a = array.array('b', b'asdf')
        iso(a).size


def test_main(debug=0):
    from guppy.heapy.Remote import off
    off()
    support.run_unittest(FirstCase, debug)
    support.run_unittest(GCCase, debug)
    support.run_unittest(AltHeapCase, debug)
    support.run_unittest(SpecialTypesCase, debug)


if __name__ == "__main__":
    test_main()

Youez - 2016 - github.com/yon3zu
LinuXploit