Esempio n. 1
0
    def testUnbindPortNumberV6(self):
        if not has_dual_stack():
            return printDualStackSkipped()

        p = PortNumberGenerator.next(bind=True)
        self.assertNotBound(
            bindV4(ip='::1', port=p, protocol='tcp', reuse=True))

        PortNumberGenerator.unbind(port=p)

        self.assertBoundAndUnbind(
            bindV6(ip='::1', port=p, protocol='tcp', reuse=False)
        )  # Same IP-version, protocol, host, port combination: basically testing bindV6's close happened.
        for protocol in ['tcp', 'udp']:
            self.assertBoundAndUnbind(
                bindV4(ip='127.0.0.1', port=p, protocol=protocol, reuse=False))
            self.assertBoundAndUnbind(
                bindV4(ip='0.0.0.0', port=p, protocol=protocol, reuse=False))
            self.assertBoundAndUnbind(
                bindV6(ip='::1', port=p, protocol=protocol, reuse=False))
            self.assertBoundAndUnbind(
                bindV6(ip='::', port=p, protocol=protocol, reuse=False))
            self.assertBoundAndUnbind(
                bindV6(ip='::1',
                       port=p,
                       protocol=protocol,
                       reuse=False,
                       ipV6Only=False))
            self.assertBoundAndUnbind(
                bindV6(ip='::',
                       port=p,
                       protocol=protocol,
                       reuse=False,
                       ipV6Only=False))
    def testUnbindPortNumberV4(self):
        p = PortNumberGenerator.next(bind=True)
        self.assertNotBound(bindV4(ip='127.0.0.1', port=p, protocol='tcp', reuse=True))

        PortNumberGenerator.unbind(port=p)
        self.assertBoundAndUnbind(bindV4(ip='127.0.0.1', port=p, protocol='tcp', reuse=False))
        self.assertBoundAndUnbind(bindV4(ip='127.0.0.1', port=p, protocol='tcp', reuse=False)) # Same IP-version, protocol, host, port combination: basically testing bindV4's close happened.
        self.assertBoundAndUnbind(bindV4(ip='127.0.0.1', port=p, protocol='udp', reuse=False))
        self.assertBoundAndUnbind(bindV4(ip='0.0.0.0', port=p, protocol='tcp', reuse=False))
        self.assertBoundAndUnbind(bindV4(ip='0.0.0.0', port=p, protocol='udp', reuse=False))
    def testBindPortRangeNumberGiven(self):
        port = PortNumberGenerator.next(blockSize=2)
        port2 = port + 1
        PortNumberGenerator.bind(port=port, blockSize=2)
        self.assertNotBound(bindV4(ip='127.0.0.1', port=port, protocol='tcp', reuse=True))
        self.assertNotBound(bindV4(ip='127.0.0.1', port=port2, protocol='tcp', reuse=True))

        PortNumberGenerator.unbind(port=port, blockSize=2)
        self.assertBoundAndUnbind(bindV4(ip='127.0.0.1', port=port, protocol='tcp', reuse=True))
        self.assertBoundAndUnbind(bindV4(ip='127.0.0.1', port=port2, protocol='tcp', reuse=True))
    def testBindPortNumberGiven(self):
        port, close = attemptBinding(bindPort=0); close()
        PortNumberGenerator.bind(port=port)
        self.assertNotBound(bindV4(ip='127.0.0.1', port=port, protocol='tcp', reuse=True))
        if has_dual_stack():
            self.assertNotBound(bindV6(ip='::1', port=port, protocol='tcp', reuse=True))

        PortNumberGenerator.unbind(port=port)
        self.assertBoundAndUnbind(bindV4(ip='127.0.0.1', port=port, protocol='tcp', reuse=True))
        if has_dual_stack():
            self.assertBoundAndUnbind(bindV6(ip='::1', port=port, protocol='tcp', reuse=True))
Esempio n. 5
0
 def testBindPortNumbersGeneratedV4(self):
     p = PortNumberGenerator.next(bind=True)
     self.assertTrue(0 < p < 65536)
     for reuse in [True, False]:
         self.assertNotBound(
             bindV4(ip='127.0.0.1', port=p, protocol='tcp', reuse=reuse))
         self.assertNotBound(
             bindV4(ip='127.0.0.1', port=p, protocol='udp', reuse=reuse))
         self.assertNotBound(
             bindV4(ip='0.0.0.0', port=p, protocol='tcp', reuse=reuse))
         self.assertNotBound(
             bindV4(ip='0.0.0.0', port=p, protocol='udp', reuse=reuse))
     PortNumberGenerator.unbind(p)
Esempio n. 6
0
    def testBindPortRangeNumberGiven(self):
        port = PortNumberGenerator.next(blockSize=2)
        port2 = port + 1
        PortNumberGenerator.bind(port=port, blockSize=2)
        self.assertNotBound(
            bindV4(ip='127.0.0.1', port=port, protocol='tcp', reuse=True))
        self.assertNotBound(
            bindV4(ip='127.0.0.1', port=port2, protocol='tcp', reuse=True))

        PortNumberGenerator.unbind(port=port, blockSize=2)
        self.assertBoundAndUnbind(
            bindV4(ip='127.0.0.1', port=port, protocol='tcp', reuse=True))
        self.assertBoundAndUnbind(
            bindV4(ip='127.0.0.1', port=port2, protocol='tcp', reuse=True))
