1 use std
::path
::PathBuf
;
6 use chrono
::{TimeZone, Utc}
;
8 use proxmox
::api
::{ApiMethod, RpcEnvironment}
;
11 use proxmox_backup
::backup
::{
17 use proxmox_backup
::client
::*;
20 KEYFILE_SCHEMA
, REPO_URL_SCHEMA
,
21 extract_repository_from_value
,
30 schema
: REPO_URL_SCHEMA
,
34 description
: "Verbose output.",
39 schema
: KEYFILE_SCHEMA
,
45 /// Run benchmark tests
46 pub async
fn benchmark(
49 _rpcenv
: &mut dyn RpcEnvironment
,
50 ) -> Result
<(), Error
> {
52 let repo
= extract_repository_from_value(¶m
)?
;
54 let keyfile
= param
["keyfile"].as_str().map(PathBuf
::from
);
56 let verbose
= param
["verbose"].as_bool().unwrap_or(false);
58 let crypt_config
= match keyfile
{
61 let (key
, _
) = load_and_decrypt_key(&path
, &crate::key
::get_encryption_key_password
)?
;
62 let crypt_config
= CryptConfig
::new(key
)?
;
63 Some(Arc
::new(crypt_config
))
67 let backup_time
= Utc
.timestamp(Utc
::now().timestamp(), 0);
69 let client
= connect(repo
.host(), repo
.user())?
;
70 record_repository(&repo
);
72 println
!("Connecting to backup server");
73 let client
= BackupWriter
::start(
83 println
!("Start upload speed test");
84 let speed
= client
.upload_speedtest(verbose
).await?
;
86 println
!("Upload speed: {} MiB/s", speed
);