aboutsummaryrefslogtreecommitdiffstats
path: root/log_db/benches/utils.rs
diff options
context:
space:
mode:
authorJan Tuomi <jan@jantuomi.fi>2024-10-07 12:43:16 +0300
committerJan Tuomi <jan@jantuomi.fi>2024-10-07 12:43:16 +0300
commita4efc83f7f29c6ef8ac9b4c57201c9ecc31266b3 (patch)
treea18c856a5fc15fe509d3e3277e345176608dee21 /log_db/benches/utils.rs
parent30295ba5e1bdbfa69ad98fc5908ee4b1aabbd2e5 (diff)
Add py_bindings lib, move to monorepo structure
Diffstat (limited to 'log_db/benches/utils.rs')
-rw-r--r--log_db/benches/utils.rs46
1 files changed, 46 insertions, 0 deletions
diff --git a/log_db/benches/utils.rs b/log_db/benches/utils.rs
new file mode 100644
index 0000000..63b3d84
--- /dev/null
+++ b/log_db/benches/utils.rs
@@ -0,0 +1,46 @@
+use log_db::*;
+use rand::distributions::Alphanumeric;
+use rand::Rng;
+use std::fmt::Debug;
+use std::io;
+
+// Function to generate a random integer
+pub fn random_int(from: i64, to: i64) -> i64 {
+ let mut rng = rand::thread_rng();
+ rng.gen_range(from..to)
+}
+
+// Function to generate a random string
+pub fn random_string(len: usize) -> String {
+ let mut rng = rand::thread_rng();
+ (0..len).map(|_| rng.sample(Alphanumeric) as char).collect()
+}
+
+// Function to generate random bytes
+pub fn random_bytes(len: usize) -> Vec<u8> {
+ let mut rng = rand::thread_rng();
+ (0..len).map(|_| rng.gen()).collect()
+}
+
+// Function to generate a random record
+pub fn random_record(from_id: i64, to_id: i64) -> Record {
+ Record {
+ values: vec![
+ RecordValue::Int(random_int(from_id, to_id)), // Random int value between 0..1000
+ RecordValue::String(random_string(5)), // Random string of length 5
+ RecordValue::Bytes(random_bytes(10)), // Random bytes of length 10
+ ],
+ }
+}
+
+pub fn prefill_db<T: Eq + Clone + Debug>(
+ db: &mut DB<T>,
+ n_records: usize,
+) -> Result<(), io::Error> {
+ for _ in 0..n_records {
+ let record = random_record(0, n_records as i64);
+ db.upsert(&record)?;
+ }
+
+ Ok(())
+}