revision_disk_test.rs 2.8 KB

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