]> git.proxmox.com Git - proxmox-backup.git/blame - src/bin/download-speed.rs
introduce new runtime tokio helpers
[proxmox-backup.git] / src / bin / download-speed.rs
CommitLineData
17243003
DM
1use std::io::Write;
2
b9203d87
WB
3use failure::*;
4
fa5d6977 5use chrono::{DateTime, Utc};
17243003 6
9e490a74 7use proxmox_backup::client::{HttpClient, 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
cc2ce4a9 32 let client = HttpClient::new(host, username, None)?;
17243003 33
fa5d6977 34 let backup_time = "2019-06-28T10:49:48Z".parse::<DateTime<Utc>>()?;
17243003 35
296c50ba 36 let client = BackupReader::start(client, None, "store2", "host", "elsa", backup_time, true)
b9203d87 37 .await?;
17243003
DM
38
39 let start = std::time::SystemTime::now();
40
b9203d87
WB
41 let mut bytes = 0;
42 for _ in 0..100 {
43 let writer = DummyWriter { bytes: 0 };
44 let writer = client.speedtest(writer).await?;
45 println!("Received {} bytes", writer.bytes);
46 bytes += writer.bytes;
47 }
17243003 48
b9203d87
WB
49 let elapsed = start.elapsed().unwrap();
50 let elapsed = (elapsed.as_secs() as f64) +
51 (elapsed.subsec_millis() as f64)/1000.0;
17243003 52
b9203d87 53 println!("Downloaded {} bytes, {} MB/s", bytes, (bytes as f64)/(elapsed*1024.0*1024.0));
17243003 54
b9203d87
WB
55 Ok(())
56}
17243003 57
b9203d87
WB
58#[tokio::main]
59async fn main() {
d973aa82 60 if let Err(err) = proxmox_backup::tools::runtime::main(run()) {
b9203d87
WB
61 eprintln!("ERROR: {}", err);
62 }
63 println!("DONE");
17243003 64}