task_cancel_test.rs 2.7 KB

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