]> git.proxmox.com Git - proxmox-backup.git/blame - tests/worker-task-abort.rs
api: define subscription key schema and use it
[proxmox-backup.git] / tests / worker-task-abort.rs
CommitLineData
f7d4e4b5 1use anyhow::{bail, Error};
f3832b63
DM
2
3#[macro_use]
4extern crate proxmox_backup;
5
6extern crate tokio;
7extern crate nix;
8
51f0ab1e 9use proxmox::try_block;
17ff2cb0 10
f3832b63
DM
11use proxmox_backup::server;
12use proxmox_backup::tools;
13
f3832b63
DM
14fn garbage_collection(worker: &server::WorkerTask) -> Result<(), Error> {
15
16 worker.log("start garbage collection");
17
18 for i in 0..50 {
19 worker.fail_on_abort()?;
20
21 flog!(worker, "progress {}", i);
22
23 std::thread::sleep(std::time::Duration::from_millis(10));
24 }
25
26 worker.log("end garbage collection");
27
28 Ok(()).into()
29}
30
31
132ba100 32#[test] #[ignore]
f3832b63
DM
33fn worker_task_abort() -> Result<(), Error> {
34
35 server::create_task_log_dirs()?;
36
37 use std::sync::{Arc, Mutex};
38
39 let errmsg: Arc<Mutex<Option<String>>> = Arc::new(Mutex::new(None));
40 let errmsg1 = errmsg.clone();
41
f374ba4c 42 let mut rt = tokio::runtime::Runtime::new().unwrap();
96839893 43 rt.block_on(async move {
f3832b63
DM
44
45 let init_result: Result<(), Error> = try_block!({
46 server::create_task_control_socket()?;
47 server::server_state_init()?;
48 Ok(())
49 });
50
51 if let Err(err) = init_result {
52 eprintln!("unable to start daemon - {}", err);
96839893 53 return;
f3832b63
DM
54 }
55
56 let errmsg = errmsg1.clone();
e7cb4dc5
WB
57 let res = server::WorkerTask::new_thread(
58 "garbage_collection",
59 None,
e6dc35ac 60 proxmox_backup::api2::types::Authid::root_auth_id().clone(),
e7cb4dc5
WB
61 true,
62 move |worker| {
63 println!("WORKER {}", worker);
64
65 let result = garbage_collection(&worker);
66 tools::request_shutdown();
67
68 if let Err(err) = result {
69 println!("got expected error: {}", err);
70 } else {
71 let mut data = errmsg.lock().unwrap();
72 *data = Some(String::from("thread finished - seems abort did not work as expected"));
73 }
74
75 Ok(())
76 },
77 );
f3832b63
DM
78
79 match res {
80 Err(err) => {
81 println!("unable to start worker - {}", err);
82 }
83 Ok(wid) => {
84 println!("WORKER: {}", wid);
85 server::abort_worker_async(wid.parse::<server::UPID>().unwrap());
86 }
87 }
96839893 88 });
f3832b63
DM
89
90 let data = errmsg.lock().unwrap();
91 match *data {
92 Some(ref err) => bail!("Error: {}", err),
93 None => {},
94 }
95
96 Ok(())
97}