Ejemplo n.º 1
0
    def test_init_connection(self, mock_Socket, mock_select, mock_events):
        mock_Socket.return_value = Socket(MockPythonSocket())
        mock_select.side_effect = [([], [], []), Exception]
        mock_events.side_effect = [TypeError]

        test_TCP_Client = TCPClient()
        cmd_signal = mock.Mock()
        cmd_signal.emit.side_effect = [None, Expected_1]
        test_TCP_Client.cmd_signal = cmd_signal
        with pytest.raises(Expected_1):
            test_TCP_Client.init_connection(
                extra_commands=[ThreadCommand('test')])
        assert not test_TCP_Client.connected

        test_TCP_Client = TCPClient()
        test_Socket = Socket(MockPythonSocket())
        test_Socket.send_string('init')
        mock_Socket.return_value = test_Socket
        mock_select.side_effect = [(['init'], [], ['error'])]
        test_TCP_Client.init_connection()
        assert not test_TCP_Client.connected

        mock_Socket.side_effect = [ConnectionRefusedError]
        cmd_signal = mock.Mock()
        cmd_signal.emit.side_effect = [None, Expected_2]
        test_TCP_Client.cmd_signal = cmd_signal
        with pytest.raises(Expected_2):
            test_TCP_Client.init_connection()
    def test_send_list(self):
        listing = [
            np.random.rand(7, 2),
            'Hello World',
            1,
            2.654,
        ]

        server = SimpleServer(
            ('127.0.0.1', 0),
            handle_fun=lambda x: Socket(x).send_list(listing))
        server.start()
        client = Socket(
            socket.create_connection(('127.0.0.1', server.server_port)))

        sleep(0.1)

        data = []
        list_len = client.get_int()

        for ind in range(list_len):
            data_type = client.get_string()
            if data_type == 'scalar':
                data.append(client.get_scalar())
            elif data_type == 'string':
                data.append(client.get_string())
            elif data_type == 'array':
                data.append(client.get_array())
        utils.check_vals_in_iterable(data, listing)

        client.close()
        server.stop()
Ejemplo n.º 3
0
 def test_get_array(self):
     test_Socket = Socket(MockPythonSocket())
     array = np.array([1, 2.1, 3.0])
     test_Socket.send_array(array)
     result = test_Socket.get_array()
     assert np.array_equal(array, result)
     assert not test_Socket.socket._send
Ejemplo n.º 4
0
    def test_bytes_to_int(self):
        integer = 5
        bytes_integer = Socket.int_to_bytes(integer)
        result = Socket.bytes_to_int(bytes_integer)
        assert isinstance(result, int)
        assert result == integer

        with pytest.raises(TypeError):
            Socket.bytes_to_int(integer)
Ejemplo n.º 5
0
    def test_int_to_bytes(self):
        integer = 5
        bytes_integer = Socket.int_to_bytes(integer)
        assert isinstance(bytes_integer, bytes)

        with pytest.raises(TypeError):
            Socket.int_to_bytes(1.5)
        with pytest.raises(TypeError):
            Socket.int_to_bytes('5')
Ejemplo n.º 6
0
 def test_get_list(self):
     test_Socket = Socket(MockPythonSocket())
     data_list = [np.array([1, 2]), 'test', 47]
     test_Socket.send_list(data_list)
     result = test_Socket.get_list()
     for elem1, elem2 in zip(data_list, result):
         if isinstance(elem1, np.ndarray):
             assert np.array_equal(elem1, elem2)
         else:
             assert elem1 == elem2
     assert not test_Socket.socket._send
Ejemplo n.º 7
0
    def test_send_command(self, mock_emit):
        mock_emit.side_effect = [Expected_1, None]

        test_TCP_Server = TCPServer()
        test_Socket = Socket(MockPythonSocket())
        test_TCP_Server.message_list = []
        with pytest.raises(Expected_1):
            test_TCP_Server.send_command(test_Socket)

        test_TCP_Server.message_list = ['move_at']
        test_TCP_Server.send_command(test_Socket)
        assert test_Socket.get_string() == 'move_at'

        assert not test_TCP_Server.send_command(test_Socket, command='test')
