@@ -1780,40 +1780,35 @@ def test_constant_time_operations(self):
1780
1780
"""Test that validation doesn't leak timing information."""
1781
1781
logger .debug ("Testing constant-time validation" )
1782
1782
1783
- # Standard
1784
- import statistics
1785
1783
import time
1784
+ import statistics
1786
1785
1787
- # Test multiple validation attempts
1788
1786
valid_times = []
1789
1787
invalid_times = []
1790
1788
1791
- for _ in range ( 10 ):
1792
- # Valid input
1789
+ # Actual measurement
1790
+ for _ in range ( 100 ):
1793
1791
start = time .time ()
1794
1792
try :
1795
1793
ToolCreate (name = "valid_name" , url = "https://example.com" )
1796
1794
except :
1797
1795
pass
1798
- valid_times .append (time .time () - start )
1796
+ valid_times .append (time .perf_counter () - start )
1799
1797
1800
- # Invalid input
1801
- start = time .time ()
1798
+ start = time .perf_counter ()
1802
1799
try :
1803
1800
ToolCreate (name = "<script>alert('XSS')</script>" , url = "https://example.com" )
1804
1801
except :
1805
1802
pass
1806
- invalid_times .append (time .time () - start )
1803
+ invalid_times .append (time .perf_counter () - start )
1807
1804
1808
- # Calculate statistics
1809
- valid_avg = statistics .mean (valid_times )
1810
- invalid_avg = statistics .mean (invalid_times )
1805
+ valid_median = statistics .median (valid_times )
1806
+ invalid_median = statistics .median (invalid_times )
1811
1807
1812
- logger .debug (f"Valid input avg time : { valid_avg :.6f } s" )
1813
- logger .debug (f"Invalid input avg time : { invalid_avg :.6f } s" )
1808
+ logger .debug (f"Valid median : { valid_median :.9f } s" )
1809
+ logger .debug (f"Invalid median : { invalid_median :.9f } s" )
1814
1810
1815
- # Times should be similar (within 50% of each other)
1816
- ratio = max (valid_avg , invalid_avg ) / min (valid_avg , invalid_avg )
1811
+ ratio = max (valid_median , invalid_median ) / min (valid_median , invalid_median )
1817
1812
assert ratio < 1.5 , f"Timing difference too large: { ratio :.2f} x"
1818
1813
1819
1814
0 commit comments