add initial connection pool (#53)

This commit is contained in:
João Oliveira
2020-06-11 21:43:02 +01:00
committed by GitHub
parent dc8993b56b
commit c0bcee4300
5 changed files with 158 additions and 0 deletions

30
tests/pool.rs Normal file
View File

@@ -0,0 +1,30 @@
use mini_redis::{client, pool, server};
use std::net::SocketAddr;
use tokio::net::TcpListener;
use tokio::task::JoinHandle;
/// A basic "hello world" style test. A server instance is started in a
/// background task. A client instance is then established and inserted into the pool, set and get
/// commands are then sent to the server. The response is then evaluated
#[tokio::test]
async fn pool_key_value_get_set() {
let (addr, _) = start_server().await;
let client = client::connect(addr).await.unwrap();
let pool = pool::create(client);
let mut client = pool.get_connection();
client.set("hello", "world".into()).await.unwrap();
let value = client.get("hello").await.unwrap().unwrap();
assert_eq!(b"world", &value[..])
}
async fn start_server() -> (SocketAddr, JoinHandle<mini_redis::Result<()>>) {
let listener = TcpListener::bind("127.0.0.1:0").await.unwrap();
let addr = listener.local_addr().unwrap();
let handle = tokio::spawn(async move { server::run(listener, tokio::signal::ctrl_c()).await });
(addr, handle)
}