client-rust/tests/mock_tikv_tests.rs

85 lines
2.5 KiB
Rust

#[cfg(test)]
mod test {
use grpcio::redirect_log;
use log::debug;
use mock_tikv::{start_mock_pd_server, start_mock_tikv_server, MOCK_PD_PORT};
use simple_logger::SimpleLogger;
use tikv_client::{KvPair, RawClient};
#[tokio::test]
#[ignore]
async fn test_raw_put_get() {
SimpleLogger::new().init().unwrap();
redirect_log();
let mut tikv_server = start_mock_tikv_server();
let _pd_server = start_mock_pd_server();
let client = RawClient::new(vec![format!("localhost:{MOCK_PD_PORT}")], None)
.await
.unwrap();
// empty; get non-existent key
let res = client.get("k1".to_owned()).await;
assert_eq!(res.unwrap(), None);
// empty; put then batch_get
client.put("k1".to_owned(), "v1".to_owned()).await.unwrap();
client.put("k2".to_owned(), "v2".to_owned()).await.unwrap();
let res = client
.batch_get(vec!["k1".to_owned(), "k2".to_owned(), "k3".to_owned()])
.await
.unwrap();
assert_eq!(res.len(), 2);
assert_eq!(res[0].1, "v1".as_bytes());
assert_eq!(res[1].1, "v2".as_bytes());
// k1,k2; batch_put then batch_get
client
.batch_put(vec![
KvPair::new("k3".to_owned(), "v3".to_owned()),
KvPair::new("k4".to_owned(), "v4".to_owned()),
])
.await
.unwrap();
let res = client
.batch_get(vec!["k4".to_owned(), "k3".to_owned()])
.await
.unwrap();
assert_eq!(res[0].1, "v3".as_bytes());
assert_eq!(res[1].1, "v4".as_bytes());
// k1,k2,k3,k4; delete then get
let res = client.delete("k3".to_owned()).await;
assert!(res.is_ok());
let res = client.get("k3".to_owned()).await;
assert_eq!(res.unwrap(), None);
// k1,k2,k4; batch_delete then batch_get
let res = client
.batch_delete(vec!["k1".to_owned(), "k2".to_owned(), "k4".to_owned()])
.await;
assert!(res.is_ok());
let res = client
.batch_get(vec![
"k1".to_owned(),
"k2".to_owned(),
"k3".to_owned(),
"k4".to_owned(),
])
.await
.unwrap();
assert_eq!(res.len(), 0);
debug!("Pass all tests");
let _ = tikv_server.shutdown().await;
// FIXME: shutdown PD server
// let _ = pd_server.shutdown().await;
}
}