From af2c79d1963c49402d5b47e916ffb6b0210c79d1 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Wed, 25 Nov 2020 08:11:57 +0200 Subject: feat: add programs to benchmark server chunk storage --- src/benchmark.rs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/benchmark.rs (limited to 'src/benchmark.rs') diff --git a/src/benchmark.rs b/src/benchmark.rs new file mode 100644 index 0000000..b313868 --- /dev/null +++ b/src/benchmark.rs @@ -0,0 +1,32 @@ +use crate::chunk::DataChunk; +use crate::chunkid::ChunkId; +use crate::chunkmeta::ChunkMeta; + +// Generate a desired number of empty data chunks with id and metadata. +pub struct ChunkGenerator { + goal: u32, + next: u32, +} + +impl ChunkGenerator { + pub fn new(goal: u32) -> Self { + Self { goal, next: 0 } + } +} + +impl Iterator for ChunkGenerator { + type Item = (ChunkId, String, ChunkMeta, DataChunk); + + fn next(&mut self) -> Option { + if self.next >= self.goal { + None + } else { + let id = ChunkId::new(); + let checksum = id.sha256(); + let meta = ChunkMeta::new(&checksum); + let chunk = DataChunk::new(vec![]); + self.next += 1; + Some((id, checksum, meta, chunk)) + } + } +} -- cgit v1.2.1