Esempio n. 7
0
    def testBindPortNumberGiven(self):
        port, close = attemptBinding(bindPort=0)
        close()
        PortNumberGenerator.bind(port=port)
        self.assertNotBound(
            bindV4(ip='127.0.0.1', port=port, protocol='tcp', reuse=True))
        if has_dual_stack():
            self.assertNotBound(
                bindV6(ip='::1', port=port, protocol='tcp', reuse=True))

        PortNumberGenerator.unbind(port=port)
        self.assertBoundAndUnbind(
            bindV4(ip='127.0.0.1', port=port, protocol='tcp', reuse=True))
        if has_dual_stack():
            self.assertBoundAndUnbind(
                bindV6(ip='::1', port=port, protocol='tcp', reuse=True))
    def testUnbindPortNumberV6(self):
        if not has_dual_stack():
            return printDualStackSkipped()

        p = PortNumberGenerator.next(bind=True)
        self.assertNotBound(bindV4(ip='::1', port=p, protocol='tcp', reuse=True))

        PortNumberGenerator.unbind(port=p)

        self.assertBoundAndUnbind(bindV6(ip='::1', port=p, protocol='tcp', reuse=False)) # Same IP-version, protocol, host, port combination: basically testing bindV6's close happened.
        for protocol in ['tcp', 'udp']:
            self.assertBoundAndUnbind(bindV4(ip='127.0.0.1', port=p, protocol=protocol, reuse=False))
            self.assertBoundAndUnbind(bindV4(ip='0.0.0.0', port=p, protocol=protocol, reuse=False))
            self.assertBoundAndUnbind(bindV6(ip='::1', port=p, protocol=protocol, reuse=False))
            self.assertBoundAndUnbind(bindV6(ip='::', port=p, protocol=protocol, reuse=False))
            self.assertBoundAndUnbind(bindV6(ip='::1', port=p, protocol=protocol, reuse=False, ipV6Only=False))
            self.assertBoundAndUnbind(bindV6(ip='::', port=p, protocol=protocol, reuse=False, ipV6Only=False))
Esempio n. 9
0
    def testUnbindPortNumberV4(self):
        p = PortNumberGenerator.next(bind=True)
        self.assertNotBound(
            bindV4(ip='127.0.0.1', port=p, protocol='tcp', reuse=True))

        PortNumberGenerator.unbind(port=p)
        self.assertBoundAndUnbind(
            bindV4(ip='127.0.0.1', port=p, protocol='tcp', reuse=False))
        self.assertBoundAndUnbind(
            bindV4(ip='127.0.0.1', port=p, protocol='tcp', reuse=False)
        )  # Same IP-version, protocol, host, port combination: basically testing bindV4's close happened.
        self.assertBoundAndUnbind(
            bindV4(ip='127.0.0.1', port=p, protocol='udp', reuse=False))
        self.assertBoundAndUnbind(
            bindV4(ip='0.0.0.0', port=p, protocol='tcp', reuse=False))
        self.assertBoundAndUnbind(
            bindV4(ip='0.0.0.0', port=p, protocol='udp', reuse=False))
Esempio n. 10
0
    def testBindPortNumberGivenKeepsOldUsedPortsOnFailure(self):
        port1 = PortNumberGenerator.next()
        port2 = PortNumberGenerator.next(blockSize=2)
        port3 = port2 + 1
        PortNumberGenerator.bind(port3)

        # Overlap with already bind port: port3.
        self.assertEqual(set([port1, port2, port3]),
                         PortNumberGenerator._usedPorts)
        self.assertEqual(set([port3]), set(PortNumberGenerator._bound.keys()))
        try:
            PortNumberGenerator.bind(port2, blockSize=2)
        except RuntimeError as e:
            self.assertEqual('Port(s) already bound', str(e))
        else:
            self.fail()

        self.assertEqual(set([port1, port2, port3]),
                         PortNumberGenerator._usedPorts)
        self.assertEqual(set([port3]), set(PortNumberGenerator._bound.keys()))

        # Overlap with bound port: port3.
        PortNumberGenerator.unbind(port=port3)
        _port, close = attemptBinding(bindPort=port3)
        self.assertTrue(_port)
        self.assertEqual(set(), set(PortNumberGenerator._bound.keys()))
        try:
            PortNumberGenerator.bind(port2, blockSize=2)
        except RuntimeError as e:
            self.assertEqual('Port(s) are not free!', str(e))
        else:
            self.fail()

        self.assertEqual(set([port1, port2, port3]),
                         PortNumberGenerator._usedPorts)
        self.assertEqual(set(), set(PortNumberGenerator._bound.keys()))
        close()  # Cleanup
Esempio n. 11
0
 def testUnbindUnboundPortNumber(self):
     PortNumberGenerator.unbind(port=4321)
Esempio n. 12
0
 def testUnbindUnboundPortNumber(self):
     PortNumberGenerator.unbind(port=4321)