Ejemplo n.º 8
0
    def test_close_server(self):
        test_TCP_Server = TCPServer()

        socket_1 = Socket(MockPythonSocket())
        socket_1.bind(('0.0.0.1', 4455))
        socket_2 = Socket(MockPythonSocket())
        socket_2.bind(('0.0.0.2', 4456))
        dict_list = [{
            'socket': socket_1,
            'type': 'server'
        }, {
            'socket': socket_2,
            'type': 'Client'
        }]
        test_TCP_Server.connected_clients = dict_list

        params = [{'name': 'conn_clients', 'value': dict_list}]
        test_TCP_Server.settings = Parameter.create(name='Settings',
                                                    type='group',
                                                    children=params)

        test_TCP_Server.close_server()
        for socket_dict in test_TCP_Server.connected_clients:
            assert socket_dict['type'] != 'server'

        for socket in test_TCP_Server.settings.child(('conn_clients')).value():
            assert not 'server' in socket
    def test_methods(self, get_server, qtbot):
        server = get_server()
        server.settings.child(
            ('socket_ip')).setValue('127.0.0.1')  # local host
        server.settings.child(('port_id')).setValue(6341)
        server.connected_clients.append(
            dict(type='server', socket=server.serversocket))
        actu_socket = Socket(
            native_socket.socket(socket.AF_INET, socket.SOCK_STREAM))
        server.connected_clients.append(
            dict(type='ACTUATOR', socket=actu_socket))

        #find_socket_within_connected_clients
        assert server.find_socket_within_connected_clients(
            'ACTUATOR') == actu_socket
        assert server.find_socket_within_connected_clients('ACTUAT') is None

        #find_socket_type_within_connected_clients
        assert server.find_socket_type_within_connected_clients(
            server.serversocket) == 'server'

        #set_connected_clients_table
        assert server.set_connected_clients_table() == OrderedDict(
            server="unconnected invalid socket",
            ACTUATOR="unconnected invalid socket")

        #remove_client
        server.remove_client(actu_socket)
        assert server.set_connected_clients_table() == OrderedDict(
            server="unconnected invalid socket")
Ejemplo n.º 10
0
 def test_send_infos_xml(self):
     test_TCP_Client = TCPClient()
     test_TCP_Client.socket = Socket(MockPythonSocket())
     test_TCP_Client.send_infos_xml('test_send_infos_xml')
     assert test_TCP_Client.socket.get_string() == 'Infos'
     assert test_TCP_Client.socket.get_string() == 'test_send_infos_xml'
     assert not test_TCP_Client.socket.socket._send
    def test_send_another_list(self):
        listing = [
            'another list that should raise an exception because there is a boolean that is not a valid type',
            [
                'gg',
            ],
        ]
        server = SimpleServer(('127.0.0.1', 0), )
        server.start()
        client = Socket(
            socket.create_connection(('127.0.0.1', server.server_port)))
        sleep(0.1)
        server_socket = Socket(server.do_read()[0])
        with pytest.raises(TypeError):
            assert server_socket.send_list(listing)

        server.stop()
    def test_get_scalar(self):
        scalars = [15489, 2.4589]
        server = SimpleServer(('127.0.0.1', 0), )
        server.start()
        client = Socket(
            socket.create_connection(('127.0.0.1', server.server_port)))
        sleep(0.1)
        server_socket = Socket(server.do_read()[0])

        for scalar in scalars:
            server_socket.send_scalar(scalar)
            assert client.get_scalar() == scalar
        client.close()
        server.stop()
Ejemplo n.º 13
0
    def test_send_scalar(self):
        test_Socket = Socket(MockPythonSocket())
        scalar = 7
        test_Socket.send_scalar(scalar)

        data = np.array(scalar)
        data_bytes = data.tobytes()
        data_type = data.dtype.descr[0][1]
        cmd_bytes, cmd_length_bytes = test_Socket.message_to_bytes(data_type)

        assert test_Socket.recv() == cmd_length_bytes
        assert test_Socket.recv() == cmd_bytes
        assert test_Socket.recv() == test_Socket.int_to_bytes(len(data_bytes))
        assert test_Socket.recv() == data_bytes
        assert not test_Socket.socket._send

        with pytest.raises(TypeError):
            test_Socket.send_scalar('5')
