Expose compact event control-lane probe summary
This commit is contained in:
parent
a760825376
commit
519d5e2f2b
3 changed files with 456 additions and 0 deletions
|
|
@ -3844,6 +3844,18 @@ pub struct SmpLoadedEventRuntimeCollectionSummary {
|
|||
#[serde(default)]
|
||||
pub imported_runtime_record_count: usize,
|
||||
#[serde(default)]
|
||||
pub records_with_trigger_kind: usize,
|
||||
#[serde(default)]
|
||||
pub records_missing_trigger_kind: usize,
|
||||
#[serde(default)]
|
||||
pub nondirect_compact_record_count: usize,
|
||||
#[serde(default)]
|
||||
pub nondirect_compact_records_missing_trigger_kind: usize,
|
||||
#[serde(default)]
|
||||
pub trigger_kinds_present: Vec<u8>,
|
||||
#[serde(default)]
|
||||
pub control_lane_notes: Vec<String>,
|
||||
#[serde(default)]
|
||||
pub records: Vec<SmpLoadedPackedEventRecordSummary>,
|
||||
}
|
||||
|
||||
|
|
@ -9398,6 +9410,42 @@ fn parse_event_runtime_collection_summary_with_tag_width(
|
|||
.iter()
|
||||
.filter(|record| record.executable_import_ready)
|
||||
.count();
|
||||
let records_with_trigger_kind = records
|
||||
.iter()
|
||||
.filter(|record| record.trigger_kind.is_some())
|
||||
.count();
|
||||
let records_missing_trigger_kind = records.len().saturating_sub(records_with_trigger_kind);
|
||||
let nondirect_compact_record_count = records
|
||||
.iter()
|
||||
.filter(|record| record.payload_family == "real_packed_nondirect_compact_v1")
|
||||
.count();
|
||||
let nondirect_compact_records_missing_trigger_kind = records
|
||||
.iter()
|
||||
.filter(|record| {
|
||||
record.payload_family == "real_packed_nondirect_compact_v1"
|
||||
&& record.trigger_kind.is_none()
|
||||
})
|
||||
.count();
|
||||
let mut trigger_kinds_present = records
|
||||
.iter()
|
||||
.filter_map(|record| record.trigger_kind)
|
||||
.collect::<Vec<_>>();
|
||||
trigger_kinds_present.sort_unstable();
|
||||
trigger_kinds_present.dedup();
|
||||
let mut control_lane_notes = Vec::new();
|
||||
if nondirect_compact_record_count != 0
|
||||
&& nondirect_compact_record_count == nondirect_compact_records_missing_trigger_kind
|
||||
{
|
||||
control_lane_notes.push(
|
||||
"all compact non-direct rows currently decode row bodies only and still lack a decoded trigger/control lane".to_string(),
|
||||
);
|
||||
}
|
||||
if records_with_trigger_kind != 0 {
|
||||
control_lane_notes.push(format!(
|
||||
"decoded trigger kinds present in this collection = {:?}",
|
||||
trigger_kinds_present
|
||||
));
|
||||
}
|
||||
|
||||
return Some(SmpLoadedEventRuntimeCollectionSummary {
|
||||
source_kind,
|
||||
|
|
@ -9419,6 +9467,12 @@ fn parse_event_runtime_collection_summary_with_tag_width(
|
|||
live_entry_ids,
|
||||
decoded_record_count,
|
||||
imported_runtime_record_count,
|
||||
records_with_trigger_kind,
|
||||
records_missing_trigger_kind,
|
||||
nondirect_compact_record_count,
|
||||
nondirect_compact_records_missing_trigger_kind,
|
||||
trigger_kinds_present,
|
||||
control_lane_notes,
|
||||
records,
|
||||
});
|
||||
}
|
||||
|
|
@ -21949,6 +22003,9 @@ mod tests {
|
|||
assert_eq!(summary.live_entry_ids, vec![1, 3, 5]);
|
||||
assert_eq!(summary.records_tag_offset, 96);
|
||||
assert_eq!(summary.decoded_record_count, 0);
|
||||
assert_eq!(summary.records_with_trigger_kind, 0);
|
||||
assert_eq!(summary.records_missing_trigger_kind, 3);
|
||||
assert_eq!(summary.nondirect_compact_record_count, 0);
|
||||
assert_eq!(summary.records.len(), 3);
|
||||
assert_eq!(summary.records[0].decode_status, "unsupported_framing");
|
||||
}
|
||||
|
|
@ -21984,6 +22041,9 @@ mod tests {
|
|||
assert_eq!(summary.live_entry_ids, vec![1, 3, 5]);
|
||||
assert_eq!(summary.records_tag_offset, 98);
|
||||
assert_eq!(summary.decoded_record_count, 0);
|
||||
assert_eq!(summary.records_with_trigger_kind, 0);
|
||||
assert_eq!(summary.records_missing_trigger_kind, 3);
|
||||
assert_eq!(summary.nondirect_compact_record_count, 0);
|
||||
assert_eq!(summary.records.len(), 3);
|
||||
assert_eq!(summary.records[0].decode_status, "unsupported_framing");
|
||||
}
|
||||
|
|
@ -22022,6 +22082,10 @@ mod tests {
|
|||
assert_eq!(summary.live_entry_ids, vec![1, 2, 3]);
|
||||
assert_eq!(summary.records_tag_offset, 102);
|
||||
assert_eq!(summary.decoded_record_count, 0);
|
||||
assert_eq!(summary.records_with_trigger_kind, 0);
|
||||
assert_eq!(summary.records_missing_trigger_kind, 3);
|
||||
assert_eq!(summary.nondirect_compact_record_count, 0);
|
||||
assert_eq!(summary.nondirect_compact_records_missing_trigger_kind, 0);
|
||||
assert_eq!(summary.records.len(), 3);
|
||||
assert_eq!(summary.records[0].decode_status, "unsupported_framing");
|
||||
}
|
||||
|
|
@ -22074,6 +22138,13 @@ mod tests {
|
|||
.event_runtime_collection_summary
|
||||
.as_ref()
|
||||
.expect("non-direct event runtime collection summary should parse");
|
||||
assert_eq!(summary.records_with_trigger_kind, 0);
|
||||
assert_eq!(summary.records_missing_trigger_kind, 1);
|
||||
assert_eq!(summary.nondirect_compact_record_count, 1);
|
||||
assert_eq!(summary.nondirect_compact_records_missing_trigger_kind, 1);
|
||||
assert!(summary.control_lane_notes.iter().any(|line| {
|
||||
line.contains("all compact non-direct rows currently decode row bodies only")
|
||||
}));
|
||||
let record = summary
|
||||
.records
|
||||
.first()
|
||||
|
|
@ -22355,9 +22426,13 @@ mod tests {
|
|||
|
||||
assert_eq!(summary.decoded_record_count, 1);
|
||||
assert_eq!(summary.imported_runtime_record_count, 1);
|
||||
assert_eq!(summary.records_with_trigger_kind, 1);
|
||||
assert_eq!(summary.records_missing_trigger_kind, 0);
|
||||
assert_eq!(summary.trigger_kinds_present, vec![7]);
|
||||
assert_eq!(summary.records.len(), 1);
|
||||
assert_eq!(summary.records[0].decode_status, "executable");
|
||||
assert_eq!(summary.records[0].payload_family, "synthetic_harness");
|
||||
assert_eq!(summary.records[0].trigger_kind, Some(7));
|
||||
assert_eq!(summary.records[0].text_bands[0].preview, "Alpha");
|
||||
assert_eq!(summary.records[0].standalone_condition_row_count, 1);
|
||||
assert_eq!(
|
||||
|
|
@ -22408,6 +22483,9 @@ mod tests {
|
|||
|
||||
assert_eq!(summary.decoded_record_count, 1);
|
||||
assert_eq!(summary.imported_runtime_record_count, 1);
|
||||
assert_eq!(summary.records_with_trigger_kind, 1);
|
||||
assert_eq!(summary.records_missing_trigger_kind, 0);
|
||||
assert_eq!(summary.trigger_kinds_present, vec![8]);
|
||||
assert_eq!(summary.records[0].decode_status, "executable");
|
||||
assert_eq!(summary.records[0].payload_family, "synthetic_harness");
|
||||
assert!(summary.records[0].executable_import_ready);
|
||||
|
|
@ -24864,6 +24942,12 @@ mod tests {
|
|||
live_entry_ids: vec![1, 3, 5],
|
||||
decoded_record_count: 0,
|
||||
imported_runtime_record_count: 0,
|
||||
records_with_trigger_kind: 0,
|
||||
records_missing_trigger_kind: 3,
|
||||
nondirect_compact_record_count: 0,
|
||||
nondirect_compact_records_missing_trigger_kind: 0,
|
||||
trigger_kinds_present: vec![],
|
||||
control_lane_notes: vec![],
|
||||
records: build_unsupported_event_runtime_record_summaries(&[1, 3, 5], "test summary"),
|
||||
});
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue