Cluster add-building compact dispatch families
This commit is contained in:
parent
8828d510fb
commit
d334da6687
4 changed files with 435 additions and 0 deletions
|
|
@ -341,6 +341,12 @@ struct RuntimeCompactEventDispatchClusterReport {
|
|||
add_building_dispatch_records_missing_trigger_kind: usize,
|
||||
add_building_descriptor_occurrence_counts: BTreeMap<String, usize>,
|
||||
add_building_descriptor_map_counts: BTreeMap<String, usize>,
|
||||
add_building_signature_family_occurrence_counts: BTreeMap<String, usize>,
|
||||
add_building_signature_family_map_counts: BTreeMap<String, usize>,
|
||||
add_building_condition_tuple_occurrence_counts: BTreeMap<String, usize>,
|
||||
add_building_condition_tuple_map_counts: BTreeMap<String, usize>,
|
||||
add_building_signature_condition_cluster_occurrence_counts: BTreeMap<String, usize>,
|
||||
add_building_signature_condition_cluster_map_counts: BTreeMap<String, usize>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize)]
|
||||
|
|
@ -361,6 +367,12 @@ struct RuntimeCompactEventDispatchClusterCountsReport {
|
|||
add_building_dispatch_records_missing_trigger_kind: usize,
|
||||
add_building_descriptor_occurrence_counts: BTreeMap<String, usize>,
|
||||
add_building_descriptor_map_counts: BTreeMap<String, usize>,
|
||||
add_building_signature_family_occurrence_counts: BTreeMap<String, usize>,
|
||||
add_building_signature_family_map_counts: BTreeMap<String, usize>,
|
||||
add_building_condition_tuple_occurrence_counts: BTreeMap<String, usize>,
|
||||
add_building_condition_tuple_map_counts: BTreeMap<String, usize>,
|
||||
add_building_signature_condition_cluster_occurrence_counts: BTreeMap<String, usize>,
|
||||
add_building_signature_condition_cluster_map_counts: BTreeMap<String, usize>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize)]
|
||||
|
|
@ -1835,6 +1847,17 @@ fn run_runtime_inspect_compact_event_dispatch_cluster_counts(
|
|||
add_building_descriptor_occurrence_counts: report
|
||||
.add_building_descriptor_occurrence_counts,
|
||||
add_building_descriptor_map_counts: report.add_building_descriptor_map_counts,
|
||||
add_building_signature_family_occurrence_counts: report
|
||||
.add_building_signature_family_occurrence_counts,
|
||||
add_building_signature_family_map_counts: report
|
||||
.add_building_signature_family_map_counts,
|
||||
add_building_condition_tuple_occurrence_counts: report
|
||||
.add_building_condition_tuple_occurrence_counts,
|
||||
add_building_condition_tuple_map_counts: report.add_building_condition_tuple_map_counts,
|
||||
add_building_signature_condition_cluster_occurrence_counts: report
|
||||
.add_building_signature_condition_cluster_occurrence_counts,
|
||||
add_building_signature_condition_cluster_map_counts: report
|
||||
.add_building_signature_condition_cluster_map_counts,
|
||||
},
|
||||
};
|
||||
println!("{}", serde_json::to_string_pretty(&output)?);
|
||||
|
|
@ -1861,6 +1884,13 @@ fn build_runtime_compact_event_dispatch_cluster_report(
|
|||
let mut add_building_dispatch_records_missing_trigger_kind = 0usize;
|
||||
let mut add_building_descriptor_occurrence_counts = BTreeMap::<String, usize>::new();
|
||||
let mut add_building_descriptor_map_counts = BTreeMap::<String, usize>::new();
|
||||
let mut add_building_signature_family_occurrence_counts = BTreeMap::<String, usize>::new();
|
||||
let mut add_building_signature_family_map_counts = BTreeMap::<String, usize>::new();
|
||||
let mut add_building_condition_tuple_occurrence_counts = BTreeMap::<String, usize>::new();
|
||||
let mut add_building_condition_tuple_map_counts = BTreeMap::<String, usize>::new();
|
||||
let mut add_building_signature_condition_cluster_occurrence_counts =
|
||||
BTreeMap::<String, usize>::new();
|
||||
let mut add_building_signature_condition_cluster_map_counts = BTreeMap::<String, usize>::new();
|
||||
let mut dispatch_descriptor_occurrences =
|
||||
BTreeMap::<String, Vec<RuntimeCompactEventDispatchClusterOccurrence>>::new();
|
||||
let mut unknown_descriptor_occurrences =
|
||||
|
|
@ -1876,6 +1906,9 @@ fn build_runtime_compact_event_dispatch_cluster_report(
|
|||
let mut map_dispatch_strip_record_count = 0usize;
|
||||
let mut map_descriptor_keys = BTreeSet::<String>::new();
|
||||
let mut map_add_building_descriptor_keys = BTreeSet::<String>::new();
|
||||
let mut map_add_building_signature_families = BTreeSet::<String>::new();
|
||||
let mut map_add_building_condition_tuples = BTreeSet::<String>::new();
|
||||
let mut map_add_building_signature_condition_clusters = BTreeSet::<String>::new();
|
||||
for record in &summary.records {
|
||||
let matching_rows = record
|
||||
.grouped_effect_rows
|
||||
|
|
@ -1920,6 +1953,16 @@ fn build_runtime_compact_event_dispatch_cluster_report(
|
|||
})
|
||||
.collect::<Vec<_>>();
|
||||
let signature_family = compact_event_signature_family_from_notes(&record.notes);
|
||||
let condition_tuple_family =
|
||||
compact_event_dispatch_condition_tuple_family(&condition_tuples);
|
||||
let signature_family_key = signature_family
|
||||
.clone()
|
||||
.unwrap_or_else(|| "unknown-signature-family".to_string());
|
||||
let signature_condition_cluster_key =
|
||||
compact_event_dispatch_signature_condition_cluster_key(
|
||||
signature_family.as_deref(),
|
||||
&condition_tuples,
|
||||
);
|
||||
|
||||
for (descriptor_id, rows) in matching_rows {
|
||||
let occurrence = RuntimeCompactEventDispatchClusterOccurrence {
|
||||
|
|
@ -1943,6 +1986,19 @@ fn build_runtime_compact_event_dispatch_cluster_report(
|
|||
.entry(descriptor_key.clone())
|
||||
.or_insert(0) += 1;
|
||||
map_add_building_descriptor_keys.insert(descriptor_key.clone());
|
||||
*add_building_signature_family_occurrence_counts
|
||||
.entry(signature_family_key.clone())
|
||||
.or_insert(0) += 1;
|
||||
*add_building_condition_tuple_occurrence_counts
|
||||
.entry(condition_tuple_family.clone())
|
||||
.or_insert(0) += 1;
|
||||
*add_building_signature_condition_cluster_occurrence_counts
|
||||
.entry(signature_condition_cluster_key.clone())
|
||||
.or_insert(0) += 1;
|
||||
map_add_building_signature_families.insert(signature_family_key.clone());
|
||||
map_add_building_condition_tuples.insert(condition_tuple_family.clone());
|
||||
map_add_building_signature_condition_clusters
|
||||
.insert(signature_condition_cluster_key.clone());
|
||||
}
|
||||
dispatch_descriptor_occurrences
|
||||
.entry(descriptor_key)
|
||||
|
|
@ -1979,6 +2035,21 @@ fn build_runtime_compact_event_dispatch_cluster_report(
|
|||
.entry(descriptor_key)
|
||||
.or_insert(0) += 1;
|
||||
}
|
||||
for signature_family in map_add_building_signature_families {
|
||||
*add_building_signature_family_map_counts
|
||||
.entry(signature_family)
|
||||
.or_insert(0) += 1;
|
||||
}
|
||||
for condition_tuple_family in map_add_building_condition_tuples {
|
||||
*add_building_condition_tuple_map_counts
|
||||
.entry(condition_tuple_family)
|
||||
.or_insert(0) += 1;
|
||||
}
|
||||
for signature_condition_cluster in map_add_building_signature_condition_clusters {
|
||||
*add_building_signature_condition_cluster_map_counts
|
||||
.entry(signature_condition_cluster)
|
||||
.or_insert(0) += 1;
|
||||
}
|
||||
}
|
||||
|
||||
let unknown_descriptor_ids = unknown_descriptor_occurrences
|
||||
|
|
@ -2012,6 +2083,12 @@ fn build_runtime_compact_event_dispatch_cluster_report(
|
|||
add_building_dispatch_records_missing_trigger_kind,
|
||||
add_building_descriptor_occurrence_counts,
|
||||
add_building_descriptor_map_counts,
|
||||
add_building_signature_family_occurrence_counts,
|
||||
add_building_signature_family_map_counts,
|
||||
add_building_condition_tuple_occurrence_counts,
|
||||
add_building_condition_tuple_map_counts,
|
||||
add_building_signature_condition_cluster_occurrence_counts,
|
||||
add_building_signature_condition_cluster_map_counts,
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -4395,6 +4472,33 @@ fn compact_event_dispatch_descriptor_key(
|
|||
.unwrap_or_else(|| descriptor_id.to_string())
|
||||
}
|
||||
|
||||
fn compact_event_dispatch_condition_tuple_family(
|
||||
tuples: &[RuntimeCompactEventDispatchClusterConditionTuple],
|
||||
) -> String {
|
||||
if tuples.is_empty() {
|
||||
return "[]".to_string();
|
||||
}
|
||||
let parts = tuples
|
||||
.iter()
|
||||
.map(|tuple| match &tuple.metric {
|
||||
Some(metric) => format!("{}:{}:{}", tuple.raw_condition_id, tuple.subtype, metric),
|
||||
None => format!("{}:{}", tuple.raw_condition_id, tuple.subtype),
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
format!("[{}]", parts.join(","))
|
||||
}
|
||||
|
||||
fn compact_event_dispatch_signature_condition_cluster_key(
|
||||
signature_family: Option<&str>,
|
||||
tuples: &[RuntimeCompactEventDispatchClusterConditionTuple],
|
||||
) -> String {
|
||||
format!(
|
||||
"{} :: {}",
|
||||
signature_family.unwrap_or("unknown-signature-family"),
|
||||
compact_event_dispatch_condition_tuple_family(tuples)
|
||||
)
|
||||
}
|
||||
|
||||
fn parse_hex_offset(text: &str) -> Option<usize> {
|
||||
text.strip_prefix("0x")
|
||||
.and_then(|digits| usize::from_str_radix(digits, 16).ok())
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue