datex_native/com_interfaces/websocket/
mod.rs1pub mod websocket_client;
2pub mod websocket_server;
3
4#[cfg(test)]
6mod tests {
7 use ntest_timeout::timeout;
8 use tokio::join;
9 use crate::com_interfaces::tests::{test_client_server_interfaces, test_client_server_sockets};
10 use datex_core::network::com_interfaces::com_interface::factory::{ComInterfaceAsyncFactory};
11
12 use datex_core::network::com_interfaces::default_setup_data::websocket::websocket_server::WebSocketServerInterfaceSetupData;
13 use crate::com_interfaces::websocket::websocket_server::WebSocketServerInterfaceSetupDataNative;
14 use datex_core::network::com_interfaces::default_setup_data::websocket::websocket_client::WebSocketClientInterfaceSetupData;
15 use crate::com_interfaces::websocket::websocket_client::WebSocketClientInterfaceSetupDataNative;
16 use datex_core::utils::async_iterators::async_next_pin_box;
17
18 #[tokio::test]
19 #[timeout(2000)]
20 async fn test_connect_and_communicate() {
21
22 let address= "0.0.0.0:45678".to_string();
23
24 let mut server_interface_configuration =
25 WebSocketServerInterfaceSetupDataNative(WebSocketServerInterfaceSetupData {
26 bind_address: address.clone(),
27 accept_addresses: None,
28 })
29 .create_interface()
30 .await
31 .unwrap();
32
33 let (client_interface_configuration, server_socket) = join!(
34 WebSocketClientInterfaceSetupDataNative(WebSocketClientInterfaceSetupData {
36 url: format!("ws://{}", address),
37 })
38 .create_interface(),
39 async_next_pin_box(&mut server_interface_configuration.new_sockets_iterator)
41 );
42
43 let mut client_interface_configuration = client_interface_configuration.unwrap();
45 let server_socket = server_socket.unwrap().unwrap();
46 let client_socket = async_next_pin_box(&mut client_interface_configuration.new_sockets_iterator).await.unwrap().unwrap();
47
48 assert_eq!(
50 client_interface_configuration.properties.name,
51 Some(format!("ws://{}", address)),
52 );
53 assert_eq!(
54 client_interface_configuration.properties.channel,
55 "websocket"
56 );
57 assert_eq!(
58 client_interface_configuration.properties.interface_type,
59 "websocket-client"
60 );
61
62 assert_eq!(
64 server_interface_configuration.properties.name,
65 Some(address)
66 );
67 assert_eq!(
68 server_interface_configuration.properties.channel,
69 "websocket"
70 );
71 assert_eq!(
72 server_interface_configuration.properties.interface_type,
73 "websocket-server"
74 );
75
76 test_client_server_sockets(
77 server_socket,
78 client_socket,
79 ).await;
80 }
81}