[ffx_trace] Fixup warning for "kernel" category.
The "kernel" category is a meta category that enables all "kernel:*"
categories. Added some logic to not warn that "kernel" was not found if
any "kernel:*" category was seen.
Change-Id: Ic80801055e5b22797b9abc9d2cc7038adc6e2230
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1231312
Reviewed-by: Jia Li <lizhijia@google.com>
Commit-Queue: Auto-Submit <auto-submit@fuchsia-infra.iam.gserviceaccount.com>
Fuchsia-Auto-Submit: Gwen Mittertreiner <gmtr@google.com>
diff --git a/src/developer/ffx/plugins/trace/src/lib.rs b/src/developer/ffx/plugins/trace/src/lib.rs
index a33679e..a3847a8 100644
--- a/src/developer/ffx/plugins/trace/src/lib.rs
+++ b/src/developer/ffx/plugins/trace/src/lib.rs
@@ -234,7 +234,9 @@
fn check_record(&mut self, record: Result<TraceRecord, ParseError>) -> Result<()> {
if let Some(event_per_category_counter) = &mut self.event_per_category_counter {
- event_per_category_counter.increment_category(&record);
+ if let Ok(TraceRecord::Event(fxt::EventRecord { ref category, .. })) = record {
+ event_per_category_counter.increment_category(&category);
+ }
}
if let Some(symbolizer) = &mut self.symbolizer {
@@ -452,13 +454,17 @@
Self { category_counter, input_categories }
}
- fn increment_category(&mut self, record: &Result<TraceRecord, ParseError>) {
- if let Ok(TraceRecord::Event(fxt::EventRecord { category, .. })) = record {
- *self.category_counter.entry(category.to_string()).or_insert(0) += 1;
+ fn increment_category(&mut self, category: &str) {
+ *self.category_counter.entry(category.to_string()).or_insert(0) += 1;
+
+ // The "kernel" category is a special meta category that enables all "kernel:*" categories.
+ // If we see any "kernel:" category, also consider "kernel" to be seen.
+ if category.starts_with("kernel:") {
+ *self.category_counter.entry("kernel".into()).or_insert(0) += 1;
}
}
- fn get_invalid_category_list(&mut self) -> Vec<String> {
+ fn get_invalid_category_list(&self) -> Vec<String> {
self.category_counter
.iter()
.filter(|(_, &count)| count == 0)
@@ -1771,4 +1777,30 @@
}
}
}
+
+ #[fuchsia::test]
+ async fn test_verify_missing() {
+ let mut counter =
+ CategoryCounter::new(vec!["some".into(), "other".into(), "categories".into()]);
+ counter.increment_category("some");
+ counter.increment_category("other");
+ let missing = counter.get_invalid_category_list();
+ assert_eq!(missing.len(), 1);
+ assert_eq!(missing[0], "categories");
+ }
+
+ #[fuchsia::test]
+ async fn test_verify_kernel_category() {
+ let mut counter = CategoryCounter::new(vec![
+ "kernel".into(),
+ "some".into(),
+ "other".into(),
+ "categories".into(),
+ ]);
+ counter.increment_category("some");
+ counter.increment_category("other");
+ counter.increment_category("categories");
+ counter.increment_category("kernel:meta");
+ assert!(counter.get_invalid_category_list().is_empty());
+ }
}