Skip to content

Commit

Permalink
add test filter_timeout with rtype TXT in cache_by_recor_type
Browse files Browse the repository at this point in the history
  • Loading branch information
konegoro committed Jan 5, 2024
1 parent ba168c5 commit bd7e3ae
Showing 1 changed file with 42 additions and 0 deletions.
42 changes: 42 additions & 0 deletions src/dns_cache/cache_by_record_type.rs
Original file line number Diff line number Diff line change
Expand Up @@ -696,6 +696,48 @@ mod cache_data_test{

}

#[test]
fn filter_timeout_cache_data_rtype_txt() {
use std::{thread, time};
let mut cache_record_type = CacheByRecordType::new();
let txt_rdata = Rdata::TXT(TxtRdata::new(vec![String::from("test")]));

let mut resource_record_valid = ResourceRecord::new(txt_rdata.clone());
resource_record_valid.set_ttl(1000);
let rr_cache_valid = RRStoredData::new(resource_record_valid.clone());

let mut resource_record_invalid = ResourceRecord::new(txt_rdata);
resource_record_invalid.set_ttl(4);
let rr_cache_invalid = RRStoredData::new(resource_record_invalid);

let mut domain_name = DomainName::new();
domain_name.set_name(String::from("uchile.cl"));

cache_record_type.add_to_cache_data(Rtype::TXT, domain_name.clone(), rr_cache_valid);
cache_record_type.add_to_cache_data(Rtype::TXT, domain_name.clone(), rr_cache_invalid);

//check if the domain with A type has 2 RRStoredData
if let Some(rr_cache_vec) = cache_record_type.get_from_cache_data(domain_name.clone(), Rtype::TXT){
assert_eq!(rr_cache_vec.len(), 2);
}

println!("Before timeout: {:?}", Utc::now());
thread::sleep(time::Duration::from_secs(5));
println!("After timeout: {:?}", Utc::now());
cache_record_type.filter_timeout_cache_data();

//check if the len is 1 instead of 2 (one RRStoredData was eliminated)
if let Some(rr_cache_vec) = cache_record_type.get_from_cache_data(domain_name.clone(), Rtype::TXT){
assert_eq!(rr_cache_vec.len(), 1);
//chek if the resource record who survives is the right one
if let Some(rrstore_data_valid) = rr_cache_vec.get(0){
let resource_record_after_filter = rrstore_data_valid.get_resource_record();
assert_eq!(resource_record_after_filter, resource_record_valid);
}
}

}

#[test]
fn filter_timout_cache_data_2_differents_rtypes(){
use std::{thread, time};
Expand Down

0 comments on commit bd7e3ae

Please sign in to comment.