SXXXXXXX_PyMsc/tests/test_end_to_end.py
2025-12-10 11:47:46 +01:00

47 lines
1.3 KiB
Python

import time
import socket
import os
import sys
repo_root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
if repo_root not in sys.path:
sys.path.insert(0, repo_root)
from pymsc.core.app_controller import AppController
from pymsc.lib1553.structures import Udp1553Header, Udp1553Message, CommandWord
from pymsc.lib1553.constants import Marker
import ctypes
print('E2E Test: avvio AppController')
app = AppController()
app.start()
# attendi che il receiver sia pronto
time.sleep(0.2)
print('E2E Test: costruisco frame di prova (header + msg + payload + END_MARKER)')
header = Udp1553Header()
header.marker_1553 = Marker.START_1553
header.o_type = 0x5452
cw = CommandWord(wc=32, sa=1, tr=0, rt=20)
msg_wrapper = Udp1553Message(marker=Marker.CTRL_BEGIN, cw=cw)
payload = b'\x00' * 64
packet = bytes(header) + bytes(msg_wrapper) + payload + bytes(ctypes.c_uint16(Marker.END_1553))
print(f'E2E Test: invio frame a 127.0.0.1:{app.udp_recv_port}')
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(packet, ('127.0.0.1', app.udp_recv_port))
# lasciare tempo al receiver di processare
time.sleep(0.5)
print('E2E Test: contenuto della monitor_queue:')
while not app.monitor_queue.empty():
item = app.monitor_queue.get()
print(item)
print('E2E Test: fermo AppController')
app.stop()
print('E2E Test completato')