Initial commit: Intelligent Disk Cleaner
This commit is contained in:
62
test_driver_rate_limit.py
Normal file
62
test_driver_rate_limit.py
Normal file
@@ -0,0 +1,62 @@
|
||||
import unittest
|
||||
from unittest.mock import MagicMock, patch, mock_open
|
||||
import os
|
||||
import time
|
||||
import json
|
||||
import disk_cleaner
|
||||
import tempfile
|
||||
import sys
|
||||
|
||||
def run_test():
|
||||
with tempfile.TemporaryDirectory() as temp_dir:
|
||||
state_file = os.path.join(temp_dir, "cleaner_state.json")
|
||||
disk_cleaner.STATE_FILE = state_file
|
||||
|
||||
print(f"Testing rate limiting. State file: {state_file}")
|
||||
|
||||
# Mock send_email internals (smtplib) to verify call count
|
||||
with patch('smtplib.SMTP') as mock_smtp:
|
||||
# 1. First Call: Should Send
|
||||
print("First Trigger (expect send)...")
|
||||
disk_cleaner.send_email("Subject 1", "Body", "/mnt/data")
|
||||
|
||||
if mock_smtp.called:
|
||||
print("SUCCESS: Email sent.")
|
||||
else:
|
||||
print("FAILURE: Email NOT sent.")
|
||||
mock_smtp.reset_mock()
|
||||
|
||||
# Verify state file
|
||||
if os.path.exists(state_file):
|
||||
with open(state_file) as f:
|
||||
state = json.load(f)
|
||||
print(f"State: {state}")
|
||||
if '/mnt/data' in state:
|
||||
print("SUCCESS: State recorded.")
|
||||
else:
|
||||
print("FAILURE: State missing key.")
|
||||
else:
|
||||
print("FAILURE: State file not created.")
|
||||
|
||||
# 2. Second Call (Immediate): Should Suppress
|
||||
print("Second Trigger (Immediate - expect suppress)...")
|
||||
disk_cleaner.send_email("Subject 2", "Body", "/mnt/data")
|
||||
|
||||
if not mock_smtp.called:
|
||||
print("SUCCESS: Email suppressed.")
|
||||
else:
|
||||
print("FAILURE: Email sent despite cooldown.")
|
||||
mock_smtp.reset_mock()
|
||||
|
||||
# 3. Third Call (Different Mount): Should Send
|
||||
print("Third Trigger (Different Mount - expect send)...")
|
||||
disk_cleaner.send_email("Subject 3", "Body", "/mnt/other")
|
||||
|
||||
if mock_smtp.called:
|
||||
print("SUCCESS: Email sent (different key).")
|
||||
else:
|
||||
print("FAILURE: Email NOT sent for new key.")
|
||||
mock_smtp.reset_mock()
|
||||
|
||||
if __name__ == "__main__":
|
||||
run_test()
|
||||
Reference in New Issue
Block a user