Cluster/test_deploy.py
2025-07-17 17:04:56 +08:00

104 lines
3.3 KiB
Python

#!/usr/bin/env python3
"""
Test script for pipeline deployment functionality.
This script demonstrates the deploy feature without requiring actual dongles.
"""
import sys
import os
from PyQt5.QtWidgets import QApplication
from PyQt5.QtCore import Qt
# Add the current directory to path
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from ui.dialogs.deployment import DeploymentDialog
def test_deployment_dialog():
"""Test the deployment dialog with sample pipeline data."""
# Sample pipeline data (similar to what would be exported from the UI)
sample_pipeline_data = {
"project_name": "Test Fire Detection Pipeline",
"description": "A test pipeline for demonstrating deployment functionality",
"nodes": [
{
"id": "input_001",
"name": "Camera Input",
"type": "ExactInputNode",
"pos": [100, 200],
"properties": {
"source_type": "Camera",
"device_id": 0,
"resolution": "1920x1080",
"fps": 30,
"source_path": ""
}
},
{
"id": "model_001",
"name": "Fire Detection Model",
"type": "ExactModelNode",
"pos": [300, 200],
"properties": {
"model_path": "./models/fire_detection.nef",
"scpu_fw_path": "./firmware/fw_scpu.bin",
"ncpu_fw_path": "./firmware/fw_ncpu.bin",
"dongle_series": "520",
"num_dongles": 1,
"port_id": "28"
}
},
{
"id": "output_001",
"name": "Detection Output",
"type": "ExactOutputNode",
"pos": [500, 200],
"properties": {
"output_type": "Stream",
"format": "JSON",
"destination": "tcp://localhost:5555",
"save_interval": 1.0
}
}
],
"connections": [
{
"output_node": "input_001",
"output_port": "output",
"input_node": "model_001",
"input_port": "input"
},
{
"output_node": "model_001",
"output_port": "output",
"input_node": "output_001",
"input_port": "input"
}
],
"version": "1.0"
}
app = QApplication(sys.argv)
# Enable high DPI support
app.setAttribute(Qt.AA_EnableHighDpiScaling, True)
app.setAttribute(Qt.AA_UseHighDpiPixmaps, True)
# Create and show deployment dialog
dialog = DeploymentDialog(sample_pipeline_data)
dialog.show()
print("Deployment dialog opened!")
print("You can:")
print("1. Click 'Analyze Pipeline' to see topology analysis")
print("2. Review the configuration in different tabs")
print("3. Click 'Deploy to Dongles' to test deployment process")
print("(Note: Actual dongle deployment will fail without hardware)")
# Run the application
return app.exec_()
if __name__ == "__main__":
sys.exit(test_deployment_dialog())