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:
localhost
2025-05-26 14:32:36 +08:00
committed by GitHub
parent b85429c0f1
commit 77e2fee755
4 changed files with 77 additions and 12 deletions

View File

@@ -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;
}
}

View File

@@ -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();

View File

@@ -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();

View File

@@ -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();