Ejemplo n.º 1
0
    def test_write(self):
        string1 = "test string"
        string2 = "second test string"

        w = SocketReaderWriter(wsock)
        w.tx_bytes(string1)
        
        select.select([],[wsock],[])
        w.write_event()
    
        # make sure unregister_for_write_events called
        select.select([rsock],[],[])
        data = rsock.recv(65535) 
        assert data == string1 

        w.tx_bytes(string1)
        w.tx_bytes(string2)

        select.select([],[wsock],[])
        w.write_event()

        select.select([rsock],[],[])
        data = rsock.recv(len(string1)) 
        assert data == string1

        select.select([rsock],[],[])
        data = rsock.recv(len(string2)) 
        assert data == string2
Ejemplo n.º 2
0
    def test_partial_send(self):
        mock_sock = Mock()
        mock_sock.send = Mock(return_value = 3)

        string1 = "abcdefghi"
        w = SocketReaderWriter(mock_sock)
        w.tx_bytes(string1)

        w.write_event() 
        assert mock_sock.send.called_with(string1)

        w.write_event() 
        assert mock_sock.send.called_with(string1[3:])
    
        w.write_event() 
        assert mock_sock.send.called_with(string1[6:])

        call_count = mock_sock.send.call_count
        w.write_event()
        assert mock_sock.send.call_count == call_count
Ejemplo n.º 3
0
    def test_read(self):
        r = SocketReaderWriter(rsock)
        self.buffer = bytearray(100)
        self.view = memoryview(self.buffer)

        rcvr = Mock()
        rcvr.get_rx_buffer = Mock(return_value = (self.view, 100))

        string1 = "test string"
        string2 = "second test string"

        # bytes should be read only when the receiver is set
        wsock.send(string1)
        _, _, _ = select.select([rsock],[],[])
        r.read_event()
        
        r.set_receiver(rcvr)

        wsock.send(string2)

        select.select([rsock],[],[])
        r.read_event()

        total_length = len(string1)+len(string2)
        rcvr.rx_bytes.assert_called_with(total_length)
        assert self.view[0:total_length].tobytes() == string1+string2 

        # after the receiver is unset, make sure it isn't called for 
        # incoming bytes
        r.unset_receiver()
        wsock.send(string2)

        call_count = rcvr.rx_bytes.call_count 
        select.select([rsock],[],[])
        r.read_event()
        assert rcvr.rx_bytes.call_count == call_count
    
        # cleanup by reading the bytes from the socket
        r.set_receiver(rcvr)
        r.read_event()
Ejemplo n.º 4
0
 def test_stream(self):
     r = SocketReaderWriter(rsock)
     assert r.stream() == rsock 
Ejemplo n.º 5
0
    def _setup_handshake_translator(self):
        self._socketreaderwriter = SocketReaderWriter(self._socket)

        self._translator = HandshakeTranslator()
        self._translator.set_readerwriter(self._socketreaderwriter)
        self._translator.set_receiver(self)