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))
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
def test_backward_compatibility_SSL_transport(self): self.transp = transport.Transport( self.host, self.connect_timeout, ssl=True, ) self.assertIsNotNone(self.transp.sock)
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
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()
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()
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()
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()
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
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()
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
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()
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()
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)
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)
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)