mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-01-04 12:22:55 +00:00
fix: add simple test for rds kv backend (#6167)
* chore: add simple test for rds kv backend * chore: add test for etcd and mem * chore: remove etcd simple range test * chore: add more test case
This commit is contained in:
@@ -308,10 +308,11 @@ mod tests {
|
||||
use super::*;
|
||||
use crate::error::Error;
|
||||
use crate::kv_backend::test::{
|
||||
prepare_kv, test_kv_batch_delete, test_kv_batch_get, test_kv_compare_and_put,
|
||||
test_kv_delete_range, test_kv_put, test_kv_range, test_kv_range_2, test_txn_compare_equal,
|
||||
test_txn_compare_greater, test_txn_compare_less, test_txn_compare_not_equal,
|
||||
test_txn_one_compare_op, text_txn_multi_compare_op,
|
||||
prepare_kv, prepare_kv_with_prefix, test_kv_batch_delete, test_kv_batch_get,
|
||||
test_kv_compare_and_put, test_kv_delete_range, test_kv_put, test_kv_range, test_kv_range_2,
|
||||
test_simple_kv_range, test_txn_compare_equal, test_txn_compare_greater,
|
||||
test_txn_compare_less, test_txn_compare_not_equal, test_txn_one_compare_op,
|
||||
text_txn_multi_compare_op, unprepare_kv,
|
||||
};
|
||||
|
||||
async fn mock_mem_store_with_data() -> MemoryKvBackend<Error> {
|
||||
@@ -380,4 +381,12 @@ mod tests {
|
||||
test_txn_compare_less(&kv_backend).await;
|
||||
test_txn_compare_not_equal(&kv_backend).await;
|
||||
}
|
||||
#[tokio::test]
|
||||
async fn test_mem_all_range() {
|
||||
let kv_backend = MemoryKvBackend::<Error>::new();
|
||||
let prefix = b"";
|
||||
prepare_kv_with_prefix(&kv_backend, prefix.to_vec()).await;
|
||||
test_simple_kv_range(&kv_backend).await;
|
||||
unprepare_kv(&kv_backend, prefix).await;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -160,7 +160,7 @@ impl<'a> MySqlTemplateFactory<'a> {
|
||||
range_template: RangeTemplate {
|
||||
point: format!("SELECT k, v FROM `{table_name}` WHERE k = ?"),
|
||||
range: format!("SELECT k, v FROM `{table_name}` WHERE k >= ? AND k < ? ORDER BY k"),
|
||||
full: format!("SELECT k, v FROM `{table_name}` ? ORDER BY k"),
|
||||
full: format!("SELECT k, v FROM `{table_name}` ORDER BY k"),
|
||||
left_bounded: format!("SELECT k, v FROM `{table_name}` WHERE k >= ? ORDER BY k"),
|
||||
prefix: format!("SELECT k, v FROM `{table_name}` WHERE k LIKE ? ORDER BY k"),
|
||||
},
|
||||
@@ -538,9 +538,9 @@ mod tests {
|
||||
prepare_kv_with_prefix, test_kv_batch_delete_with_prefix, test_kv_batch_get_with_prefix,
|
||||
test_kv_compare_and_put_with_prefix, test_kv_delete_range_with_prefix,
|
||||
test_kv_put_with_prefix, test_kv_range_2_with_prefix, test_kv_range_with_prefix,
|
||||
test_txn_compare_equal, test_txn_compare_greater, test_txn_compare_less,
|
||||
test_txn_compare_not_equal, test_txn_one_compare_op, text_txn_multi_compare_op,
|
||||
unprepare_kv,
|
||||
test_simple_kv_range, test_txn_compare_equal, test_txn_compare_greater,
|
||||
test_txn_compare_less, test_txn_compare_not_equal, test_txn_one_compare_op,
|
||||
text_txn_multi_compare_op, unprepare_kv,
|
||||
};
|
||||
|
||||
async fn build_mysql_kv_backend(table_name: &str) -> Option<MySqlStore> {
|
||||
@@ -592,6 +592,15 @@ mod tests {
|
||||
unprepare_kv(&kv_backend, prefix).await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_mysql_all_range() {
|
||||
let kv_backend = build_mysql_kv_backend("simple_range_test").await.unwrap();
|
||||
let prefix = b"";
|
||||
prepare_kv_with_prefix(&kv_backend, prefix.to_vec()).await;
|
||||
test_simple_kv_range(&kv_backend).await;
|
||||
unprepare_kv(&kv_backend, prefix).await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_mysql_batch_get() {
|
||||
let kv_backend = build_mysql_kv_backend("batch_get_test").await.unwrap();
|
||||
|
||||
@@ -164,7 +164,7 @@ impl<'a> PgSqlTemplateFactory<'a> {
|
||||
range: format!(
|
||||
"SELECT k, v FROM \"{table_name}\" WHERE k >= $1 AND k < $2 ORDER BY k"
|
||||
),
|
||||
full: format!("SELECT k, v FROM \"{table_name}\" $1 ORDER BY k"),
|
||||
full: format!("SELECT k, v FROM \"{table_name}\" ORDER BY k"),
|
||||
left_bounded: format!("SELECT k, v FROM \"{table_name}\" WHERE k >= $1 ORDER BY k"),
|
||||
prefix: format!("SELECT k, v FROM \"{table_name}\" WHERE k LIKE $1 ORDER BY k"),
|
||||
},
|
||||
@@ -511,9 +511,9 @@ mod tests {
|
||||
prepare_kv_with_prefix, test_kv_batch_delete_with_prefix, test_kv_batch_get_with_prefix,
|
||||
test_kv_compare_and_put_with_prefix, test_kv_delete_range_with_prefix,
|
||||
test_kv_put_with_prefix, test_kv_range_2_with_prefix, test_kv_range_with_prefix,
|
||||
test_txn_compare_equal, test_txn_compare_greater, test_txn_compare_less,
|
||||
test_txn_compare_not_equal, test_txn_one_compare_op, text_txn_multi_compare_op,
|
||||
unprepare_kv,
|
||||
test_simple_kv_range, test_txn_compare_equal, test_txn_compare_greater,
|
||||
test_txn_compare_less, test_txn_compare_not_equal, test_txn_one_compare_op,
|
||||
text_txn_multi_compare_op, unprepare_kv,
|
||||
};
|
||||
|
||||
async fn build_pg_kv_backend(table_name: &str) -> Option<PgStore> {
|
||||
@@ -573,6 +573,15 @@ mod tests {
|
||||
unprepare_kv(&kv_backend, prefix).await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_pg_all_range() {
|
||||
let kv_backend = build_pg_kv_backend("simple_range_test").await.unwrap();
|
||||
let prefix = b"";
|
||||
prepare_kv_with_prefix(&kv_backend, prefix.to_vec()).await;
|
||||
test_simple_kv_range(&kv_backend).await;
|
||||
unprepare_kv(&kv_backend, prefix).await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_pg_batch_get() {
|
||||
let kv_backend = build_pg_kv_backend("batch_get_test").await.unwrap();
|
||||
|
||||
@@ -108,6 +108,44 @@ pub async fn test_kv_range(kv_backend: &impl KvBackend) {
|
||||
test_kv_range_with_prefix(kv_backend, vec![]).await;
|
||||
}
|
||||
|
||||
pub async fn test_simple_kv_range(kvbackend: &impl KvBackend) {
|
||||
{
|
||||
let full_query = RangeRequest::new().with_range(vec![0], vec![0]);
|
||||
let response = kvbackend.range(full_query).await.unwrap();
|
||||
assert_eq!(response.kvs.len(), 4);
|
||||
}
|
||||
{
|
||||
let point_query = RangeRequest::new().with_range(b"key11".to_vec(), vec![]);
|
||||
let response = kvbackend.range(point_query).await.unwrap();
|
||||
assert_eq!(response.kvs.len(), 1);
|
||||
}
|
||||
{
|
||||
let left_bounded_query = RangeRequest::new().with_range(b"key1".to_vec(), vec![0]);
|
||||
let response = kvbackend.range(left_bounded_query).await.unwrap();
|
||||
assert_eq!(response.kvs.len(), 4);
|
||||
}
|
||||
{
|
||||
let range_query = RangeRequest::new().with_range(b"key1".to_vec(), b"key11".to_vec());
|
||||
let response = kvbackend.range(range_query).await.unwrap();
|
||||
assert_eq!(response.kvs.len(), 1);
|
||||
}
|
||||
{
|
||||
let prefix_query = RangeRequest::new().with_range(b"key1".to_vec(), b"key2".to_vec());
|
||||
let response = kvbackend.range(prefix_query).await.unwrap();
|
||||
assert_eq!(response.kvs.len(), 2);
|
||||
}
|
||||
{
|
||||
let range_query = RangeRequest::new().with_range(b"key10".to_vec(), b"key100".to_vec());
|
||||
let response = kvbackend.range(range_query).await.unwrap();
|
||||
assert_eq!(response.kvs.len(), 0);
|
||||
}
|
||||
{
|
||||
let prefix_query = RangeRequest::new().with_range(b"key10".to_vec(), b"key11".to_vec());
|
||||
let response = kvbackend.range(prefix_query).await.unwrap();
|
||||
assert_eq!(response.kvs.len(), 0);
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn test_kv_range_with_prefix(kv_backend: &impl KvBackend, prefix: Vec<u8>) {
|
||||
let key = [prefix.clone(), b"key1".to_vec()].concat();
|
||||
let key11 = [prefix.clone(), b"key11".to_vec()].concat();
|
||||
|
||||
Reference in New Issue
Block a user