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
,
22 get_encryption_key_password
,
31 schema
: REPO_URL_SCHEMA
,
35 schema
: KEYFILE_SCHEMA
,
41 /// Run benchmark tests
42 pub async
fn benchmark(
45 _rpcenv
: &mut dyn RpcEnvironment
,
46 ) -> Result
<(), Error
> {
48 let repo
= extract_repository_from_value(¶m
)?
;
50 let keyfile
= param
["keyfile"].as_str().map(PathBuf
::from
);
52 let crypt_config
= match keyfile
{
55 let (key
, _
) = load_and_decrypt_key(&path
, &get_encryption_key_password
)?
;
56 let crypt_config
= CryptConfig
::new(key
)?
;
57 Some(Arc
::new(crypt_config
))
61 let backup_time
= Utc
.timestamp(Utc
::now().timestamp(), 0);
63 let client
= connect(repo
.host(), repo
.user())?
;
64 record_repository(&repo
);
66 let client
= BackupWriter
::start(
76 println
!("Start upload speed test");
77 let speed
= client
.upload_speedtest().await?
;
79 println
!("Upload speed: {} MiB/s", speed
);