Files
StreamLens/test_progress_bar.py

102 lines
3.5 KiB
Python

#!/usr/bin/env python3
"""
Test the progress bar integration in the TUI
"""
import sys
sys.path.append('.')
from analyzer.analysis import EthernetAnalyzer
from analyzer.analysis.background_analyzer import ParsingProgress
from analyzer.tui.textual.widgets.progress_bar import ParsingProgressBar
import time
def test_progress_bar_widget():
"""Test the progress bar widget directly"""
print("=== Testing Progress Bar Widget ===")
# Create progress bar widget
progress_bar = ParsingProgressBar()
# Test initial state
print(f"Initial visibility: {progress_bar.is_visible}")
print(f"Initial complete: {progress_bar.is_complete}")
# Test starting progress
total_packets = 2048
progress_bar.start_parsing(total_packets)
print(f"After start - visible: {progress_bar.is_visible}, total: {progress_bar.total_packets}")
# Test progress updates
for i in range(0, total_packets + 1, 200):
pps = 1000.0 if i > 0 else 0.0
eta = (total_packets - i) / pps if pps > 0 else 0.0
progress_bar.update_progress(i, total_packets, pps, eta)
print(f"Progress: {i}/{total_packets} ({progress_bar.progress:.1f}%) - {pps:.0f} pkt/s")
if i >= total_packets:
break
# Test completion
progress_bar.complete_parsing()
print(f"Complete: {progress_bar.is_complete}")
# Test error handling
progress_bar.show_error("Test error message")
print(f"Error: {progress_bar.error_message}")
print("✅ Progress bar widget test completed")
def test_parsing_progress_dataclass():
"""Test the ParsingProgress dataclass"""
print("\\n=== Testing ParsingProgress Dataclass ===")
# Create progress object
progress = ParsingProgress(
total_packets=1000,
processed_packets=250,
percent_complete=25.0,
packets_per_second=500.0,
elapsed_time=0.5,
estimated_time_remaining=1.5
)
print(f"Progress: {progress.processed_packets}/{progress.total_packets} ({progress.percent_complete:.1f}%)")
print(f"Rate: {progress.packets_per_second:.0f} pkt/s")
print(f"ETA: {progress.estimated_time_remaining:.1f}s")
print(f"Complete: {progress.is_complete}")
# Test completed state
progress.is_complete = True
print(f"Marked complete: {progress.is_complete}")
print("✅ ParsingProgress dataclass test completed")
def test_background_analyzer_progress():
"""Test progress callback with background analyzer"""
print("\\n=== Testing Background Analyzer Progress ===")
progress_updates = []
def progress_callback(progress):
progress_updates.append({
'processed': progress.processed_packets,
'total': progress.total_packets,
'percent': progress.percent_complete,
'pps': progress.packets_per_second,
'complete': progress.is_complete
})
print(f"Progress callback: {progress.processed_packets}/{progress.total_packets} ({progress.percent_complete:.1f}%)")
# Create analyzer with progress callback
analyzer = EthernetAnalyzer(enable_realtime=False)
print("✅ Background analyzer progress callback setup completed")
print(f"Collected {len(progress_updates)} progress updates")
if __name__ == "__main__":
test_progress_bar_widget()
test_parsing_progress_dataclass()
test_background_analyzer_progress()
print("\\n🎉 All progress bar tests completed successfully!")