Appearance
验收与演示脚本(Demo-0 ~ Demo-2)
本章给出可直接用于答辩的“分段式演示脚本”。验收以“输入步骤 / 预期产物 / 关键指标”描述,保证可检查、可复现。
对外 Demo 版本固定 3 个:
- Demo-0:离线闭环(mock traces,兜底可交付)
- Demo-1:接入 UNET 实时通信(Gateway 采集真实 traces)
- Demo-2:Dashboard 可视化 + 运行控制(答辩整合版本,尚未交付)
环境准备(一次性)
- Python:>= 3.10
- 安装(建议,含测试依赖):
powershell
python -m pip install -e ".[dev]"- Demo-1(UNET 网关接入)建议额外安装:
powershell
python -m pip install -e ".[unet]"说明:代码会按 arlpy -> fjagepy -> LogOnly 自动探测后端;Demo-1 需要至少一个网关后端可用(arlpy 或 fjagepy)。
Demo-0:离线跑完出指标(必做,mock traces)
输入:
- 场景:
scenarios/demo_line3.yaml - 策略:
round_robin - 参数:K=60 steps,ΔT=1s,seed 固定
步骤(复制执行):
powershell
$env:PYTHONPATH='src'
python -m unet_dt.orchestrator.runner --scenario scenarios/demo_line3.yaml --strategy round_robin --steps 60 --dt 1 --seed 42预期产物(runs/<run_id>/ 必须齐全):
scenario.yamlstrategy.jsonversions.jsontraces.csv(数据来源=mock/logonly)metrics.csvreport.md
关键指标:至少能在 metrics.csv/report.md 看到 throughput / loss / delay_p95。
Demo-1:UNET Gateway 端到端链路(必做,真实 traces)
目标:证明“能连、能发、能收、能解析 header、能落盘 traces”。
1) 启动 UNET(Windows handbook 2-node 示例)
在新终端启动 UNET:
powershell
cd C:\Users\80428\Downloads\unet-community-3.4.4\unet-3.4.4
bin\unet samples\2-node-network.groovy预期:终端输出类似:
- Node A:
tcp://localhost:1101 - Node B:
tcp://localhost:1102
对应场景文件:scenarios/demo_2node_handbook.yaml(已内置上述 tcp/http 地址与最小 traffic)。
2) Probe:证明网关可连、列出可见 agent/service
powershell
python scripts\unet_probe_gateway.py --scenario scenarios\demo_2node_handbook.yaml --all预期:能看到 backend 类型(arlpy/fjagepy/logonly)、连接成功与 agent/service 列表(或数量摘要)。
3) Subscribe RX:证明能收到消息并解析 DT header
在另一个终端运行(订阅 Node B):
powershell
python scripts\unet_subscribe_rx.py --scenario scenarios\demo_2node_handbook.yaml --node-id 2 --seconds 30 --debug预期:脚本打印收到的消息 key/type 摘要;若 payload 内含 DT header,会打印 unpack 后的 run_id/step_id/seq/tx_time_ms/src/dst。
4) Send TX:从 Node A 向 Node B 发 1 包(包含 DT header)
再开一个终端执行:
powershell
python scripts\unet_send_ping_or_tx.py --scenario scenarios\demo_2node_handbook.yaml --node-id 1 --to 2 --payload-bytes 32说明:当使用 --scenario 时,脚本把 --to 视为“场景 node_id”(例如 2),并会 best-effort 通过 ARP 解析到运行时 UNET address(2-node sample 中地址通常是动态分配的)。
- 建议:先用
--json看dst_unet_addr是否解析成功。 - 注意:该 sample 的 Datagram MTU 常见为 56 bytes,因此
--payload-bytes(不含 24-byte header)建议 <= 32。
5) 跑一次 gateway-backed run:生成真实 traces + 指标
powershell
$env:PYTHONPATH='src'
python -m unet_dt.orchestrator.runner --scenario scenarios/demo_2node_handbook.yaml --mode gateway --strategy round_robin --steps 10 --dt 1 --seed 42 --rx-grace 15预期产物(runs/<run_id>/):
versions.json包含 gateway 后端/host/port 与 run_u32 等信息traces.csv:source=gateway;能看到至少 1 行received=truemetrics.csv/report.md:指标可用
验收点:
- 端到端链路成立:Tx 成功发出 + Rx 能收到 + header 能解析 + traces 能落盘
- 核心逻辑不写死 UNET agent 名称/消息类名:通过 probe 与调试信息定位,必要时由 scenario 注入 hint
常见问题排查(现场用)
- Probe 失败:先确认 UNET 进程在跑、端口(1101/1102)可达。
- Rx 一直收不到:
- 先用
--debug看脚本观察到的字段; - 检查
--to是否为正确的 UNET address; - 必要时先只做“能收到任意消息”的证明(脚本会打印 raw/key 摘要)。
- 先用
Demo-2:Dashboard(答辩版本,尚未交付)
验收口径预留:runs 列表/详情曲线、A/B 对比、Start/Stop 控制、WebSocket 实时推送。
(Demo-2 在当前里程碑后再实现。)