fix scheduler for storage changes
This commit is contained in:
parent
730fbcf6d4
commit
c013628017
@ -175,12 +175,14 @@ where
|
||||
fn next(&mut self, state: &mut Self::State) -> Result<CorpusId, Error> {
|
||||
let mut to_remove : Vec<(usize, f64)> = vec![];
|
||||
let mut to_return : usize = 0;
|
||||
let c = state.corpus().count();
|
||||
let corpus_len = state.corpus().count();
|
||||
let mut current_len = 0;
|
||||
let gm = state.metadata_map_mut().get_mut::<GeneticMetadata>().expect("Corpus Scheduler empty");
|
||||
// println!("index: {} curr: {:?} next: {:?} gen: {} corp: {}", gm.current_cursor, gm.current_gen.len(), gm.next_gen.len(), gm.gen,
|
||||
// c);
|
||||
match gm.current_gen.get(gm.current_cursor) {
|
||||
Some(c) => {
|
||||
current_len = gm.current_gen.len();
|
||||
gm.current_cursor+=1;
|
||||
// println!("normal next: {}", (*c).0);
|
||||
return Ok((*c).0.into())
|
||||
@ -195,20 +197,26 @@ where
|
||||
to_remove.extend(d);
|
||||
// move all indices to the left, since all other indices will be deleted
|
||||
gm.current_gen.sort_by(|a,b| a.0.cmp(&(*b).0)); // in order of the corpus index
|
||||
for i in 0..gm.current_gen.len() {
|
||||
gm.current_gen[i] = (i, gm.current_gen[i].1);
|
||||
}
|
||||
// for i in 0..gm.current_gen.len() {
|
||||
// gm.current_gen[i] = (i, gm.current_gen[i].1);
|
||||
// }
|
||||
to_return = gm.current_gen.get(0).unwrap().0;
|
||||
// assert_eq!(to_return, 0);
|
||||
gm.current_cursor=1;
|
||||
gm.gen+=1;
|
||||
current_len = gm.current_gen.len();
|
||||
}
|
||||
};
|
||||
// removing these elements will move all indices left by to_remove.len()
|
||||
to_remove.sort_by(|x,y| x.0.cmp(&(*y).0));
|
||||
to_remove.reverse();
|
||||
// to_remove.sort_by(|x,y| x.0.cmp(&(*y).0));
|
||||
// to_remove.reverse();
|
||||
let cm = state.corpus_mut();
|
||||
assert_eq!(corpus_len-to_remove.len(), current_len);
|
||||
assert_ne!(current_len,0);
|
||||
for i in to_remove {
|
||||
state.corpus_mut().remove(i.0.into()).unwrap();
|
||||
cm.remove(i.0.into()).unwrap();
|
||||
}
|
||||
assert_eq!(cm.get(to_return.into()).is_ok(),true);
|
||||
// println!("switch next: {to_return}");
|
||||
return Ok(to_return.into());
|
||||
}
|
||||
@ -220,7 +228,7 @@ where
|
||||
idx: CorpusId
|
||||
) -> Result<(), Error> {
|
||||
// println!("On Add {idx}");
|
||||
let mut tc = state.corpus_mut().get(idx).unwrap().borrow_mut().clone();
|
||||
let mut tc = state.corpus_mut().get(idx).expect("Newly added testcase not found by index").borrow_mut().clone();
|
||||
let ff = MaxTimeFavFactor::compute(state, &mut tc).unwrap();
|
||||
if let Some(gm) = state.metadata_map_mut().get_mut::<GeneticMetadata>() {
|
||||
gm.next_gen.push((idx.into(),ff));
|
||||
|
Loading…
x
Reference in New Issue
Block a user