示例#1
0
    def test_connect_fail(self):
        gatherer_1 = RTCIceGatherer()
        transport_1 = RTCIceTransport(gatherer_1)

        gatherer_2 = RTCIceGatherer()
        transport_2 = RTCIceTransport(gatherer_2)

        # gather candidates
        run(asyncio.gather(gatherer_1.gather(), gatherer_2.gather()))
        for candidate in gatherer_2.getLocalCandidates():
            run(transport_1.addRemoteCandidate(candidate))
        for candidate in gatherer_1.getLocalCandidates():
            run(transport_2.addRemoteCandidate(candidate))
        self.assertEqual(transport_1.state, "new")
        self.assertEqual(transport_2.state, "new")

        # connect
        run(transport_2.stop())
        run(transport_1.start(gatherer_2.getLocalParameters()))
        self.assertEqual(transport_1.state, "failed")
        self.assertEqual(transport_2.state, "closed")

        # cleanup
        run(asyncio.gather(transport_1.stop(), transport_2.stop()))
        self.assertEqual(transport_1.state, "closed")
        self.assertEqual(transport_2.state, "closed")
示例#2
0
    def test_connect_when_closed(self):
        gatherer = RTCIceGatherer()
        transport = RTCIceTransport(gatherer)

        # stop transport
        run(transport.stop())
        self.assertEqual(transport.state, "closed")

        # try to start it
        with self.assertRaises(InvalidStateError) as cm:
            run(
                transport.start(
                    RTCIceParameters(usernameFragment="foo", password="******")))
        self.assertEqual(str(cm.exception), "RTCIceTransport is closed")
示例#3
0
    async def test_connect(self):
        gatherer_1 = RTCIceGatherer()
        transport_1 = RTCIceTransport(gatherer_1)

        gatherer_2 = RTCIceGatherer()
        transport_2 = RTCIceTransport(gatherer_2)

        # gather candidates
        await asyncio.gather(gatherer_1.gather(), gatherer_2.gather())
        for candidate in gatherer_2.getLocalCandidates():
            await transport_1.addRemoteCandidate(candidate)
        for candidate in gatherer_1.getLocalCandidates():
            await transport_2.addRemoteCandidate(candidate)
        self.assertEqual(transport_1.state, "new")
        self.assertEqual(transport_2.state, "new")

        # connect
        await asyncio.gather(
            transport_1.start(gatherer_2.getLocalParameters()),
            transport_2.start(gatherer_1.getLocalParameters()),
        )
        self.assertEqual(transport_1.state, "completed")
        self.assertEqual(transport_2.state, "completed")

        # cleanup
        await asyncio.gather(transport_1.stop(), transport_2.stop())
        self.assertEqual(transport_1.state, "closed")
        self.assertEqual(transport_2.state, "closed")
示例#4
0
    def test_send_connection_error(self):
        gatherer = RTCIceGatherer()
        transport = RTCIceTransport(gatherer)
        self.assertEqual(transport.state, "new")

        # fake connection
        gatherer._connection.connect = noop
        run(
            transport.start(
                RTCIceParameters(usernameFragment="foo", password="******")))
        self.assertEqual(transport.state, "completed")

        with self.assertRaises(ConnectionError):
            run(transport._send(b"foo"))
        self.assertEqual(transport.state, "failed")
    def test_send_connection_error(self):
        gatherer = RTCIceGatherer()
        transport = RTCIceTransport(gatherer)
        self.assertEqual(transport.state, 'new')

        # fake connection
        gatherer._connection.connect = noop
        run(
            transport.start(
                RTCIceParameters(usernameFragment='foo', password='******')))
        self.assertEqual(transport.state, 'completed')

        with self.assertRaises(ConnectionError):
            run(transport._send(b'foo'))
        self.assertEqual(transport.state, 'failed')
示例#6
0
    def test_connection_closed(self):
        gatherer = RTCIceGatherer()

        # mock out methods
        gatherer._connection.connect = mock_connect
        gatherer._connection.get_event = mock_get_event

        transport = RTCIceTransport(gatherer)
        self.assertEqual(transport.state, "new")

        run(
            transport.start(
                RTCIceParameters(usernameFragment="foo", password="******")))
        self.assertEqual(transport.state, "completed")

        run(asyncio.sleep(1))
        self.assertEqual(transport.state, "failed")

        run(transport.stop())
        self.assertEqual(transport.state, "closed")
示例#7
0
    async def test_construct(self):
        gatherer = RTCIceGatherer()
        connection = RTCIceTransport(gatherer)
        self.assertEqual(connection.state, "new")
        self.assertEqual(connection.getRemoteCandidates(), [])

        candidate = RTCIceCandidate(
            component=1,
            foundation="0",
            ip="192.168.99.7",
            port=33543,
            priority=2122252543,
            protocol="UDP",
            type="host",
        )

        # add candidate
        await connection.addRemoteCandidate(candidate)
        self.assertEqual(connection.getRemoteCandidates(), [candidate])

        # end-of-candidates
        await connection.addRemoteCandidate(None)
        self.assertEqual(connection.getRemoteCandidates(), [candidate])
示例#8
0
    def test_construct(self):
        gatherer = RTCIceGatherer()
        connection = RTCIceTransport(gatherer)
        self.assertEqual(connection.state, 'new')
        self.assertEqual(connection.getRemoteCandidates(), [])

        candidate = RTCIceCandidate(component=1,
                                    foundation='0',
                                    ip='192.168.99.7',
                                    port=33543,
                                    priority=2122252543,
                                    protocol='UDP',
                                    type='host')

        # add candidate
        connection.addRemoteCandidate(candidate)
        self.assertEqual(connection.getRemoteCandidates(), [candidate])

        # end-of-candidates
        connection.addRemoteCandidate(None)
        self.assertEqual(connection.getRemoteCandidates(), [candidate])
    def test_connect(self):
        gatherer_1 = RTCIceGatherer()
        transport_1 = RTCIceTransport(gatherer_1)

        gatherer_2 = RTCIceGatherer()
        transport_2 = RTCIceTransport(gatherer_2)

        # gather candidates
        run(asyncio.gather(gatherer_1.gather(), gatherer_2.gather()))
        for candidate in gatherer_2.getLocalCandidates():
            transport_1.addRemoteCandidate(candidate)
        for candidate in gatherer_1.getLocalCandidates():
            transport_2.addRemoteCandidate(candidate)
        self.assertEqual(transport_1.state, 'new')
        self.assertEqual(transport_2.state, 'new')

        # connect
        run(
            asyncio.gather(transport_1.start(gatherer_2.getLocalParameters()),
                           transport_2.start(gatherer_1.getLocalParameters())))
        self.assertEqual(transport_1.state, 'completed')
        self.assertEqual(transport_2.state, 'completed')

        # cleanup
        run(asyncio.gather(transport_1.stop(), transport_2.stop()))
        self.assertEqual(transport_1.state, 'closed')
        self.assertEqual(transport_2.state, 'closed')