Esempio n. 1
0
 def test_use_default_sock_tcp_opts(self):
     self.transp = transport.Transport(
         self.host, self.connect_timeout, socket_settings={},
     )
     self.transp.connect()
     assert (socket.TCP_NODELAY in
             self.transp._get_tcp_socket_defaults(self.transp.sock))
Esempio n. 2
0
 def test_backward_compatibility_SSL_transport(self):
     self.transp = transport.Transport(
         self.host, self.connect_timeout, ssl=True,
     )
     assert self.transp.sslopts is not None
     self.transp.connect()
     assert self.transp.sock is not None
Esempio n. 3
0
 def test_backward_compatibility_SSL_transport(self):
     self.transp = transport.Transport(
         self.host,
         self.connect_timeout,
         ssl=True,
     )
     self.assertIsNotNone(self.transp.sock)
Esempio n. 4
0
 def test_backward_compatibility_tcp_transport(self):
     self.transp = transport.Transport(
         self.host, self.connect_timeout, ssl=False,
     )
     self.transp.connect()
     expected = 1
     result = self.socket.getsockopt(socket.SOL_TCP, socket.TCP_NODELAY)
     assert result == expected
Esempio n. 5
0
 def test_passing_value_as_string(self):
     socket_settings = {TCP_KEEPIDLE: '5'.encode()}
     self.transp = transport.Transport(
         self.host, self.connect_timeout,
         socket_settings=socket_settings,
     )
     with pytest.raises(socket.error):
         self.transp.connect()
Esempio n. 6
0
 def test_passing_wrong_value_options(self):
     socket_settings = {TCP_KEEPINTVL: 'a'.encode()}
     self.transp = transport.Transport(
         self.host, self.connect_timeout,
         socket_settings=socket_settings,
     )
     with pytest.raises(socket.error):
         self.transp.connect()
Esempio n. 7
0
 def test_passing_wrong_options(self):
     socket_settings = object()
     self.transp = transport.Transport(
         self.host, self.connect_timeout,
         socket_settings=socket_settings,
     )
     with pytest.raises(TypeError):
         self.transp.connect()
Esempio n. 8
0
def test_tls_default_certs():
    # testing TLS connection against badssl.com with default certs
    connection = transport.Transport(
        host="tls-v1-2.badssl.com:1012",
        ssl=True,
    )
    assert type(connection) == transport.SSLTransport
    connection.connect()
Esempio n. 9
0
 def test_passing_tcp_nodelay(self):
     socket_settings = {socket.TCP_NODELAY: 0}
     self.transp = transport.Transport(
         self.host, self.connect_timeout,
         socket_settings=socket_settings,
     )
     self.transp.connect()
     expected = 0
     result = self.socket.getsockopt(socket.SOL_TCP, socket.TCP_NODELAY)
     assert result == expected
Esempio n. 10
0
def test_tls_no_default_certs_fails():
    # testing TLS connection fails against badssl.com without default certs
    connection = transport.Transport(
        host="tls-v1-2.badssl.com:1012",
        ssl={
            "ca_certs": 't/certs/ca_certificate.pem',
        },
    )
    with pytest.raises(ssl.SSLError):
        connection.connect()
Esempio n. 11
0
 def test_set_single_sock_tcp_opt_SSL_transport(self):
     self.tcp_keepidle += 5
     socket_settings = {TCP_KEEPIDLE: self.tcp_keepidle}
     self.transp = transport.Transport(
         self.host, self.connect_timeout,
         ssl=True, socket_settings=socket_settings,
     )
     self.transp.connect()
     expected = self.tcp_keepidle
     result = self.socket.getsockopt(socket.SOL_TCP, TCP_KEEPIDLE)
     assert result == expected
Esempio n. 12
0
 def transport_read_EOF(self):
     for host, ssl in (('localhost:5672', False),
                       ('localhost:5671', True),):
         self.t = transport.Transport(host, ssl)
         self.t.sock = Mock(name='socket')
         self.t.connected = True
         self.t._quick_recv = Mock(name='recv', return_value='')
         with pytest.raises(
             IOError,
             match=r'.*Server unexpectedly closed connection.*'
         ):
             self.t.read_frame()
Esempio n. 13
0
 def test_set_sockopt_opts_timeout(self):
     # tests socket options SO_RCVTIMEO and SO_SNDTIMEO
     # this test is soley for coverage as socket.settimeout
     # is pythonic way to have timeouts
     self.transp = transport.Transport(
         self.host,
         self.connect_timeout,
     )
     self.transp.read_timeout = 0xdead
     self.transp.write_timeout = 0xbeef
     with patch('socket.socket', return_value=MockSocket()):
         self.transp.connect()
Esempio n. 14
0
 def test_set_single_sock_tcp_opt_tcp_transport(self):
     tcp_keepidle = self.tcp_keepidle + 5
     socket_settings = {TCP_KEEPIDLE: tcp_keepidle}
     self.transp = transport.Transport(
         self.host,
         self.connect_timeout,
         ssl=False,
         socket_settings=socket_settings,
     )
     expected = tcp_keepidle
     result = self.socket.getsockopt(socket.SOL_TCP, TCP_KEEPIDLE)
     self.assertEqual(result, expected)
Esempio n. 15
0
    def test_values_are_set(self):
        socket_settings = {TCP_KEEPIDLE: 10, TCP_KEEPINTVL: 4, TCP_KEEPCNT: 2}

        self.transp = transport.Transport(
            self.host,
            self.connect_timeout,
            socket_settings=socket_settings,
        )
        expected = socket_settings
        tcp_keepidle = self.socket.getsockopt(socket.SOL_TCP, TCP_KEEPIDLE)
        tcp_keepintvl = self.socket.getsockopt(socket.SOL_TCP, TCP_KEEPINTVL)
        tcp_keepcnt = self.socket.getsockopt(socket.SOL_TCP, TCP_KEEPCNT)
        result = {
            TCP_KEEPIDLE: tcp_keepidle,
            TCP_KEEPINTVL: tcp_keepintvl,
            TCP_KEEPCNT: tcp_keepcnt
        }
        self.assertEqual(result, expected)
Esempio n. 16
0
    def test_set_sockopt_opts_timeout(self):
        # tests socket options SO_RCVTIMEO and SO_SNDTIMEO
        self.transp = transport.Transport(
            self.host, self.connect_timeout,
        )
        read_timeout_sec, read_timeout_usec = 0xdead, 0xbeef
        write_timeout_sec = 0x42

        self.transp.read_timeout = read_timeout_sec + \
            read_timeout_usec * 0.000001
        self.transp.write_timeout = write_timeout_sec
        self.transp.connect()

        expected_rcvtimeo = struct.pack('ll', read_timeout_sec,
                                        read_timeout_usec)
        expected_sndtimeo = struct.pack('ll', write_timeout_sec, 0)
        assert expected_rcvtimeo == self.socket.getsockopt(socket.SOL_TCP,
                                                           socket.SO_RCVTIMEO)
        assert expected_sndtimeo == self.socket.getsockopt(socket.SOL_TCP,
                                                           socket.SO_SNDTIMEO)