tabbed frametype filtering
This commit is contained in:
62
test_outlier_display.py
Normal file
62
test_outlier_display.py
Normal file
@@ -0,0 +1,62 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Test outlier display in UI"""
|
||||
|
||||
import sys
|
||||
sys.path.append('.')
|
||||
import time
|
||||
|
||||
from analyzer.analysis import EthernetAnalyzer
|
||||
from analyzer.utils import PCAPLoader
|
||||
from analyzer.analysis.background_analyzer import BackgroundAnalyzer
|
||||
|
||||
def test_outlier_processing(pcap_file, src_ip="192.168.4.89"):
|
||||
"""Test outlier processing through background analyzer"""
|
||||
|
||||
# Create analyzer
|
||||
analyzer = EthernetAnalyzer(outlier_threshold_sigma=3.0)
|
||||
|
||||
# Create background analyzer
|
||||
bg_analyzer = BackgroundAnalyzer(analyzer, num_threads=4)
|
||||
|
||||
print("Starting background parsing...")
|
||||
bg_analyzer.start_parsing(pcap_file)
|
||||
|
||||
# Wait for processing to complete
|
||||
while bg_analyzer.is_parsing:
|
||||
print(f"\rProcessing... packets: {bg_analyzer.processed_packets}", end="")
|
||||
time.sleep(0.1)
|
||||
|
||||
print("\n\nProcessing complete!")
|
||||
|
||||
# Find the specific flow
|
||||
target_flow = None
|
||||
for flow_key, flow in analyzer.flows.items():
|
||||
if flow.src_ip == src_ip:
|
||||
target_flow = flow
|
||||
print(f"\nFound flow: {flow.src_ip}:{flow.src_port} -> {flow.dst_ip}:{flow.dst_port}")
|
||||
break
|
||||
|
||||
if not target_flow:
|
||||
print(f"Flow from {src_ip} not found!")
|
||||
return
|
||||
|
||||
print(f"Total packets in flow: {target_flow.frame_count}")
|
||||
print(f"Average inter-arrival: {target_flow.avg_inter_arrival * 1000:.3f} ms")
|
||||
print(f"Std deviation: {target_flow.std_inter_arrival * 1000:.3f} ms")
|
||||
print(f"Total outliers detected: {len(target_flow.outlier_frames)}")
|
||||
print(f"Outlier frames: {target_flow.outlier_frames}")
|
||||
|
||||
# Check if outliers match expected
|
||||
expected_outliers = [1576, 1582, 1634, 1640]
|
||||
if set(target_flow.outlier_frames) == set(expected_outliers):
|
||||
print("\n✅ SUCCESS: All expected outliers detected!")
|
||||
else:
|
||||
print("\n❌ FAILURE: Outlier mismatch")
|
||||
print(f"Expected: {expected_outliers}")
|
||||
print(f"Got: {target_flow.outlier_frames}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
if len(sys.argv) > 1:
|
||||
test_outlier_processing(sys.argv[1])
|
||||
else:
|
||||
test_outlier_processing("1 PTPGM.pcapng")
|
||||
Reference in New Issue
Block a user