import time
import threading

class AlertSuppressor:
    def __init__(self):
        self.suppression_cache = {}
        self.lock = threading.Lock()

    def should_suppress(self, alert_type, suppression_period):
        with self.lock:
            last_alert_time = self.suppression_cache.get(alert_type)
            if last_alert_time is None:
                return False
            
            elapsed_time = time.time() - last_alert_time
            return elapsed_time < suppression_period

    def record_alert(self, alert_type):
        with self.lock:
            self.suppression_cache[alert_type] = time.time()


# Example Usage (can be moved to a test file)
if __name__ == '__main__':
    suppressor = AlertSuppressor()
    
    alert_type = "high_email_volume"
    suppression_period = 60  # seconds

    # First alert - should not be suppressed
    if suppressor.should_suppress(alert_type, suppression_period):
        print("Alert suppressed (incorrectly)")
    else:
        print("Alert not suppressed (correct)")
        suppressor.record_alert(alert_type)

    # Wait a few seconds
    time.sleep(5)

    # Second alert - should be suppressed
    if suppressor.should_suppress(alert_type, suppression_period):
        print("Alert suppressed (correct)")
    else:
        print("Alert not suppressed (incorrect)")
        suppressor.record_alert(alert_type)

    # Wait for the suppression period to expire
    time.sleep(suppression_period + 1)

    # Third alert - should not be suppressed
    if suppressor.should_suppress(alert_type, suppression_period):
        print("Alert suppressed (incorrect)")
    else:
        print("Alert not suppressed (correct)")
        suppressor.record_alert(alert_type)
