]> git.proxmox.com Git - proxmox-backup.git/blame - examples/download-speed.rs
examples/upload-speed: adapt to change
[proxmox-backup.git] / examples / download-speed.rs
CommitLineData
17243003
DM
1use std::io::Write;
2
f7d4e4b5 3use anyhow::{Error};
b9203d87 4
fa5d6977 5use chrono::{DateTime, Utc};
17243003 6
d59dbeca 7use proxmox_backup::client::{HttpClient, HttpClientOptions, BackupReader};
17243003
DM
8
9pub struct DummyWriter {
10 bytes: usize,
11}
12
13impl Write for DummyWriter {
14
15 fn write(&mut self, data: &[u8]) -> Result<usize, std::io::Error> {
16 self.bytes += data.len();
17 Ok(data.len())
18 }
19
20 fn flush(&mut self) -> Result<(), std::io::Error> {
21 Ok(())
22 }
23}
24
25
b9203d87 26async fn run() -> Result<(), Error> {
17243003
DM
27
28 let host = "localhost";
29
30 let username = "root@pam";
31
d59dbeca
DM
32 let options = HttpClientOptions::new()
33 .interactive(true)
34 .ticket_cache(true);
35
36 let client = HttpClient::new(host, username, options)?;
17243003 37
fa5d6977 38 let backup_time = "2019-06-28T10:49:48Z".parse::<DateTime<Utc>>()?;
17243003 39
296c50ba 40 let client = BackupReader::start(client, None, "store2", "host", "elsa", backup_time, true)
b9203d87 41 .await?;
17243003
DM
42
43 let start = std::time::SystemTime::now();
44
b9203d87
WB
45 let mut bytes = 0;
46 for _ in 0..100 {
3d571d55
WB
47 let mut writer = DummyWriter { bytes: 0 };
48 client.speedtest(&mut writer).await?;
b9203d87
WB
49 println!("Received {} bytes", writer.bytes);
50 bytes += writer.bytes;
51 }
17243003 52
b9203d87
WB
53 let elapsed = start.elapsed().unwrap();
54 let elapsed = (elapsed.as_secs() as f64) +
55 (elapsed.subsec_millis() as f64)/1000.0;
17243003 56
b9203d87 57 println!("Downloaded {} bytes, {} MB/s", bytes, (bytes as f64)/(elapsed*1024.0*1024.0));
17243003 58
b9203d87
WB
59 Ok(())
60}
17243003 61
29c55e5f 62fn main() {
d973aa82 63 if let Err(err) = proxmox_backup::tools::runtime::main(run()) {
b9203d87
WB
64 eprintln!("ERROR: {}", err);
65 }
66 println!("DONE");
17243003 67}