kv_test.rs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. use crate::util::helper::spawn_server;
  2. use backend::services::kv::KeyValue;
  3. use std::str;
  4. #[actix_rt::test]
  5. async fn kv_set_test() {
  6. let server = spawn_server().await;
  7. let kv = server.app_ctx.persistence.document_kv_store();
  8. let s1 = "123".to_string();
  9. let key = "1";
  10. let _ = kv.set(key, s1.clone().into()).await.unwrap();
  11. let bytes = kv.get(key).await.unwrap().unwrap();
  12. let s2 = str::from_utf8(&bytes).unwrap();
  13. assert_eq!(s1, s2);
  14. }
  15. #[actix_rt::test]
  16. async fn kv_delete_test() {
  17. let server = spawn_server().await;
  18. let kv = server.app_ctx.persistence.document_kv_store();
  19. let s1 = "123".to_string();
  20. let key = "1";
  21. let _ = kv.set(key, s1.clone().into()).await.unwrap();
  22. let _ = kv.remove(key).await.unwrap();
  23. assert_eq!(kv.get(key).await.unwrap(), None);
  24. }
  25. #[actix_rt::test]
  26. async fn kv_batch_set_test() {
  27. let server = spawn_server().await;
  28. let kv = server.app_ctx.persistence.document_kv_store();
  29. let kvs = vec![
  30. KeyValue {
  31. key: "1".to_string(),
  32. value: "a".to_string().into(),
  33. },
  34. KeyValue {
  35. key: "2".to_string(),
  36. value: "b".to_string().into(),
  37. },
  38. ];
  39. kv.batch_set(kvs.clone()).await.unwrap();
  40. let kvs_from_db = kv
  41. .batch_get(kvs.clone().into_iter().map(|value| value.key).collect::<Vec<String>>())
  42. .await
  43. .unwrap();
  44. assert_eq!(kvs, kvs_from_db);
  45. }
  46. #[actix_rt::test]
  47. async fn kv_batch_get_start_with_test() {
  48. let server = spawn_server().await;
  49. let kv = server.app_ctx.persistence.document_kv_store();
  50. let kvs = vec![
  51. KeyValue {
  52. key: "abc:1".to_string(),
  53. value: "a".to_string().into(),
  54. },
  55. KeyValue {
  56. key: "abc:2".to_string(),
  57. value: "b".to_string().into(),
  58. },
  59. ];
  60. kv.batch_set(kvs.clone()).await.unwrap();
  61. kv.transaction(|mut transaction| {
  62. Box::pin(async move {
  63. let kvs_from_db = transaction.batch_get_start_with("abc").await.unwrap();
  64. assert_eq!(kvs, kvs_from_db);
  65. Ok(())
  66. })
  67. })
  68. .await
  69. .unwrap();
  70. }