- Add comprehensive test scripts for multi-series dongle configuration - Add debugging tools for deployment and flow testing - Add configuration verification and guide utilities - Fix stdout/stderr handling in deployment dialog for PyInstaller builds - Includes port ID configuration tests and multi-series config validation 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
134 lines
4.4 KiB
Python
134 lines
4.4 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Test script to verify multi-series configuration fix
|
|
"""
|
|
|
|
import sys
|
|
import os
|
|
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
|
|
|
# Test the mflow_converter functionality
|
|
def test_multi_series_config_building():
|
|
"""Test building multi-series config from properties"""
|
|
print("Testing multi-series config building...")
|
|
|
|
from core.functions.mflow_converter import MFlowConverter
|
|
|
|
# Create converter instance
|
|
converter = MFlowConverter(default_fw_path='.')
|
|
|
|
# Mock properties data that would come from a node
|
|
test_properties = {
|
|
'multi_series_mode': True,
|
|
'enabled_series': ['520', '720'],
|
|
'kl520_port_ids': '28,32',
|
|
'kl720_port_ids': '4',
|
|
'assets_folder': '', # Empty for this test
|
|
'max_queue_size': 100
|
|
}
|
|
|
|
# Test building config
|
|
config = converter._build_multi_series_config_from_properties(test_properties)
|
|
|
|
print(f"Generated config: {config}")
|
|
|
|
if config:
|
|
# Verify structure
|
|
assert 'KL520' in config, "KL520 should be in config"
|
|
assert 'KL720' in config, "KL720 should be in config"
|
|
|
|
# Check KL520 config
|
|
kl520_config = config['KL520']
|
|
assert 'port_ids' in kl520_config, "KL520 should have port_ids"
|
|
assert kl520_config['port_ids'] == [28, 32], f"KL520 port_ids should be [28, 32], got {kl520_config['port_ids']}"
|
|
|
|
# Check KL720 config
|
|
kl720_config = config['KL720']
|
|
assert 'port_ids' in kl720_config, "KL720 should have port_ids"
|
|
assert kl720_config['port_ids'] == [4], f"KL720 port_ids should be [4], got {kl720_config['port_ids']}"
|
|
|
|
print("[OK] Multi-series config structure is correct")
|
|
else:
|
|
print("[ERROR] Config building returned None")
|
|
return False
|
|
|
|
# Test with invalid port IDs
|
|
invalid_properties = {
|
|
'multi_series_mode': True,
|
|
'enabled_series': ['520'],
|
|
'kl520_port_ids': 'invalid,port,ids',
|
|
'assets_folder': ''
|
|
}
|
|
|
|
invalid_config = converter._build_multi_series_config_from_properties(invalid_properties)
|
|
assert invalid_config is None, "Invalid port IDs should result in None config"
|
|
print("[OK] Invalid port IDs handled correctly")
|
|
|
|
return True
|
|
|
|
def test_stage_config():
|
|
"""Test StageConfig with multi-series support"""
|
|
print("\\nTesting StageConfig with multi-series...")
|
|
|
|
from core.functions.InferencePipeline import StageConfig
|
|
|
|
# Test creating StageConfig with multi-series
|
|
multi_series_config = {
|
|
"KL520": {"port_ids": [28, 32]},
|
|
"KL720": {"port_ids": [4]}
|
|
}
|
|
|
|
stage_config = StageConfig(
|
|
stage_id="test_stage",
|
|
port_ids=[], # Not used in multi-series mode
|
|
scpu_fw_path='',
|
|
ncpu_fw_path='',
|
|
model_path='',
|
|
upload_fw=False,
|
|
multi_series_mode=True,
|
|
multi_series_config=multi_series_config
|
|
)
|
|
|
|
print(f"Created StageConfig with multi_series_mode: {stage_config.multi_series_mode}")
|
|
print(f"Multi-series config: {stage_config.multi_series_config}")
|
|
|
|
assert stage_config.multi_series_mode == True, "multi_series_mode should be True"
|
|
assert stage_config.multi_series_config == multi_series_config, "multi_series_config should match"
|
|
|
|
print("[OK] StageConfig supports multi-series configuration")
|
|
return True
|
|
|
|
def main():
|
|
"""Run all tests"""
|
|
print("Testing Multi-Series Configuration Fix")
|
|
print("=" * 50)
|
|
|
|
try:
|
|
# Test config building
|
|
if not test_multi_series_config_building():
|
|
print("[ERROR] Config building test failed")
|
|
return False
|
|
|
|
# Test StageConfig
|
|
if not test_stage_config():
|
|
print("[ERROR] StageConfig test failed")
|
|
return False
|
|
|
|
print("\\n" + "=" * 50)
|
|
print("[SUCCESS] All tests passed!")
|
|
print("\\nThe fix should now properly:")
|
|
print("1. Detect multi_series_mode from node properties")
|
|
print("2. Build multi_series_config from series-specific port IDs")
|
|
print("3. Pass the config to MultiDongle for true multi-series operation")
|
|
|
|
return True
|
|
|
|
except Exception as e:
|
|
print(f"[ERROR] Test failed with exception: {e}")
|
|
import traceback
|
|
traceback.print_exc()
|
|
return False
|
|
|
|
if __name__ == "__main__":
|
|
success = main()
|
|
sys.exit(0 if success else 1) |