Rename MetaData to Metadata
This commit is contained in:
parent
c38405ef83
commit
0fa815f2b8
@ -1,7 +1,7 @@
|
|||||||
//! Corpuses contain the testcases, either in memory, on disk, or somewhere else.
|
//! Corpuses contain the testcases, either in memory, on disk, or somewhere else.
|
||||||
|
|
||||||
pub mod testcase;
|
pub mod testcase;
|
||||||
pub use testcase::{SchedulerTestcaseMetaData, Testcase};
|
pub use testcase::{SchedulerTestcaseMetadata, Testcase};
|
||||||
|
|
||||||
pub mod inmemory;
|
pub mod inmemory;
|
||||||
pub use inmemory::InMemoryCorpus;
|
pub use inmemory::InMemoryCorpus;
|
||||||
|
@ -289,7 +289,7 @@ where
|
|||||||
|
|
||||||
/// The Metadata for each testcase used in power schedules.
|
/// The Metadata for each testcase used in power schedules.
|
||||||
#[derive(Serialize, Deserialize, Clone, Debug)]
|
#[derive(Serialize, Deserialize, Clone, Debug)]
|
||||||
pub struct SchedulerTestcaseMetaData {
|
pub struct SchedulerTestcaseMetadata {
|
||||||
/// Number of bits set in bitmap, updated in calibrate_case
|
/// Number of bits set in bitmap, updated in calibrate_case
|
||||||
bitmap_size: u64,
|
bitmap_size: u64,
|
||||||
/// Number of queue cycles behind
|
/// Number of queue cycles behind
|
||||||
@ -302,8 +302,8 @@ pub struct SchedulerTestcaseMetaData {
|
|||||||
cycle_and_time: (Duration, usize),
|
cycle_and_time: (Duration, usize),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl SchedulerTestcaseMetaData {
|
impl SchedulerTestcaseMetadata {
|
||||||
/// Create new [`struct@SchedulerTestcaseMetaData`]
|
/// Create new [`struct@SchedulerTestcaseMetadata`]
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn new(depth: u64) -> Self {
|
pub fn new(depth: u64) -> Self {
|
||||||
Self {
|
Self {
|
||||||
@ -315,7 +315,7 @@ impl SchedulerTestcaseMetaData {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Create new [`struct@SchedulerTestcaseMetaData`] given `n_fuzz_entry`
|
/// Create new [`struct@SchedulerTestcaseMetadata`] given `n_fuzz_entry`
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn with_n_fuzz_entry(depth: u64, n_fuzz_entry: usize) -> Self {
|
pub fn with_n_fuzz_entry(depth: u64, n_fuzz_entry: usize) -> Self {
|
||||||
Self {
|
Self {
|
||||||
@ -393,7 +393,7 @@ impl SchedulerTestcaseMetaData {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
crate::impl_serdeany!(SchedulerTestcaseMetaData);
|
crate::impl_serdeany!(SchedulerTestcaseMetadata);
|
||||||
|
|
||||||
#[cfg(feature = "python")]
|
#[cfg(feature = "python")]
|
||||||
#[allow(missing_docs)]
|
#[allow(missing_docs)]
|
||||||
|
@ -6,7 +6,7 @@ use core::marker::PhantomData;
|
|||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
corpus::{Corpus, CorpusId, SchedulerTestcaseMetaData, Testcase},
|
corpus::{Corpus, CorpusId, SchedulerTestcaseMetadata, Testcase},
|
||||||
inputs::UsesInput,
|
inputs::UsesInput,
|
||||||
observers::{MapObserver, ObserversTuple},
|
observers::{MapObserver, ObserversTuple},
|
||||||
schedulers::{powersched::SchedulerMetadata, testcase_score::TestcaseScore, Scheduler},
|
schedulers::{powersched::SchedulerMetadata, testcase_score::TestcaseScore, Scheduler},
|
||||||
@ -275,19 +275,19 @@ where
|
|||||||
.get(parent_idx)?
|
.get(parent_idx)?
|
||||||
.borrow_mut()
|
.borrow_mut()
|
||||||
.metadata_map_mut()
|
.metadata_map_mut()
|
||||||
.get_mut::<SchedulerTestcaseMetaData>()
|
.get_mut::<SchedulerTestcaseMetadata>()
|
||||||
.ok_or_else(|| {
|
.ok_or_else(|| {
|
||||||
Error::key_not_found("SchedulerTestcaseMetaData not found".to_string())
|
Error::key_not_found("SchedulerTestcaseMetadata not found".to_string())
|
||||||
})?
|
})?
|
||||||
.depth(),
|
.depth(),
|
||||||
None => 0,
|
None => 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
// Attach a `SchedulerTestcaseMetaData` to the queue entry.
|
// Attach a `SchedulerTestcaseMetadata` to the queue entry.
|
||||||
depth += 1;
|
depth += 1;
|
||||||
{
|
{
|
||||||
let mut testcase = state.corpus().get(idx)?.borrow_mut();
|
let mut testcase = state.corpus().get(idx)?.borrow_mut();
|
||||||
testcase.add_metadata(SchedulerTestcaseMetaData::with_n_fuzz_entry(
|
testcase.add_metadata(SchedulerTestcaseMetadata::with_n_fuzz_entry(
|
||||||
depth,
|
depth,
|
||||||
self.last_hash,
|
self.last_hash,
|
||||||
));
|
));
|
||||||
@ -351,9 +351,9 @@ where
|
|||||||
.get(id)?
|
.get(id)?
|
||||||
.borrow()
|
.borrow()
|
||||||
.metadata_map()
|
.metadata_map()
|
||||||
.get::<SchedulerTestcaseMetaData>()
|
.get::<SchedulerTestcaseMetadata>()
|
||||||
.ok_or_else(|| {
|
.ok_or_else(|| {
|
||||||
Error::key_not_found("SchedulerTestcaseMetaData not found".to_string())
|
Error::key_not_found("SchedulerTestcaseMetadata not found".to_string())
|
||||||
})?
|
})?
|
||||||
.n_fuzz_entry();
|
.n_fuzz_entry();
|
||||||
if entry == hash {
|
if entry == hash {
|
||||||
|
@ -9,7 +9,7 @@ use core::{marker::PhantomData, time::Duration};
|
|||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
corpus::{Corpus, CorpusId, SchedulerTestcaseMetaData, Testcase},
|
corpus::{Corpus, CorpusId, SchedulerTestcaseMetadata, Testcase},
|
||||||
inputs::UsesInput,
|
inputs::UsesInput,
|
||||||
observers::{MapObserver, ObserversTuple},
|
observers::{MapObserver, ObserversTuple},
|
||||||
schedulers::{RemovableScheduler, Scheduler},
|
schedulers::{RemovableScheduler, Scheduler},
|
||||||
@ -192,9 +192,9 @@ where
|
|||||||
) -> Result<(), Error> {
|
) -> Result<(), Error> {
|
||||||
let prev_meta = prev
|
let prev_meta = prev
|
||||||
.metadata_map()
|
.metadata_map()
|
||||||
.get::<SchedulerTestcaseMetaData>()
|
.get::<SchedulerTestcaseMetadata>()
|
||||||
.ok_or_else(|| {
|
.ok_or_else(|| {
|
||||||
Error::key_not_found("SchedulerTestcaseMetaData not found".to_string())
|
Error::key_not_found("SchedulerTestcaseMetadata not found".to_string())
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
// Next depth is + 1
|
// Next depth is + 1
|
||||||
@ -221,7 +221,7 @@ where
|
|||||||
.corpus()
|
.corpus()
|
||||||
.get(idx)?
|
.get(idx)?
|
||||||
.borrow_mut()
|
.borrow_mut()
|
||||||
.add_metadata(SchedulerTestcaseMetaData::new(prev_depth));
|
.add_metadata(SchedulerTestcaseMetadata::new(prev_depth));
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -240,9 +240,9 @@ where
|
|||||||
|
|
||||||
let prev_meta = prev
|
let prev_meta = prev
|
||||||
.metadata_map()
|
.metadata_map()
|
||||||
.get::<SchedulerTestcaseMetaData>()
|
.get::<SchedulerTestcaseMetadata>()
|
||||||
.ok_or_else(|| {
|
.ok_or_else(|| {
|
||||||
Error::key_not_found("SchedulerTestcaseMetaData not found".to_string())
|
Error::key_not_found("SchedulerTestcaseMetadata not found".to_string())
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
// Use these to adjust `SchedulerMetadata`
|
// Use these to adjust `SchedulerMetadata`
|
||||||
@ -280,9 +280,9 @@ where
|
|||||||
.get(parent_idx)?
|
.get(parent_idx)?
|
||||||
.borrow()
|
.borrow()
|
||||||
.metadata_map()
|
.metadata_map()
|
||||||
.get::<SchedulerTestcaseMetaData>()
|
.get::<SchedulerTestcaseMetadata>()
|
||||||
.ok_or_else(|| {
|
.ok_or_else(|| {
|
||||||
Error::key_not_found("SchedulerTestcaseMetaData not found".to_string())
|
Error::key_not_found("SchedulerTestcaseMetadata not found".to_string())
|
||||||
})?
|
})?
|
||||||
.depth(),
|
.depth(),
|
||||||
None => 0,
|
None => 0,
|
||||||
@ -291,10 +291,10 @@ where
|
|||||||
// TODO increase perf_score when finding new things like in AFL
|
// TODO increase perf_score when finding new things like in AFL
|
||||||
// https://github.com/google/AFL/blob/master/afl-fuzz.c#L6547
|
// https://github.com/google/AFL/blob/master/afl-fuzz.c#L6547
|
||||||
|
|
||||||
// Attach a `SchedulerTestcaseMetaData` to the queue entry.
|
// Attach a `SchedulerTestcaseMetadata` to the queue entry.
|
||||||
depth += 1;
|
depth += 1;
|
||||||
let mut testcase = state.corpus().get(idx)?.borrow_mut();
|
let mut testcase = state.corpus().get(idx)?.borrow_mut();
|
||||||
testcase.add_metadata(SchedulerTestcaseMetaData::with_n_fuzz_entry(
|
testcase.add_metadata(SchedulerTestcaseMetadata::with_n_fuzz_entry(
|
||||||
depth,
|
depth,
|
||||||
self.last_hash,
|
self.last_hash,
|
||||||
));
|
));
|
||||||
@ -375,9 +375,9 @@ where
|
|||||||
|
|
||||||
let tcmeta = testcase
|
let tcmeta = testcase
|
||||||
.metadata_map_mut()
|
.metadata_map_mut()
|
||||||
.get_mut::<SchedulerTestcaseMetaData>()
|
.get_mut::<SchedulerTestcaseMetadata>()
|
||||||
.ok_or_else(|| {
|
.ok_or_else(|| {
|
||||||
Error::key_not_found("SchedulerTestcaseMetaData not found".to_string())
|
Error::key_not_found("SchedulerTestcaseMetadata not found".to_string())
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
if tcmeta.handicap() >= 4 {
|
if tcmeta.handicap() >= 4 {
|
||||||
|
@ -4,7 +4,7 @@ use core::marker::PhantomData;
|
|||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
bolts::{HasLen, HasRefCnt},
|
bolts::{HasLen, HasRefCnt},
|
||||||
corpus::{Corpus, SchedulerTestcaseMetaData, Testcase},
|
corpus::{Corpus, SchedulerTestcaseMetadata, Testcase},
|
||||||
feedbacks::MapIndexesMetadata,
|
feedbacks::MapIndexesMetadata,
|
||||||
schedulers::{
|
schedulers::{
|
||||||
minimizer::{IsFavoredMetadata, TopRatedsMetadata},
|
minimizer::{IsFavoredMetadata, TopRatedsMetadata},
|
||||||
@ -81,10 +81,10 @@ where
|
|||||||
let n_fuzz_entry = if cur_index == idx {
|
let n_fuzz_entry = if cur_index == idx {
|
||||||
entry
|
entry
|
||||||
.metadata_map()
|
.metadata_map()
|
||||||
.get::<SchedulerTestcaseMetaData>()
|
.get::<SchedulerTestcaseMetadata>()
|
||||||
.ok_or_else(|| {
|
.ok_or_else(|| {
|
||||||
Error::key_not_found(
|
Error::key_not_found(
|
||||||
"SchedulerTestcaseMetaData not found".to_string(),
|
"SchedulerTestcaseMetadata not found".to_string(),
|
||||||
)
|
)
|
||||||
})?
|
})?
|
||||||
.n_fuzz_entry()
|
.n_fuzz_entry()
|
||||||
@ -93,10 +93,10 @@ where
|
|||||||
.get(idx)?
|
.get(idx)?
|
||||||
.borrow()
|
.borrow()
|
||||||
.metadata_map()
|
.metadata_map()
|
||||||
.get::<SchedulerTestcaseMetaData>()
|
.get::<SchedulerTestcaseMetadata>()
|
||||||
.ok_or_else(|| {
|
.ok_or_else(|| {
|
||||||
Error::key_not_found(
|
Error::key_not_found(
|
||||||
"SchedulerTestcaseMetaData not found".to_string(),
|
"SchedulerTestcaseMetadata not found".to_string(),
|
||||||
)
|
)
|
||||||
})?
|
})?
|
||||||
.n_fuzz_entry()
|
.n_fuzz_entry()
|
||||||
@ -130,9 +130,9 @@ where
|
|||||||
let favored = entry.has_metadata::<IsFavoredMetadata>();
|
let favored = entry.has_metadata::<IsFavoredMetadata>();
|
||||||
let tcmeta = entry
|
let tcmeta = entry
|
||||||
.metadata_map()
|
.metadata_map()
|
||||||
.get::<SchedulerTestcaseMetaData>()
|
.get::<SchedulerTestcaseMetadata>()
|
||||||
.ok_or_else(|| {
|
.ok_or_else(|| {
|
||||||
Error::key_not_found("SchedulerTestcaseMetaData not found".to_string())
|
Error::key_not_found("SchedulerTestcaseMetadata not found".to_string())
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
if q_exec_us * 0.1 > avg_exec_us {
|
if q_exec_us * 0.1 > avg_exec_us {
|
||||||
@ -302,9 +302,9 @@ where
|
|||||||
|
|
||||||
let tcmeta = entry
|
let tcmeta = entry
|
||||||
.metadata_map()
|
.metadata_map()
|
||||||
.get::<SchedulerTestcaseMetaData>()
|
.get::<SchedulerTestcaseMetadata>()
|
||||||
.ok_or_else(|| {
|
.ok_or_else(|| {
|
||||||
Error::key_not_found("SchedulerTestcaseMetaData not found".to_string())
|
Error::key_not_found("SchedulerTestcaseMetadata not found".to_string())
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
// This means that this testcase has never gone through the calibration stage before1,
|
// This means that this testcase has never gone through the calibration stage before1,
|
||||||
|
@ -9,7 +9,7 @@ use serde::{Deserialize, Serialize};
|
|||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
bolts::rands::Rand,
|
bolts::rands::Rand,
|
||||||
corpus::{Corpus, CorpusId, SchedulerTestcaseMetaData},
|
corpus::{Corpus, CorpusId, SchedulerTestcaseMetadata},
|
||||||
inputs::UsesInput,
|
inputs::UsesInput,
|
||||||
observers::{MapObserver, ObserversTuple},
|
observers::{MapObserver, ObserversTuple},
|
||||||
random_corpus_id,
|
random_corpus_id,
|
||||||
@ -250,9 +250,9 @@ where
|
|||||||
|
|
||||||
let prev_meta = prev
|
let prev_meta = prev
|
||||||
.metadata_map()
|
.metadata_map()
|
||||||
.get::<SchedulerTestcaseMetaData>()
|
.get::<SchedulerTestcaseMetadata>()
|
||||||
.ok_or_else(|| {
|
.ok_or_else(|| {
|
||||||
Error::key_not_found("SchedulerTestcaseMetaData not found".to_string())
|
Error::key_not_found("SchedulerTestcaseMetadata not found".to_string())
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
// Use these to adjust `SchedulerMetadata`
|
// Use these to adjust `SchedulerMetadata`
|
||||||
@ -283,9 +283,9 @@ where
|
|||||||
) -> Result<(), Error> {
|
) -> Result<(), Error> {
|
||||||
let prev_meta = prev
|
let prev_meta = prev
|
||||||
.metadata_map()
|
.metadata_map()
|
||||||
.get::<SchedulerTestcaseMetaData>()
|
.get::<SchedulerTestcaseMetadata>()
|
||||||
.ok_or_else(|| {
|
.ok_or_else(|| {
|
||||||
Error::key_not_found("SchedulerTestcaseMetaData not found".to_string())
|
Error::key_not_found("SchedulerTestcaseMetadata not found".to_string())
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
// Next depth is + 1
|
// Next depth is + 1
|
||||||
@ -312,7 +312,7 @@ where
|
|||||||
.corpus()
|
.corpus()
|
||||||
.get(idx)?
|
.get(idx)?
|
||||||
.borrow_mut()
|
.borrow_mut()
|
||||||
.add_metadata(SchedulerTestcaseMetaData::new(prev_depth));
|
.add_metadata(SchedulerTestcaseMetadata::new(prev_depth));
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -333,19 +333,19 @@ where
|
|||||||
.get(parent_idx)?
|
.get(parent_idx)?
|
||||||
.borrow_mut()
|
.borrow_mut()
|
||||||
.metadata_map_mut()
|
.metadata_map_mut()
|
||||||
.get_mut::<SchedulerTestcaseMetaData>()
|
.get_mut::<SchedulerTestcaseMetadata>()
|
||||||
.ok_or_else(|| {
|
.ok_or_else(|| {
|
||||||
Error::key_not_found("SchedulerTestcaseMetaData not found".to_string())
|
Error::key_not_found("SchedulerTestcaseMetadata not found".to_string())
|
||||||
})?
|
})?
|
||||||
.depth(),
|
.depth(),
|
||||||
None => 0,
|
None => 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
// Attach a `SchedulerTestcaseMetaData` to the queue entry.
|
// Attach a `SchedulerTestcaseMetadata` to the queue entry.
|
||||||
depth += 1;
|
depth += 1;
|
||||||
{
|
{
|
||||||
let mut testcase = state.corpus().get(idx)?.borrow_mut();
|
let mut testcase = state.corpus().get(idx)?.borrow_mut();
|
||||||
testcase.add_metadata(SchedulerTestcaseMetaData::with_n_fuzz_entry(
|
testcase.add_metadata(SchedulerTestcaseMetadata::with_n_fuzz_entry(
|
||||||
depth,
|
depth,
|
||||||
self.last_hash,
|
self.last_hash,
|
||||||
));
|
));
|
||||||
@ -455,9 +455,9 @@ where
|
|||||||
|
|
||||||
let tcmeta = testcase
|
let tcmeta = testcase
|
||||||
.metadata_map_mut()
|
.metadata_map_mut()
|
||||||
.get_mut::<SchedulerTestcaseMetaData>()
|
.get_mut::<SchedulerTestcaseMetadata>()
|
||||||
.ok_or_else(|| {
|
.ok_or_else(|| {
|
||||||
Error::key_not_found("SchedulerTestcaseMetaData not found".to_string())
|
Error::key_not_found("SchedulerTestcaseMetadata not found".to_string())
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
if tcmeta.handicap() >= 4 {
|
if tcmeta.handicap() >= 4 {
|
||||||
|
@ -12,7 +12,7 @@ use serde::{Deserialize, Serialize};
|
|||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
bolts::{current_time, tuples::Named, AsIter},
|
bolts::{current_time, tuples::Named, AsIter},
|
||||||
corpus::{Corpus, CorpusId, SchedulerTestcaseMetaData},
|
corpus::{Corpus, CorpusId, SchedulerTestcaseMetadata},
|
||||||
events::{Event, EventFirer, LogSeverity},
|
events::{Event, EventFirer, LogSeverity},
|
||||||
executors::{Executor, ExitKind, HasObservers},
|
executors::{Executor, ExitKind, HasObservers},
|
||||||
feedbacks::{map::MapFeedbackMetadata, HasObserverName},
|
feedbacks::{map::MapFeedbackMetadata, HasObserverName},
|
||||||
@ -251,7 +251,7 @@ where
|
|||||||
.corpus()
|
.corpus()
|
||||||
.get(corpus_idx)?
|
.get(corpus_idx)?
|
||||||
.borrow()
|
.borrow()
|
||||||
.has_metadata::<SchedulerTestcaseMetaData>();
|
.has_metadata::<SchedulerTestcaseMetadata>();
|
||||||
|
|
||||||
if use_powerschedule {
|
if use_powerschedule {
|
||||||
let map = executor
|
let map = executor
|
||||||
@ -282,9 +282,9 @@ where
|
|||||||
|
|
||||||
let data = testcase
|
let data = testcase
|
||||||
.metadata_map_mut()
|
.metadata_map_mut()
|
||||||
.get_mut::<SchedulerTestcaseMetaData>()
|
.get_mut::<SchedulerTestcaseMetadata>()
|
||||||
.ok_or_else(|| {
|
.ok_or_else(|| {
|
||||||
Error::key_not_found("SchedulerTestcaseMetaData not found".to_string())
|
Error::key_not_found("SchedulerTestcaseMetadata not found".to_string())
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
data.set_cycle_and_time((total_time, iter));
|
data.set_cycle_and_time((total_time, iter));
|
||||||
|
@ -346,10 +346,10 @@ where
|
|||||||
mod tests {
|
mod tests {
|
||||||
use crate::cfg::{ControlFlowGraph, HasWeight};
|
use crate::cfg::{ControlFlowGraph, HasWeight};
|
||||||
|
|
||||||
struct TestMetaData {}
|
struct TestMetadata {}
|
||||||
|
|
||||||
impl HasWeight<TestMetaData> for TestMetaData {
|
impl HasWeight<TestMetadata> for TestMetadata {
|
||||||
fn compute(_metadata: Option<&TestMetaData>) -> u32 {
|
fn compute(_metadata: Option<&TestMetadata>) -> u32 {
|
||||||
1
|
1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -364,7 +364,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
#[cfg_attr(miri, ignore)] // Testcase takes long in miri.
|
#[cfg_attr(miri, ignore)] // Testcase takes long in miri.
|
||||||
fn test_basic_cfg_from_str() {
|
fn test_basic_cfg_from_str() {
|
||||||
let cfg: ControlFlowGraph<TestMetaData> = ControlFlowGraph::from_content(TEST_GRAPH_STR);
|
let cfg: ControlFlowGraph<TestMetadata> = ControlFlowGraph::from_content(TEST_GRAPH_STR);
|
||||||
let entry = cfg.get_entry("main").unwrap();
|
let entry = cfg.get_entry("main").unwrap();
|
||||||
assert_eq!(entry.calling_func, "main");
|
assert_eq!(entry.calling_func, "main");
|
||||||
assert_eq!(entry.successor_edges.len(), 2);
|
assert_eq!(entry.successor_edges.len(), 2);
|
||||||
@ -394,7 +394,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
#[cfg_attr(miri, ignore)] // Testcase takes too long in miri. :/
|
#[cfg_attr(miri, ignore)] // Testcase takes too long in miri. :/
|
||||||
fn test_shortest_path() {
|
fn test_shortest_path() {
|
||||||
let cfg: ControlFlowGraph<TestMetaData> = ControlFlowGraph::from_content(TEST_GRAPH_STR);
|
let cfg: ControlFlowGraph<TestMetadata> = ControlFlowGraph::from_content(TEST_GRAPH_STR);
|
||||||
let distances = cfg.calculate_distances_to_all_edges((41864 >> 1) ^ 26911);
|
let distances = cfg.calculate_distances_to_all_edges((41864 >> 1) ^ 26911);
|
||||||
assert_eq!(*distances.get(&((41864 >> 1) ^ 26911)).unwrap(), 1);
|
assert_eq!(*distances.get(&((41864 >> 1) ^ 26911)).unwrap(), 1);
|
||||||
assert_eq!(*distances.get(&((26911 >> 1) ^ 52706)).unwrap(), 2);
|
assert_eq!(*distances.get(&((26911 >> 1) ^ 52706)).unwrap(), 2);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user