extern crate proxmox_backup;

//use proxmox_backup::backup::chunker::*;
use proxmox_backup::backup::*;

fn main() {

    let mut buffer = Vec::new();

    for i in 0..20*1024*1024 {
        for j in 0..4 {
            let byte = ((i >> (j<<3))&0xff) as u8;
            //println!("BYTE {}", byte);
            buffer.push(byte);
        }
    }
    let mut chunker = Chunker::new(64*1024);

    let count = 5;

    let start = std::time::SystemTime::now();

    let mut chunk_count = 0;
    
    for _i in 0..count {
        let mut pos = 0;
        let mut _last = 0;
        while pos < buffer.len() {
            let k = chunker.scan(&buffer[pos..]);
            if k == 0 {
                //println!("LAST {}", pos);
                break;
            } else {
                _last = pos;
                pos += k;
                chunk_count += 1;
                //println!("CHUNK {} {}", pos, pos-last);
            }
        }
    }

    let elapsed = start.elapsed().unwrap();
    let elapsed = (elapsed.as_secs() as f64) +
        (elapsed.subsec_millis() as f64)/1000.0;
    
    let mbytecount = ((count*buffer.len()) as f64) / (1024.0*1024.0);
    let avg_chunk_size = mbytecount/(chunk_count as f64);
    let mbytes_per_sec =  mbytecount/elapsed; 
    println!("SPEED = {} MB/s, avg chunk size = {} KB", mbytes_per_sec,  avg_chunk_size*1024.0);
}