Ejemplo n.º 14
0
 def test_send_infos_string(self):
     test_TCP_Client = TCPClient()
     test_TCP_Client.socket = Socket(MockPythonSocket())
     info_to_display = 'info to display'
     value_as_string = 192.7654
     test_TCP_Client.send_info_string(info_to_display, value_as_string)
     assert test_TCP_Client.socket.get_string() == 'Info'
     assert test_TCP_Client.socket.get_string() == info_to_display
     assert test_TCP_Client.socket.get_string() == str(value_as_string)
     assert not test_TCP_Client.socket.socket._send
 def test_check_sended(self):
     string = 'this is a message of a given length'
     server = SimpleServer(
         ('127.0.0.1', 0),
         handle_fun=lambda x: Socket(x).check_sended(string.encode()))
     server.start()
     client = socket.create_connection(('127.0.0.1', server.server_port))
     response = client.recv(4096)
     assert response == b'this is a message of a given length'
     client.close()
     server.stop()
Ejemplo n.º 16
0
    def test_check_sended(self):
        test_Socket = Socket(MockPythonSocket())
        test_Socket.check_sended(b'test')
        assert b'test' in test_Socket.socket._send

        with pytest.raises(TypeError):
            test_Socket.check_sended('test')
 def test_send_string(self):
     string = 'this is a message'
     server = SimpleServer(
         ('127.0.0.1', 0),
         handle_fun=lambda x: Socket(x).send_string(string))
     server.start()
     client = Socket(
         socket.create_connection(('127.0.0.1', server.server_port)))
     len_string = int.from_bytes(client.check_received_length(4), 'big')
     assert len_string == len(string)
     assert client.check_received_length(len_string) == string.encode()
     client.close()
     server.stop()
    def test_get_array(self):
        arrays = [
            np.random.rand(7, 1),
            np.random.rand(10, 2),
            np.random.rand(10, 2, 4),
            np.random.rand(10, 1, 3),
            np.random.rand(10, 4, 3, 1),
        ]
        server = SimpleServer(('127.0.0.1', 0), )
        server.start()
        client = Socket(
            socket.create_connection(('127.0.0.1', server.server_port)))
        server_socket = Socket(server.do_read()[0])
        for array in arrays:
            server_socket.send_array(array)

            data = client.get_array()
            assert np.all(data == array)
        client.close()
        server.stop()
Ejemplo n.º 19
0
    def test_send_data(self):
        test_TCP_Client = TCPClient()
        test_TCP_Client.socket = Socket(MockPythonSocket())
        data_list = [14, 1.1, 'test', np.array([1, 2, 3])]
        test_TCP_Client.send_data(data_list)
        assert test_TCP_Client.socket.get_string() == 'Done'
        result = test_TCP_Client.socket.get_list()
        for elem1, elem2 in zip(data_list, result):
            if isinstance(elem1, np.ndarray):
                assert np.array_equal(elem1, elem2)
            else:
                assert elem1 == elem2
        assert not test_TCP_Client.socket.socket._send

        with pytest.raises(TypeError):
            test_TCP_Client.send_data([1j])
 def test_get_string(self):
     string = 'this is a message'
     server = SimpleServer(
         ('127.0.0.1', 0),
         handle_fun=lambda x: Socket(x).send_string(string))
     server.start()
     client = Socket(
         socket.create_connection(('127.0.0.1', server.server_port)))
     assert client.get_string() == string
     client.close()
     server.stop()
 def test_get_int(self):
     one_integer = 15489
     server = SimpleServer(
         ('127.0.0.1', 0),
         handle_fun=lambda x: x.sendall(Socket.int_to_bytes(one_integer)))
     server.start()
     client = Socket(
         socket.create_connection(('127.0.0.1', server.server_port)))
     assert client.get_int() == one_integer
     client.close()
     server.stop()
