Exemplo n.º 1
0
 def test_recieve_zero_length(self):
     nstr = NetString(self.socket)
     # close on empty socket
     try:
         nstr.read_string()
         assert False
     except NetStringClosed as e:
         assert str(e) == 'connection closed'
Exemplo n.º 2
0
 def test_too_long_string(self):
     data = str(NetString.MAX_STRING_LEN).encode()
     self.socket.output.sendall(data)
     nstr = NetString(self.socket)
     try:
         data = nstr.read_string()
         assert False
     except NetStringException as e:
         assert str(e) == 'can\'t receive, wrong net string format'
Exemplo n.º 3
0
 def test_not_numbers_in_string_length(self):
     # close on not numbers in string length
     self.socket.output.sendall(b'abc')
     nstr = NetString(self.socket)
     try:
         nstr.read_string()
         assert False
     except NetStringException as e:
         assert str(e) == 'can\'t receive, wrong net string format'
Exemplo n.º 4
0
 def test_exception_in_send_all(self):
     socket = Mock()
     socket.sendall = Mock()
     socket.sendall = Mock(side_effect=Exception('some error'))
     nstr = NetString(socket)
     try:
         nstr.write_string("some data")
         assert False
     except NetStringClosed as e:
         assert str(e) == 'connection closed'
Exemplo n.º 5
0
 def test_writing_to_long_string(self):
     nstr = NetString(None)
     data = Mock()
     data.__len__ = Mock()
     data.__len__.return_value = NetString.MAX_STRING_LEN + 1
     try:
         data = nstr.write_string(data)
         assert False
     except NetStringException as e:
         assert str(e) == 'can\'t send, net string too long'
Exemplo n.º 6
0
 def test_too_short_string(self):
     data = "some string"
     data = '%d:%s' % (len(data), data)
     self.socket.output.sendall(data.encode())
     nstr = NetString(self.socket)
     try:
         data = nstr.read_string()
         assert False
     except NetStringClosed as e:
         assert str(e) == 'can\'t receive, net string closed'
Exemplo n.º 7
0
 def test_comma_at_end_of_string(self):
     data = "some string"
     data = '%d:%sx' % (len(data), data)
     self.socket.output.sendall(data.encode())
     nstr = NetString(self.socket)
     try:
         data = nstr.read_string()
         assert False
     except NetStringException as e:
         assert str(e) == 'wrong net string format'
Exemplo n.º 8
0
 def test_slen_greater_max(self):
     data = (str(NetString.MAX_STRING_LEN - 1) + ":abc").encode()
     NetString.MAX_STRING_LEN -= 2
     self.socket.output.sendall(data)
     nstr = NetString(self.socket)
     try:
         data = nstr.read_string()
         assert False
     except NetStringException as e:
         assert str(e) == 'net string too long'
Exemplo n.º 9
0
 def test_low_level_exception_on_exchange(self, monkeypatch):
     transport = NetString('skt')
     transport.write_string = lambda x: MockUtils.raise_(
         Exception('some error'))
     client = AgentProxy('localhost:7000')
     client.transport = transport
     client.skt = 'skt'
     try:
         client._exchange({'some': 'data'})
         assert False
     except AgentProxyException as e:
         assert str(e) == 'some error'
Exemplo n.º 10
0
    def connect(self, retry=6):

        self.disconnect()

        def parse_address(address):
            try:
                host, port = address.split(':')
                return host, int(port)
            except Exception:
                raise AgentProxyException("can't parse server address.")

        if not isinstance(self.address, tuple):
            self.address = parse_address(self.address)

        count = 0
        random.seed()
        while True:
            try:
                log.info("trying to connect, attempt: %d (%d)" %
                         (count + 1, retry))
                s = socket.socket()
                s.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
                s.connect(self.address)
                self.transport = NetString(s)
                assert s is not None
                self.skt = s
                break
            except socket.error as e:
                s.close()
                count += 1
                if count < retry:
                    time.sleep(random.uniform(0.5, 6))
                    continue
                else:
                    raise AgentProxyException(str(e))
            except Exception as e:
                raise AgentProxyException(str(e))
Exemplo n.º 11
0
 def test_to_wire_and_read_back(self):
     some_string = b"some string"
     nstr = NetString(self.socket)
     nstr.write_string(some_string)
     data = nstr.read_string()
     assert data == some_string
Exemplo n.º 12
0
 def __init__(self, skt, address):
     NetString.__init__(self, skt)
     self.agent = RLXAgentProxy()
     self.address = address