revision_disk_test.rs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. use crate::revision_test::script::RevisionScript::*;
  2. use crate::revision_test::script::{InvalidRevisionObject, RevisionTest};
  3. use flowy_revision::REVISION_WRITE_INTERVAL_IN_MILLIS;
  4. #[tokio::test]
  5. async fn revision_write_to_disk_test() {
  6. let test = RevisionTest::new_with_configuration(2).await;
  7. let (base_rev_id, rev_id) = test.next_rev_id_pair();
  8. test.run_script(AddLocalRevision {
  9. content: "123".to_string(),
  10. base_rev_id,
  11. rev_id,
  12. })
  13. .await;
  14. test.run_scripts(vec![
  15. AssertNumberOfRevisionsInDisk { num: 0 },
  16. WaitWhenWriteToDisk,
  17. AssertNumberOfRevisionsInDisk { num: 1 },
  18. ])
  19. .await;
  20. }
  21. #[tokio::test]
  22. async fn revision_write_to_disk_with_merge_test() {
  23. let test = RevisionTest::new_with_configuration(100).await;
  24. for i in 0..1000 {
  25. let (base_rev_id, rev_id) = test.next_rev_id_pair();
  26. test.run_script(AddLocalRevision {
  27. content: format!("{}", i),
  28. base_rev_id,
  29. rev_id,
  30. })
  31. .await;
  32. }
  33. test.run_scripts(vec![
  34. AssertNumberOfRevisionsInDisk { num: 0 },
  35. AssertNumberOfSyncRevisions { num: 10 },
  36. WaitWhenWriteToDisk,
  37. AssertNumberOfRevisionsInDisk { num: 10 },
  38. ])
  39. .await;
  40. }
  41. #[tokio::test]
  42. async fn revision_read_from_disk_test() {
  43. let test = RevisionTest::new_with_configuration(2).await;
  44. let (base_rev_id, rev_id) = test.next_rev_id_pair();
  45. test.run_scripts(vec![
  46. AddLocalRevision {
  47. content: "123".to_string(),
  48. base_rev_id,
  49. rev_id,
  50. },
  51. AssertNumberOfRevisionsInDisk { num: 0 },
  52. WaitWhenWriteToDisk,
  53. AssertNumberOfRevisionsInDisk { num: 1 },
  54. ])
  55. .await;
  56. let test = RevisionTest::new_with_other(test).await;
  57. let (base_rev_id, rev_id) = test.next_rev_id_pair();
  58. test.run_scripts(vec![
  59. AssertNextSyncRevisionId { rev_id: Some(1) },
  60. AddLocalRevision {
  61. content: "456".to_string(),
  62. base_rev_id,
  63. rev_id: rev_id.clone(),
  64. },
  65. AckRevision { rev_id: 1 },
  66. AssertNextSyncRevisionId { rev_id: Some(rev_id) },
  67. ])
  68. .await;
  69. }
  70. #[tokio::test]
  71. #[should_panic]
  72. async fn revision_read_from_disk_with_invalid_record_test() {
  73. let test = RevisionTest::new_with_configuration(2).await;
  74. let (base_rev_id, rev_id) = test.next_rev_id_pair();
  75. test.run_script(AddLocalRevision {
  76. content: "123".to_string(),
  77. base_rev_id,
  78. rev_id,
  79. })
  80. .await;
  81. let (base_rev_id, rev_id) = test.next_rev_id_pair();
  82. test.run_script(AddInvalidLocalRevision {
  83. bytes: InvalidRevisionObject::new(),
  84. base_rev_id,
  85. rev_id,
  86. })
  87. .await;
  88. let test = RevisionTest::new_with_other(test).await;
  89. test.run_scripts(vec![AssertNextSyncRevisionContent {
  90. expected: "123".to_string(),
  91. }])
  92. .await;
  93. }