Radish alpha
r
Radicle CI broker
Radicle
Git (anonymous pull)
Log in to clone via SSH
feat: log event filter evaluation in more detail
Lars Wirzenius committed 1 year ago
commit a3dbd8f8be382ec6609546e4a27278cd8cb43a51
parent f97b3da6de9697fe30691beb3e96e724ff4fc78f
2 files changed +22 -7
modified src/filter.rs
@@ -88,13 +88,18 @@ pub enum EventFilter {

impl EventFilter {
    pub fn allows(&self, event: &CiEvent) -> bool {
-
        match self {
-
            Self::Allow => return true,
-
            Self::Deny => return false,
-
            Self::Not(expr) => return !expr.iter().any(|e| e.allows(event)),
-
            Self::And(exprs) => return exprs.iter().all(|e| e.allows(event)),
-
            Self::Or(exprs) => return exprs.iter().any(|e| e.allows(event)),
-
            _ => (),
+
        let decision = match self {
+
            Self::Allow => Some(true),
+
            Self::Deny => Some(false),
+
            Self::Not(expr) => Some(!expr.iter().any(|e| e.allows(event))),
+
            Self::And(exprs) => Some(exprs.iter().all(|e| e.allows(event))),
+
            Self::Or(exprs) => Some(exprs.iter().any(|e| e.allows(event))),
+
            _ => None,
+
        };
+

+
        if let Some(allowed) = decision {
+
            logger::queueproc_predicate_decision(event, self, allowed);
+
            return allowed;
        }

        let decision = match event {
modified src/logger.rs
@@ -445,6 +445,16 @@ pub fn queueproc_filter_decision(event: &CiEvent, filter: &EventFilter, allowed:
    );
}

+
pub fn queueproc_predicate_decision(event: &CiEvent, filter: &EventFilter, allowed: bool) {
+
    trace!(
+
        msg_id = ?Id::QueueProcFilterDecision,
+
        ?event,
+
        ?filter,
+
        ?allowed,
+
        "filter predicate decision"
+
    );
+
}
+

pub fn queueproc_picked_event(id: &QueueId, event: &QueuedCiEvent, adapter: &Adapter) {
    info!(
        msg_id = ?Id::QueueProcPickedEvent,