Ejemplo n.º 22
0
    def test_data_ready(self):
        test_TCP_Client = TCPClient()
        test_TCP_Client.socket = Socket(MockPythonSocket())
        data = [1, 5.3, 'test']
        datas = [{
            'data': data,
            'name': 'TestData'
        }, {
            'data': None,
            'name': 'FalseData'
        }]

        test_TCP_Client.data_ready(datas)
        assert test_TCP_Client.socket.get_string() == 'Done'
        result = np.array(test_TCP_Client.socket.get_list())
        assert np.array_equal(np.array(data), result)
        assert not test_TCP_Client.socket.socket._send
Ejemplo n.º 23
0
    def test_get_data(self):
        test_TCP_Client = TCPClient()
        test_TCP_Client.socket = Socket(MockPythonSocket())
        data_list = [1, 2, 3]
        data_param = 'test'
        test_TCP_Client.socket.send_list(data_list)
        test_TCP_Client.socket.send_string(data_param)
        test_TCP_Client.get_data('set_info')
        assert not test_TCP_Client.socket.socket._send

        test_TCP_Client.socket.send_scalar(10)
        test_TCP_Client.get_data('move_abs')
        assert not test_TCP_Client.socket.socket._send

        test_TCP_Client.socket.send_scalar(7)
        test_TCP_Client.get_data('move_rel')
        assert not test_TCP_Client.socket.socket._send
 def test_check_received_length(self):
     string = 'this is a message'
     server = SimpleServer(
         ('127.0.0.1', 0),
         handle_fun=lambda x: Socket(x).check_sended(string.encode()))
     server.start()
     client = Socket(
         socket.create_connection(('127.0.0.1', server.server_port)))
     assert client.check_received_length(len(
         string.encode())) == string.encode()
     client.close()
     server.stop()
