Skip to content

验收与演示脚本(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.yaml
  • strategy.json
  • versions.json
  • traces.csv(数据来源=mock/logonly)
  • metrics.csv
  • report.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 中地址通常是动态分配的)。

  • 建议:先用 --jsondst_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.csvsource=gateway;能看到至少 1 行 received=true
  • metrics.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 在当前里程碑后再实现。)