LCOV - code coverage report
Current view: top level - storage_controller/src - hadron_utils.rs (source / functions) Coverage Total Hit
Test: 4be46b1c0003aa3bbac9ade362c676b419df4c20.info Lines: 85.0 % 20 17
Test Date: 2025-07-22 17:50:06 Functions: 83.3 % 6 5

            Line data    Source code
       1              : use std::collections::BTreeMap;
       2              : 
       3              : use rand::Rng;
       4              : use utils::shard::TenantShardId;
       5              : 
       6              : static CHARSET: &[u8] = b"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()";
       7              : 
       8              : /// Generate a random string of `length` that can be used as a password. The generated string
       9              : /// contains alphanumeric characters and special characters (!@#$%^&*())
      10            2 : pub fn generate_random_password(length: usize) -> String {
      11            2 :     let mut rng = rand::rng();
      12            2 :     (0..length)
      13           20 :         .map(|_| {
      14           20 :             let idx = rng.random_range(0..CHARSET.len());
      15           20 :             CHARSET[idx] as char
      16           20 :         })
      17            2 :         .collect()
      18            2 : }
      19              : 
      20              : pub(crate) struct TenantShardSizeMap {
      21              :     #[expect(dead_code)]
      22              :     pub map: BTreeMap<TenantShardId, u64>,
      23              : }
      24              : 
      25              : impl TenantShardSizeMap {
      26            0 :     pub fn new(map: BTreeMap<TenantShardId, u64>) -> Self {
      27            0 :         Self { map }
      28            0 :     }
      29              : }
      30              : 
      31              : #[cfg(test)]
      32              : mod test {
      33              :     use super::*;
      34              : 
      35              :     #[test]
      36            1 :     fn test_generate_random_password() {
      37            1 :         let pwd1 = generate_random_password(10);
      38            1 :         assert_eq!(pwd1.len(), 10);
      39            1 :         let pwd2 = generate_random_password(10);
      40            1 :         assert_ne!(pwd1, pwd2);
      41           10 :         assert!(pwd1.chars().all(|c| CHARSET.contains(&(c as u8))));
      42           10 :         assert!(pwd2.chars().all(|c| CHARSET.contains(&(c as u8))));
      43            1 :     }
      44              : }
        

Generated by: LCOV version 2.1-beta