Ejemplo n.º 25
0
    def test_remove_client(self, mock_emit):
        mock_emit.side_effect = [Expected_1, Expected_2]

        test_TCP_Server = TCPServer()
        socket_1 = Socket(MockPythonSocket())
        socket_1.bind(('0.0.0.1', 4455))
        socket_2 = Socket(MockPythonSocket())
        socket_2.bind(('0.0.0.2', 4456))
        dict_list = [{
            'socket': socket_1,
            'type': 'Server'
        }, {
            'socket': socket_2,
            'type': 'Client'
        }]
        test_TCP_Server.connected_clients = dict_list

        params = [{'name': 'conn_clients', 'value': dict_list}]
        test_TCP_Server.settings = Parameter.create(name='Settings',
                                                    type='group',
                                                    children=params)

        with pytest.raises(Expected_1):
            test_TCP_Server.remove_client(socket_1)

        clients = test_TCP_Server.settings.child('conn_clients').value()
        assert not 'Server' in clients
        assert 'Client' in clients

        for socket_dict in test_TCP_Server.connected_clients:
            assert not 'Server' in socket_dict['type']

        socket_except = mock.Mock()
        socket_except.close.side_effect = [Exception]

        dict_list = [{'socket': socket_except, 'type': 'Exception'}]
        test_TCP_Server.connected_clients = dict_list

        with pytest.raises(Expected_2):
            test_TCP_Server.remove_client(socket_except)
 def test_message_to_bytes(self):
     string = 'this is a message'
     assert Socket.message_to_bytes(string)[0] == string.encode()
     assert Socket.message_to_bytes(string)[1] == Socket.int_to_bytes(
         len(string))
    def test_methods(self, qtbot):
        server = SimpleServer(('127.0.0.1', 6341), )
        server.start()

        params = [{
            'title': 'Device index:',
            'name': 'device',
            'type': 'int',
            'value': 0,
            'max': 3,
            'min': 0
        }, {
            'title': 'Infos:',
            'name': 'infos',
            'type': 'str',
            'value': "one_info",
            'readonly': True
        }, {
            'title':
            'Line Settings:',
            'name':
            'line_settings',
            'type':
            'group',
            'expanded':
            False,
            'children': [
                {
                    'name': 'someparam',
                    'type': 'float',
                    'value': 15.54,
                    'readonly': True
                },
            ]
        }]
        param = Parameter.create(name='settings',
                                 type='group',
                                 children=params)
        client = TCPClient(ipaddress="127.0.0.1",
                           port=6341,
                           params_state=param.saveState(),
                           client_type="sometype")
        client.cmd_signal.connect(self.get_cmd_signal)

        #check init method
        assert client.ipaddress == "127.0.0.1"
        assert client.port == 6341
        assert client.client_type == 'sometype'

        client.socket = Socket(
            native_socket.socket(socket.AF_INET, socket.SOCK_STREAM))
        client.socket.connect((client.ipaddress, client.port))
        sleep(0.5)
        server_socket = Socket(server.do_read()[0])

        client.send_data([np.array([0, 1, 2, 3]), 'item', 5.1])
        assert server_socket.get_string() == 'Done'
        utils.check_vals_in_iterable(server_socket.get_list(),
                                     [np.array([0, 1, 2, 3]), 'item', 5.1])

        client.send_infos_xml(custom_tree.parameter_to_xml_string(param))
        assert server_socket.get_string() == 'Infos'
        assert server_socket.get_string(
        ) == custom_tree.parameter_to_xml_string(param).decode()

        client.send_info_string('someinfo', 'this is an info')
        assert server_socket.get_string() == 'Info'
        assert server_socket.get_string() == 'someinfo'
        assert server_socket.get_string() == 'this is an info'

        #test queue_command
        client.cmd_signal.connect(self.get_cmd_signal)
        client_manager = ClientObjectManager()
        client_manager.cmd_signal.connect(client.queue_command)

        with pytest.raises(Exception):
            client.queue_command(utils.ThreadCommand('Weird command'))

        #test get_data
        server_socket.send_string('set_info')
        server_socket.send_list(['line_settings', 'someparam'])
        server_socket.send_string(
            custom_tree.parameter_to_xml_string(
                param.child('line_settings', 'someparam')))

        msg = client.socket.get_string()
        client.get_data(msg)
        assert self.command == 'set_info'
        utils.check_vals_in_iterable(
            self.attributes,
            [['line_settings', 'someparam'],
             custom_tree.parameter_to_xml_string(
                 param.child('line_settings', 'someparam')).decode()])

        server_socket.send_string('move_abs')
        server_socket.send_scalar(12.546)

        msg = client.socket.get_string()
        client.get_data(msg)
        assert self.command == 'move_abs'
        utils.check_vals_in_iterable(self.attributes, [12.546])

        server_socket.send_string('move_rel')
        server_socket.send_scalar(3.2)

        msg = client.socket.get_string()
        client.get_data(msg)
        assert self.command == 'move_rel'
        utils.check_vals_in_iterable(self.attributes, [3.2])

        server.stop()
 def test_int_to_bytes(self):
     one_integer = 254
     assert Socket.int_to_bytes(one_integer) == one_integer.to_bytes(
         4, 'big')
    def test_send_scalar(self):
        scalars = [15489, 2.4589]

        server = SimpleServer(('127.0.0.1', 0), )
        server.start()
        client = Socket(
            socket.create_connection(('127.0.0.1', server.server_port)))
        sleep(0.1)
        server_socket = Socket(server.do_read()[0])

        for scalar in scalars:
            server_socket.send_scalar(scalar)
            data_type = client.get_string()
            data_len = client.get_int()
            data_bytes = client.check_received_length(data_len)
            data = np.frombuffer(data_bytes, dtype=data_type)[0]
            assert data == scalar
        client.close()
        server.stop()
    def test_send_array(self):
        arrays = [
            np.random.rand(7, 1),
            np.random.rand(10, 2),
            np.random.rand(10, 2, 4),
            np.random.rand(10, 1, 3),
            np.random.rand(10, 4, 3, 1),
        ]
        server = SimpleServer(('127.0.0.1', 0), )
        server.start()
        client = Socket(
            socket.create_connection(('127.0.0.1', server.server_port)))
        sleep(0.1)
        server_socket = Socket(server.do_read()[0])
        for array in arrays:
            server_socket.send_array(array)

            data_type = client.get_string()
            data_len = client.get_int()
            shape_len = client.get_int()
            shape = []
            for ind in range(shape_len):
                shape.append(client.get_int())
            data_bytes = client.check_received_length(data_len)

            data = np.frombuffer(data_bytes, dtype=data_type)
            data = data.reshape(tuple(shape))
            assert np.all(data == array)
        client.close()
        server.stop()