Skip to content

feat(board): run shared session programs - #160

Closed
ZR233 wants to merge 1 commit into
mainfrom
codex/session-program
Closed

feat(board): run shared session programs#160
ZR233 wants to merge 1 commit into
mainfrom
codex/session-program

Conversation

@ZR233

@ZR233 ZR233 commented Jul 27, 2026

Copy link
Copy Markdown
Member

问题

已有 session HTTP 共享要求每个板卡用例重复编写下载、重试、赋权和执行脚本。对于只需运行一个测试程序的用例,这种配置冗长,也容易让本地路径、上传路径和板端路径失配。

改动

  • 新增具名 Serde 类型 BoardSessionProgram,在 BoardRunConfig 中声明程序相对路径和 argv。
  • 新增 BoardRunRequest::with_session_root,统一收集 session_filessession_program.path,保持原相对路径且不支持 alias 或改名。
  • session 建立后自动生成板端执行流程:在 session 专属目录中下载全部文件、最多重试 60 秒、依次使用 curl/wget、为程序赋权并以安全 POSIX argv 编码执行。
  • argv 支持现有板端 session 变量;程序路径禁止变量,并复用已有绝对路径、..、重复路径、符号链接逃逸检查。
  • 下载、赋权或非零退出输出内部唯一失败标志,继续复用既有匹配器和 session release 生命周期。
  • 保留现有 with_session_files 与手写 shell_init_cmd 用法;session_programshell_init_cmd 明确互斥。

设计逻辑

协议和服务端保持不变:程序仍是现有 session 共享文件,只在 client 侧把 typed 配置转换为既有上传和 shell-init 行为。因此 ostool-server 0.5.0 可继续运行,无需升级。路径从本地 session root 到 HTTP URL 和板端目录始终一致,避免额外的远端名称映射。

验证

  • 先加入 API/配置测试并确认旧实现编译失败,再实现功能。
  • cargo fmt --all
  • cargo test -p ostool -p ostool-server --no-fail-fast
  • cargo clippy -p ostool -p ostool-server --all-targets -- -D warnings

非目标

  • 不修改 HTTP 协议或 ostool-server。
  • 不为复杂多步骤用例替代现有 shell_init_cmd

@ZR233

ZR233 commented Jul 27, 2026

Copy link
Copy Markdown
Member Author

方案调整:tgoskits 将复用现有 session 文件上传与 shell_init_cmd,不再需要 client 侧自动执行程序,因此关闭此 PR。

@ZR233 ZR233 closed this Jul 27, 2026
@ZR233
ZR233 deleted the codex/session-program branch July 27, 2026 04:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant