5 use chrono
::{DateTime, Utc}
;
7 use proxmox_backup
::api2
::types
::Userid
;
8 use proxmox_backup
::client
::{HttpClient, HttpClientOptions, BackupReader}
;
10 pub struct DummyWriter
{
14 impl Write
for DummyWriter
{
16 fn write(&mut self, data
: &[u8]) -> Result
<usize, std
::io
::Error
> {
17 self.bytes
+= data
.len();
21 fn flush(&mut self) -> Result
<(), std
::io
::Error
> {
27 async
fn run() -> Result
<(), Error
> {
29 let host
= "localhost";
31 let username
= Userid
::root_userid();
33 let options
= HttpClientOptions
::new()
37 let client
= HttpClient
::new(host
, username
, options
)?
;
39 let backup_time
= "2019-06-28T10:49:48Z".parse
::<DateTime
<Utc
>>()?
;
41 let client
= BackupReader
::start(client
, None
, "store2", "host", "elsa", backup_time
, true)
44 let start
= std
::time
::SystemTime
::now();
48 let mut writer
= DummyWriter { bytes: 0 }
;
49 client
.speedtest(&mut writer
).await?
;
50 println
!("Received {} bytes", writer
.bytes
);
51 bytes
+= writer
.bytes
;
54 let elapsed
= start
.elapsed().unwrap();
55 let elapsed
= (elapsed
.as_secs() as f64) +
56 (elapsed
.subsec_millis() as f64)/1000.0;
58 println
!("Downloaded {} bytes, {} MB/s", bytes
, (bytes
as f64)/(elapsed
*1024.0*1024.0));
64 if let Err(err
) = proxmox_backup
::tools
::runtime
::main(run()) {
65 eprintln
!("ERROR: {}", err
);