]>
git.proxmox.com Git - proxmox-backup.git/blob - tests/worker-task-abort.rs
1 use anyhow
::{bail, Error}
;
4 extern crate proxmox_backup
;
9 use proxmox
::try_block
;
11 use proxmox_backup
::server
;
12 use proxmox_backup
::tools
;
14 fn garbage_collection(worker
: &server
::WorkerTask
) -> Result
<(), Error
> {
16 worker
.log("start garbage collection");
19 worker
.fail_on_abort()?
;
21 flog
!(worker
, "progress {}", i
);
23 std
::thread
::sleep(std
::time
::Duration
::from_millis(10));
26 worker
.log("end garbage collection");
33 fn worker_task_abort() -> Result
<(), Error
> {
35 server
::create_task_log_dirs()?
;
37 use std
::sync
::{Arc, Mutex}
;
39 let errmsg
: Arc
<Mutex
<Option
<String
>>> = Arc
::new(Mutex
::new(None
));
40 let errmsg1
= errmsg
.clone();
42 let rt
= tokio
::runtime
::Runtime
::new().unwrap();
43 rt
.block_on(async
move {
45 let mut commando_sock
= server
::CommandoSocket
::new(server
::our_ctrl_sock());
47 let init_result
: Result
<(), Error
> = try_block
!({
48 server
::register_task_control_commands(&mut commando_sock
)?
;
49 server
::server_state_init()?
;
53 if let Err(err
) = init_result
{
54 eprintln
!("unable to start daemon - {}", err
);
58 let errmsg
= errmsg1
.clone();
59 let res
= server
::WorkerTask
::new_thread(
62 proxmox_backup
::api2
::types
::Authid
::root_auth_id().clone(),
65 println
!("WORKER {}", worker
);
67 let result
= garbage_collection(&worker
);
68 tools
::request_shutdown();
70 if let Err(err
) = result
{
71 println
!("got expected error: {}", err
);
73 let mut data
= errmsg
.lock().unwrap();
74 *data
= Some(String
::from("thread finished - seems abort did not work as expected"));
83 println
!("unable to start worker - {}", err
);
86 println
!("WORKER: {}", wid
);
87 server
::abort_worker_async(wid
.parse
::<server
::UPID
>().unwrap());
92 let data
= errmsg
.lock().unwrap();
94 Some(ref err
) => bail
!("Error: {}", err
),