diff --git a/.drone.yml b/.drone.yml index 4451ccc..7e87e4f 100644 --- a/.drone.yml +++ b/.drone.yml @@ -27,6 +27,13 @@ steps: - sleep 75 - ./scripts/deploy_sandbox_client.sh server:4000 + - name: test_server + image: rust + commands: + - sleep 75 + - ./scripts/deploy_sandbox_client.sh server:4000 + - cargo test --no-default_features --features "client,tls_no_verify" + services: - name: database image: postgres diff --git a/Cargo.toml b/Cargo.toml index 930cbc0..ec57111 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,7 +18,7 @@ test = false bench = false [features] -default = ["server", "client"] +default = ["server"] server = [] client = [] tls_no_verify = ["tokio-rustls/dangerous_configuration"] diff --git a/scripts/test_client.sh b/scripts/test_client.sh new file mode 100644 index 0000000..e69de29 diff --git a/scripts/test_server.sh b/scripts/test_server.sh new file mode 100755 index 0000000..b8d176b --- /dev/null +++ b/scripts/test_server.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +. ./scripts/env.sh && cargo run --no-default-features --features "server" -- ${1:-0.0.0.0:4000} & + +PID_server=$! +echo $PID_server + +while kill -0 $PID_server > /dev/null 2>&1 +do + [[ -f "/tmp/paper/running" ]] && break +done + +if [[ -f "/tmp/paper/running" ]]; then + cargo test --no-default-features --features "client,tls_no_verify" + rm /tmp/paper/running + kill $PID_server + pkill sandbox +fi diff --git a/src/bin/sandbox/sandbox.rs b/src/bin/sandbox/sandbox.rs index dc26d08..f5a8225 100644 --- a/src/bin/sandbox/sandbox.rs +++ b/src/bin/sandbox/sandbox.rs @@ -1,9 +1,9 @@ extern crate log; -#[cfg(feature = "client")] -use libtrader::client::initializer::libtrader_init_client; #[cfg(feature = "server")] -use libtrader::server::initializer::{libtrader_init_server, IP}; +use libtrader::server; +#[cfg(feature = "client")] +use libtrader::client; fn main() { #[cfg(feature = "server")] @@ -18,9 +18,9 @@ fn main() { // Spawn server rt.block_on(async move { - IP.scope("0.0.0.0:0000".parse().unwrap(), async move { + server::IP.scope("0.0.0.0:0000".parse().unwrap(), async move { // for main task logging - libtrader_init_server() + server::initialize() .await .expect("failed running server"); }) @@ -31,5 +31,5 @@ fn main() { /* this is a sandbox, we should try to atleast * implement a testing method */ #[cfg(feature = "client")] - libtrader_init_client().expect("failed running client"); + client::initialize().expect("failed running client"); } diff --git a/src/libtrader/client/account/mod.rs b/src/libtrader/client/account/mod.rs index 387cdbf..aca6879 100644 --- a/src/libtrader/client/account/mod.rs +++ b/src/libtrader/client/account/mod.rs @@ -2,6 +2,6 @@ pub mod authorization; pub mod creation; pub mod hash; -pub use crate::client::account::creation::create; pub use crate::client::account::authorization::authorize; +pub use crate::client::account::creation::create; pub use crate::client::account::hash::hash; diff --git a/src/libtrader/client/initializer.rs b/src/libtrader/client/initializer.rs index 35f46d5..b588217 100644 --- a/src/libtrader/client/initializer.rs +++ b/src/libtrader/client/initializer.rs @@ -37,7 +37,7 @@ struct Options { /// libtrader_init_client().expect("failed running client"); /// ``` /// -fn libtrader_init_log() -> io::Result<()> { +fn initialize_log() -> io::Result<()> { use fern::colors::{Color, ColoredLevelConfig}; let mut dispatch = fern::Dispatch::new().format(|out, message, record| { @@ -99,12 +99,12 @@ fn libtrader_init_log() -> io::Result<()> { /// /// Example: /// ```rust -/// libtrader_init_client()?; +/// initialize()?; /// ``` #[tokio::main] -pub async fn libtrader_init_client() -> std::io::Result<()> { +pub async fn initialize() -> std::io::Result<()> { // Initialize log. - libtrader_init_log()?; + initialize_log()?; // Initialize arguments let options: Options = argh::from_env(); diff --git a/src/libtrader/client/mod.rs b/src/libtrader/client/mod.rs index 2b69243..9e68256 100644 --- a/src/libtrader/client/mod.rs +++ b/src/libtrader/client/mod.rs @@ -2,3 +2,5 @@ pub mod account; pub mod ds; pub mod initializer; pub mod network; + +pub use crate::client::initializer::initialize; diff --git a/src/libtrader/client/network/mod.rs b/src/libtrader/client/network/mod.rs index 92b0a0e..6be00c1 100644 --- a/src/libtrader/client/network/mod.rs +++ b/src/libtrader/client/network/mod.rs @@ -1,3 +1,3 @@ pub mod cmd; -pub mod tls; pub mod handle_data; +pub mod tls; diff --git a/src/libtrader/common/message.rs b/src/libtrader/common/message.rs index 3316c27..326d651 100644 --- a/src/libtrader/common/message.rs +++ b/src/libtrader/common/message.rs @@ -7,10 +7,10 @@ use tokio::io::AsyncReadExt; use tokio::io::AsyncWriteExt; use tokio::net::TcpStream; -#[cfg(all(feature = "client", not(feature = "server")))] -use tokio_rustls::client::TlsStream; #[cfg(all(feature = "server", not(feature = "client")))] use tokio_rustls::server::TlsStream; +#[cfg(all(feature = "client", not(feature = "server")))] +use tokio_rustls::client::TlsStream; #[derive(Serialize, Deserialize, PartialEq, Debug, Default)] pub struct Message { diff --git a/src/libtrader/server/initializer.rs b/src/libtrader/server/initializer.rs index 47dc965..81575d2 100644 --- a/src/libtrader/server/initializer.rs +++ b/src/libtrader/server/initializer.rs @@ -42,7 +42,7 @@ tokio::task_local! { /// libtrader_init_log()?; /// ``` /// -fn libtrader_init_log() -> std::io::Result<()> { +fn initialize_log() -> std::io::Result<()> { use fern::colors::{Color, ColoredLevelConfig}; let mut dispatch = fern::Dispatch::new().format(|out, message, record| { @@ -124,9 +124,9 @@ fn libtrader_init_log() -> std::io::Result<()> { /// .await; /// }); /// ``` -pub async fn libtrader_init_server() -> std::io::Result<()> { +pub async fn initialize() -> std::io::Result<()> { // Initialize log. - libtrader_init_log()?; + initialize_log()?; // Initialize SQL connection let sql_shared_conn = Arc::new( @@ -160,6 +160,12 @@ pub async fn libtrader_init_server() -> std::io::Result<()> { let listener = TcpListener::bind(&addr).await?; + // create temporary file to mark server is running + let marker_path = std::path::Path::new("/tmp/paper/running"); + let marker_prefix = marker_path.parent().unwrap(); + std::fs::create_dir_all(marker_prefix).unwrap(); + std::fs::write(marker_path, "").unwrap(); + loop { let (socket, peer_addr) = listener.accept().await?; // socket, peer_addr let acceptor = acceptor.clone(); diff --git a/src/libtrader/server/mod.rs b/src/libtrader/server/mod.rs index 3b97032..de0702f 100644 --- a/src/libtrader/server/mod.rs +++ b/src/libtrader/server/mod.rs @@ -3,3 +3,6 @@ pub mod db; pub mod ds; pub mod initializer; pub mod network; + +pub use crate::server::initializer::initialize; +pub use crate::server::initializer::IP; diff --git a/src/libtrader/server/network/mod.rs b/src/libtrader/server/network/mod.rs index 4749648..2f0418c 100644 --- a/src/libtrader/server/network/mod.rs +++ b/src/libtrader/server/network/mod.rs @@ -1,3 +1,3 @@ -pub mod tls; pub mod handle_data; pub mod jwt; +pub mod tls; diff --git a/todo/v1.libtrader.md b/todo/v1.libtrader.md index 22ae130..e035bee 100644 --- a/todo/v1.libtrader.md +++ b/todo/v1.libtrader.md @@ -1,9 +1,5 @@ ## To do -- add testing suite - * [ ] configure ci to run those tests - * [ ] add tests for all server functions - * [ ] add tests for all client functions - create correct modules * [ ] fix weird file naming * [ ] fix namespace naming @@ -19,6 +15,10 @@ ## In progress +- add testing suite + * [ ] configure ci to run those tests + * [ ] add tests for all server functions + * [ ] add tests for all client functions ## Done