task_cancel_test.rs 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. use crate::task_test::script::SearchScript::*;
  2. use crate::task_test::script::{make_text_background_task, make_timeout_task, SearchTest};
  3. use flowy_task::{QualityOfService, Task, TaskContent, TaskState};
  4. #[tokio::test]
  5. async fn task_cancel_background_task_test() {
  6. let test = SearchTest::new().await;
  7. let (task_1, ret_1) = make_text_background_task(test.next_task_id().await, "Hello world");
  8. let (task_2, ret_2) = make_text_background_task(test.next_task_id().await, "");
  9. test
  10. .run_scripts(vec![
  11. AddTask { task: task_1 },
  12. AddTask { task: task_2 },
  13. AssertTaskStatus {
  14. task_id: 1,
  15. expected_status: TaskState::Pending,
  16. },
  17. AssertTaskStatus {
  18. task_id: 2,
  19. expected_status: TaskState::Pending,
  20. },
  21. CancelTask { task_id: 2 },
  22. AssertTaskStatus {
  23. task_id: 2,
  24. expected_status: TaskState::Cancel,
  25. },
  26. ])
  27. .await;
  28. let result = ret_1.await.unwrap();
  29. assert_eq!(result.state, TaskState::Done);
  30. let result = ret_2.await.unwrap();
  31. assert_eq!(result.state, TaskState::Cancel);
  32. }
  33. #[tokio::test]
  34. async fn task_with_empty_handler_id_test() {
  35. let test = SearchTest::new().await;
  36. let mut task = Task::new(
  37. "",
  38. test.next_task_id().await,
  39. TaskContent::Text("".to_owned()),
  40. QualityOfService::Background,
  41. );
  42. let ret = task.recv.take().unwrap();
  43. test.run_scripts(vec![AddTask { task }]).await;
  44. let result = ret.await.unwrap();
  45. assert_eq!(result.state, TaskState::Cancel);
  46. }
  47. #[tokio::test]
  48. async fn task_can_not_find_handler_test() {
  49. let test = SearchTest::new().await;
  50. let (task, ret) = make_text_background_task(test.next_task_id().await, "Hello world");
  51. let handler_id = task.handler_id.clone();
  52. test
  53. .run_scripts(vec![UnregisterHandler { handler_id }, AddTask { task }])
  54. .await;
  55. let result = ret.await.unwrap();
  56. assert_eq!(result.state, TaskState::Cancel);
  57. }
  58. #[tokio::test]
  59. async fn task_can_not_find_handler_test2() {
  60. let test = SearchTest::new().await;
  61. let mut tasks = vec![];
  62. let mut rets = vec![];
  63. let handler_id = "1".to_owned();
  64. for _i in 1..10000 {
  65. let (task, ret) = make_text_background_task(test.next_task_id().await, "");
  66. tasks.push(task);
  67. rets.push(ret);
  68. }
  69. test
  70. .run_scripts(vec![UnregisterHandler { handler_id }, AddTasks { tasks }])
  71. .await;
  72. }
  73. #[tokio::test]
  74. async fn task_run_timeout_test() {
  75. let test = SearchTest::new().await;
  76. let (task, ret) = make_timeout_task(test.next_task_id().await);
  77. test.run_scripts(vec![AddTask { task }]).await;
  78. let result = ret.await.unwrap();
  79. assert_eq!(result.state, TaskState::Timeout);
  80. }