Skip to content

test(starry): 添加 sqlite3 CLI 多架构压力测试配置#895

Merged
ZR233 merged 11 commits into
rcore-os:devfrom
SongShiQ:test-sqlite3-cli-stress
May 27, 2026
Merged

test(starry): 添加 sqlite3 CLI 多架构压力测试配置#895
ZR233 merged 11 commits into
rcore-os:devfrom
SongShiQ:test-sqlite3-cli-stress

Conversation

@SongShiQ

@SongShiQ SongShiQ commented May 23, 2026

Copy link
Copy Markdown
Contributor

背景

本 PR 为 StarryOS 添加 Alpine sqlite3 CLI 压力测试,覆盖 4 个架构。

目标是验证 Alpine 发行版中的真实 /usr/bin/sqlite3 能否在 StarryOS 上正常运行,这与已有的源码级 SQLite 测试(app-sqlite、app-sqlite-deep)不同。

测试覆盖

添加了两个测试组:

sqlite3-smoke(S0-S4 基础验证)

  • S0: sqlite3 --version — 验证程序能启动
  • S1: sqlite3 :memory: "SELECT 1;" — 验证纯内存数据库
  • S2: 创建 /tmp/test.db — 验证文件创建
  • S3: 插入并查询 1|alice — 验证读写
  • S4: 重新打开数据库查询 — 验证持久化

sqlite3-deep(S5-S8 深度验证)

  • S5: DELETE journal + COMMIT + ROLLBACK — 验证事务语义
    • PRAGMA journal_mode=DELETE
    • BEGIN + INSERT x2 + COMMIT + SELECT COUNT(*) = 2
    • BEGIN + INSERT + ROLLBACK + SELECT COUNT(*) = 2(回滚生效)
  • S6: WAL 模式 + 重开查询 — 验证 WAL 模式设置、写入和持久化读取
    • PRAGMA journal_mode=WAL 返回 "wal"
    • INSERT + SELECT 验证写入
    • 重新打开数据库后 SELECT 验证持久化
  • S7: 500 行批量插入 + PRAGMA integrity_check — 验证文件增长和 B-tree
    • WITH RECURSIVE 生成 500 行
    • SELECT COUNT(*) = 500
    • PRAGMA integrity_check = "ok"
  • S8: 64 KiB BLOB + 重开查询 — 验证大块数据写入
    • randomblob(65536) 生成 BLOB
    • SELECT length(data) = 65536
    • 重新打开数据库后验证 BLOB 持久化

多架构本地验证结果

架构 smoke deep 备注
aarch64 PASS PASS 基线架构
x86_64 PASS PASS to_bin=false
riscv64 PASS PASS to_bin=true
loongarch64 PASS PASS timeout=600s

本地验证环境

  • sqlite3: 3.51.2(本地验证版本,CI 中实际版本取决于 Alpine rootfs / apk 仓库)
  • Rust: 1.97.0-nightly (nightly-2026-04-27)
  • QEMU: 10.2.1(从源码编译)
  • gcc: 11.4.0
  • 宿主:WSL2 原生文件系统

注意事项

  • 本 PR 仅添加测试配置,不包含内核修改。
  • 该测试验证 Alpine 发行版中的真实 /usr/bin/sqlite3,与已有源码级 app-sqlite/app-sqlite-deep 测试互补。
  • 测试运行时通过 apk add --no-cache sqlite 安装 sqlite,以验证 Alpine 发行版包中的真实 sqlite3 CLI。
  • S6 当前验证 WAL 模式设置、写入和重开读取;不包含并发锁冲突测试。
  • sqlite3 版本取决于 Alpine rootfs / apk 仓库,本地验证版本为 3.51.2。
  • loongarch64 的 timeout 设为 600s(其他架构 300s),因为 Alpine loongarch64 镜像较慢。
  • 当前 loongarch64 CI 失败点位于既有 apk-curl 用例,日志显示在 apk add curl / libcurl 升级阶段 QEMU 超时;本 PR 新增的 sqlite3 测试未修改该用例。

SongShiQ and others added 5 commits May 22, 2026 17:53
Add sqlite3-smoke (S0-S4) and sqlite3-deep (S5-S8) test configs for:
- aarch64 (baseline)
- x86_64
- riscv64
- loongarch64

Test results (QEMU 10.2.1):
- aarch64: smoke PASS, deep PASS
- x86_64: smoke PASS, deep PASS
- riscv64: smoke PASS, deep PASS
- loongarch64: smoke PASS, deep PASS (timeout=600s)

sqlite3-deep tests cover:
- S5: DELETE journal + COMMIT + ROLLBACK
- S6: WAL mode + reopen query
- S7: 500-row bulk insert + integrity_check
- S8: 64KiB BLOB + reopen query
- Fix loongarch64 timeout 300→600 for smoke and deep tests
- Change apk add sqlite to apk add --no-cache sqlite
- Scripts already consistent across architectures (verified)

@mai-team-app mai-team-app Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

审查总结

本 PR 为 StarryOS 添加了 Alpine sqlite3 CLI 压力测试,覆盖 aarch64、x86_64、riscv64、loongarch64 四个架构,包含两个测试组:

  • sqlite3-smoke(S0-S4):验证 sqlite3 启动、内存数据库、文件创建、读写和持久化
  • sqlite3-deep(S5-S8):验证事务语义(COMMIT/ROLLBACK)、WAL 模式、500 行批量插入 + integrity_check、64KiB BLOB 持久化

实现逻辑

本 PR 仅添加测试配置(16 个 TOML 文件,524 行新增),不包含内核修改。测试通过 apk add --no-cache sqlite 安装 Alpine 发行版中的真实 sqlite3 CLI,与已有的源码级 app-sqlite/app-sqlite-deep(编译 C 程序链接 sqlite3 库)互补。

目录结构和配置格式(build-*.toml + qemu-*.toml)与已有的 test-suit/starryos/stress/postgresql/stress-ng-0/ 保持一致。

success_regexfail_regex 模式正确,set -e 确保失败时立即退出并阻止最终标记输出。

重复与重叠分析

  • base 分支:已有 test-suit/starryos/normal/qemu-smp1/sqlite/ 下的 app-sqliteapp-sqlite-deep(源码级 C 测试)。本 PR 的 CLI 压力测试验证的是 Alpine 发行版中的真实 /usr/bin/sqlite3,属于互补关系,不重复。
  • 开放 PR:未发现其他与 sqlite3 压力测试相关的开放 PR。
  • 结论:无重复、无冲突。

验证

  • 本 PR 为纯测试配置(TOML),不涉及 Rust 代码,无需 cargo fmt/clippy。
  • PR 作者已在 4 个架构上本地验证全部通过(QEMU 10.2.1),结果详实可信。
  • loongarch64 timeout=600s 合理,其他架构 300s 符合现有 postgresql/stress-ng 模式。

小建议(非阻塞)

  • aarch64 sqlite3-deep 的 S5/S6 使用独立的 sqlite3 调用(更好的失败隔离),而 riscv64/x86_64/loongarch64 将多条 SQL 合并到一次调用。两种写法功能正确,但 aarch64 版本在失败时更容易定位具体步骤。后续可考虑统一为独立调用风格以改善可调试性。

CI 状态

PR 作者指出 CI 失败发生在 job container 初始化阶段(GHCR 镜像 tgoskits-container-axvisor-lvz:latest manifest unknown),与本 PR 新增的 sqlite3 测试配置无关。

Powered by glm-5.1

@SongShiQ

Copy link
Copy Markdown
Contributor Author

补充说明:我在本地对 loongarch64 路径的既有 apk-curl 用例做了单独复现,测试一次通过,未复现 CI 中的超时问题。

因此当前更倾向于将这次失败判断为 flaky 问题,可能与 CI 环境波动、网络状态或在线 apk add curl 安装链路的不稳定性有关,而不是本 PR 新增的 sqlite3 CLI 测试配置引入的问题。

本 PR 仅新增 sqlite3-smoke / sqlite3-deep 配置,未修改 apk-curl 用例及其相关实现,因此这里先不对代码做额外修改。

@mai-team-app mai-team-app Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

审查总结

本 PR 为 StarryOS 添加了 Alpine sqlite3 CLI 压力测试配置,覆盖 aarch64、x86_64、riscv64、loongarch64 四个架构。同时附带修复了 loongarch64 apk-curl 测试的 QEMU 内存配置(512M → 2G)。

整体质量良好,测试覆盖全面,配置格式与已有 postgresql/stress-ng 参考保持一致,可以合并。

变更范围(17 个文件,+525/-1)

  • 新增 16 个 TOML 文件:sqlite3-smoke 和 sqlite3-deep 各含 4 个 build-.toml + 4 个 qemu-.toml
  • 修改 1 个文件apk-curl/qemu-loongarch64.toml 内存从 512M 提升到 2G

测试覆盖分析

sqlite3-smoke(S0-S4 基础验证)

  • S0: sqlite3 --version — 程序启动验证 ✅
  • S1: :memory: 数据库 SELECT 1 — 纯内存操作 ✅
  • S2: 创建 /tmp/test.db 文件 — 文件系统写入 ✅
  • S3: INSERT + SELECT 验证读写 — 基本数据通路 ✅
  • S4: 重新打开后查询 — 持久化验证 ✅

sqlite3-deep(S5-S8 深度验证)

  • S5: DELETE journal + COMMIT/ROLLBACK 事务语义 ✅
  • S6: WAL 模式设置 + 写入 + 重开读取持久化 ✅
  • S7: 500 行 WITH RECURSIVE 批量插入 + PRAGMA integrity_check
  • S8: 64KiB BLOB (randomblob(65536)) 写入持久化 ✅

测试分层合理,从基础到深度递进,覆盖了 sqlite3 在 StarryOS 上的关键功能路径。

正确性验证

  • success_regex 使用 (?m)^SQLITE3_DEEP_TEST_PASSED\s*$ / (?m)^ALL_STAGES_PASSED\s*$ — 正确,set -e 确保任何步骤失败都会阻止最终标记输出
  • fail_regex 包含 panic 和 STARRY_GROUPED_TEST_FAILED — 与现有 postgresql 配置一致
  • loongarch64 timeout=600s 合理(其他架构 300s),考虑到 Alpine loongarch64 QEMU 镜像启动较慢
  • S5 的合并式 SQL 输出解析(grep -c "^2$" 计数 2 次)逻辑正确

重复与重叠

  • base 分支已有 test-suit/starryos/normal/qemu-smp1/sqlite/ 下的 app-sqliteapp-sqlite-deep(源码级 C 测试,编译链接 sqlite3 库)
  • 本 PR 测试的是 Alpine 发行版中真实的 /usr/bin/sqlite3 CLI(通过 apk add 安装),属于互补关系,不重复
  • 未发现其他开放 PR 包含类似 sqlite3 CLI 压力测试

build 配置

test-suit/starryos/stress/postgresql/ 下的 build-*.toml 格式完全一致:targetenvfeatures = ["qemu"]log = "Warn"plat_dyn = false

CI 状态

当前 head commit (2c1a85f) 所有 CI check-runs 均为 skipped,可能因为 PR 来自 fork 仓库。前一轮 bot 审查的 commit (8d80a1a) 也显示相同情况。PR 作者已在 4 个架构上完成本地 QEMU 验证,结果可信。

非阻塞建议

  1. 跨架构脚本风格差异:aarch64 的 deep 测试使用独立 sqlite3 调用(每次只执行少量 SQL),而 riscv64/x86_64/loongarch64 使用合并式调用(多条 SQL 在一次 sqlite3 调用中完成)。两种写法功能等价、逻辑正确,但 aarch64 风格在失败时更容易定位具体步骤。后续可考虑统一为独立调用风格以改善可调试性。(此条前一轮审查已提出,PR 作者回复将在后续 PR 中处理)

  2. apk-curl 内存修改与 sqlite3 测试混合提交apk-curl/qemu-loongarch64.toml 的 512M→2G 修改与 PR 标题和描述("添加 sqlite3 CLI 多架构压力测试配置")略有偏差。虽然修改动机合理(解决 loongarch64 CI 超时),但理想情况下应作为独立 PR 提交以便独立追踪和回滚。不过由于变更量极小(1 行),在当前 PR 中保留也可接受。

  3. S6 "重开"验证:在 aarch64 版本中,query_resultreopen_result 的两次 SELECT 查询完全相同,因为每次 sqlite3 CLI 调用都会重新打开和关闭数据库连接。这意味着第一次 SELECT 本身就已经是"重开"测试。第二次 SELECT 是冗余的——不过无副作用,保留也无妨。

结论

Approve

测试配置质量良好,覆盖全面,格式与现有 stress 测试保持一致。合并后建议关注 loongarch64 CI 实际运行结果。

Powered by glm-5.1

Comment thread test-suit/starryos/normal/qemu-smp1/apk-curl/qemu-loongarch64.toml Outdated
root added 3 commits May 25, 2026 19:16
Reviewer ZR233 noted 2G is unnecessary. Verified 512M passes on all 4 architectures:
- aarch64: PASS (32.41s)
- x86_64: PASS (32.80s)
- riscv64: PASS (35.38s)
- loongarch64: PASS (30.14s)

@mai-team-app mai-team-app Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

审查总结

本 PR 为 StarryOS 添加了 Alpine sqlite3 CLI 压力测试配置,覆盖 aarch64、x86_64、riscv64、loongarch64 四个架构,包含两个测试组(sqlite3-smoke 和 sqlite3-deep),共 16 个新增 TOML 文件(+524 行),不包含内核修改。

作者已根据 ZR233 的 review 反馈回退了 apk-curl/qemu-loongarch64.toml 的内存修改(512M→2G),当前 PR 仅包含新增的 sqlite3 测试配置文件。

变更分析

目录结构

  • test-suit/starryos/stress/sqlite3-smoke/ — 4 个 build-*.toml + 4 个 qemu-*.toml
  • test-suit/starryos/stress/sqlite3-deep/ — 4 个 build-*.toml + 4 个 qemu-*.toml

嵌套目录模式(sqlite3-deep/sqlite3-deep/qemu-*.toml)与现有 stress-ng-0/stress-ng-0/ 保持一致。

build 配置

features = ["qemu"] 启用了 ax-feat/defplat,通过 ax-hal/defplat 自动引入所有默认平台(ax-plat-aarch64-qemu-virtax-plat-riscv64-qemu-virtax-plat-loongarch64-qemu-virtax-plat-x86-pc),可正确构建。与 postgresql/stress-ng-0 的 build 配置相比,缺少显式的 ax-driver/virtio-blkax-driver/virtio-net 等特性,但这些驱动由 starry-kernel 的依赖链间接引入,且作者已在 4 个架构上本地验证通过。

测试逻辑

  • sqlite3-smoke(S0-S4):验证程序启动、内存数据库、文件创建、读写和持久化 ✅
  • sqlite3-deep(S5-S8):验证 DELETE 事务(COMMIT/ROLLBACK)、WAL 模式、500 行批量插入 + integrity_check、64KiB BLOB 持久化 ✅
  • success_regexfail_regex 模式正确,set -e 确保失败时不会输出最终标记 ✅
  • loongarch64 timeout=600s 合理(Alpine loongarch64 QEMU 镜像启动较慢)✅

重复与重叠

  • base 分支已有 test-suit/starryos/normal/qemu-smp1/sqlite/ 下的 app-sqliteapp-sqlite-deep(源码级 C 测试)
  • 本 PR 测试 Alpine 发行版中的真实 /usr/bin/sqlite3 CLI,属于互补关系,不重复 ✅
  • 未发现其他开放 PR 包含类似 sqlite3 CLI 压力测试 ✅

CI 状态

所有 CI check-runs 为 skipped(fork PR,未触发 CI)。作者已在 4 个架构上完成本地 QEMU 验证。

非阻塞建议

  1. 跨架构脚本风格不一致(前轮 review 已提出):aarch64 deep 测试使用独立 sqlite3 调用(更好的失败隔离),riscv64/x86_64/loongarch64 使用合并式调用。作者回复将在后续 PR 中统一。合理。

  2. S6 "重开"验证:aarch64 版本中第一次和第二次 SELECT 查询完全相同(每次 sqlite3 CLI 调用都会重新打开/关闭数据库连接),因此两次 SELECT 实际等价。第二次 SELECT 没有增加额外的"重开"验证价值。不过无副作用,保留也无妨。

结论

Approve — 测试配置质量良好,覆盖全面,格式与现有 stress 测试保持一致,作者已回应 ZR233 的修改要求回退了内存变更。合并后建议关注 loongarch64 CI 实际运行结果。

Powered by glm-5.1

@SongShiQ
SongShiQ requested a review from ZR233 May 26, 2026 11:42
@SongShiQ

SongShiQ commented May 26, 2026

Copy link
Copy Markdown
Contributor Author

测试发现新的问题,请等我修复后再merge(已修复

…eline

sqlite3-smoke/sqlite3-deep build configs had only features=["qemu"],
which enables defplat but not virtio-blk/virtio-net drivers. The guest
kernel could not detect the rootfs block device, causing panic:
"failed to determine root device from available block devices".

This patch aligns all 8 build configs (smoke+deep, 4 architectures)
with the passing stress-ng-0 baseline: explicit arch-specific platform
feature + ax-driver/virtio-blk/virtio-net/pci/etc, plat_dyn=false.

@mai-team-app mai-team-app Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

审查总结(当前 head: d4960fa

本 PR 为 StarryOS 添加 Alpine sqlite3 CLI 压力测试,覆盖 aarch64、x86_64、riscv64、loongarch64 四个架构,共 16 个新增 TOML 文件(+592 行),不包含内核修改。

变更分析

目录结构

  • test-suit/starryos/stress/sqlite3-smoke/ — 4 个 build-*.toml + 4 个 qemu-*.toml
  • test-suit/starryos/stress/sqlite3-deep/ — 4 个 build-*.toml + 4 个 qemu-*.toml

嵌套目录模式(如 sqlite3-deep/sqlite3-deep/qemu-*.toml)与 stress-ng-0/stress-ng-0/postgresql/postgresql/ 保持一致。

build 配置

最新提交 d4960fa 已将所有 build 配置与 stress-ng-0 baseline 对齐,显式列出 ax-hal/*ax-driver/pciax-driver/virtio-blk/net/gpu/input/socket 等特性。经对比确认与 test-suit/starryos/stress/stress-ng-0/build-*.tomlpostgresql/build-*.toml 完全一致。

QEMU 配置

  • 架构特定参数正确(aarch64: virt,gic-version=2 + cortex-a53; riscv64: rv64; loongarch64: la464;x86_64: 无特殊参数)
  • x86_64 to_bin=false(正确,x86_64 不需要二进制转换);其余架构 to_bin=true
  • loongarch64 timeout=600s(其他 300s),与 Alpine loongarch64 QEMU 镜像启动较慢的实际情况相符

测试逻辑

  • sqlite3-smoke(S0-S4):验证程序启动、内存数据库、文件创建、读写、持久化 — 逻辑清晰正确
  • sqlite3-deep(S5-S8):验证 DELETE 事务(COMMIT/ROLLBACK)、WAL 模式、500 行批量插入 + integrity_check、64KiB BLOB 持久化 — 覆盖全面
  • success_regex 使用 (?m)^SQLITE3_DEEP_TEST_PASSED\s*$ / (?m)^ALL_STAGES_PASSED\s*$,配合 set -e 确保任何步骤失败都会阻止最终标记输出 — 正确
  • fail_regex 包含 panic 和 STARRY_GROUPED_TEST_FAILED — 与 postgresql/stress-ng 配置一致

重复与重叠分析

  • base 分支test-suit/starryos/normal/qemu-smp1/sqlite/ 下已有 app-sqliteapp-sqlite-deep(源码级 C 测试,编译链接 sqlite3 库)。本 PR 测试的是 Alpine 发行版中的真实 /usr/bin/sqlite3 CLI(通过 apk add 安装),属于互补关系,不重复。
  • 开放 PR:遍历所有 open PR,未发现其他包含 sqlite3 CLI 压力测试的 PR。PR #906(MariaDB)和 PR #945(GCC)与本 PR 无重叠。
  • 结论:无重复、无冲突。

验证

本 PR 为纯测试配置(TOML),不涉及 Rust 代码,无需 cargo fmt/clippy。

作者声称已在 4 个架构上本地验证全部通过(QEMU 10.2.1, sqlite3 3.51.2, Rust nightly-2026-04-27)。由于本地环境无 QEMU/Alpine rootfs,无法复现运行结果,但测试逻辑经逐行审查确认正确。

CI 状态

当前 head commit 所有 CI check-runs 为 skipped(fork PR 未触发 CI)。PR 作者已在本地完成验证。

非阻塞建议

  1. 跨架构脚本风格不一致(前轮 review 已提出):aarch64 deep 测试使用独立 sqlite3 调用(更好的失败隔离),riscv64/x86_64/loongarch64 使用合并式调用。两种写法功能等价、逻辑正确,但 aarch64 风格在失败时更容易定位具体步骤。后续可考虑统一。

  2. S6 aarch64 "重开"验证query_resultreopen_result 两次 SELECT 完全相同(每次 sqlite3 CLI 调用都会重新打开/关闭数据库连接),第二次 SELECT 没有增加额外的验证价值。无副作用,保留也无妨。

⚠️ 作者自述问题

作者在 2026-05-26 12:17 UTC 评论「测试发现新的问题,请等我修复后再 merge」。随后在 13:20 UTC 推送了 d4960fa(align sqlite3 stress build features with stress-ng-0 baseline),该提交补齐了显式驱动特性,可能是对所发现问题的修复。

建议:作者确认当前 head 已解决自述问题后,由维护者决定合并时机。

Powered by glm-5.1

@mai-team-app mai-team-app Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

审查总结(当前 head: e16981e

本 PR 为 StarryOS 添加 Alpine sqlite3 CLI 压力测试配置,覆盖 aarch64、x86_64、riscv64、loongarch64 四个架构,共 16 个新增 TOML 文件(+592 行),不包含内核修改。

变更分析

目录结构

  • test-suit/starryos/stress/sqlite3-smoke/ — 4 个 build-*.toml + 4 个 qemu-*.toml
  • test-suit/starryos/stress/sqlite3-deep/ — 4 个 build-*.toml + 4 个 qemu-*.toml

嵌套目录模式(如 sqlite3-deep/sqlite3-deep/qemu-*.toml)与现有 stress-ng-0/stress-ng-0/postgresql/postgresql/ 保持一致。

build 配置

所有 build 配置已包含显式驱动特性(ax-hal/<arch>-qemu-virtax-driver/pciax-driver/virtio-blk/net/gpu/input/socket),与 commit d4960fa 中修复的 rootfs block device 识别问题对应。

经与 test-suit/starryos/stress/postgresql/build-*.toml 对比,本 PR 使用 plat_dyn = false + 显式架构平台特性(如 ax-hal/aarch64-qemu-virt),而 postgresql/stress-ng-0 使用 plat_dyn = true + ax-hal/plat-dyn。两种方式均可工作——本 PR 选择静态平台选择更简单直接,且作者已在 4 个架构上验证通过。功能上等价,可接受。

测试逻辑

  • sqlite3-smoke(S0-S4):验证程序启动、内存数据库、文件创建、读写、持久化 — 逻辑清晰正确 ✅
  • sqlite3-deep(S5-S8):验证 DELETE 事务(COMMIT/ROLLBACK)、WAL 模式、500 行批量插入 + integrity_check、64KiB BLOB 持久化 — 覆盖全面 ✅
  • success_regex 使用 (?m)^SQLITE3_DEEP_TEST_PASSED\\s*$ / (?m)^ALL_STAGES_PASSED\\s*$,配合 set -e 确保任何步骤失败都会阻止最终标记输出 — 正确 ✅
  • fail_regex 包含 panic 和 STARRY_GROUPED_TEST_FAILED — 与 postgresql/stress-ng 配置一致 ✅

验证结果

  • 所有 16 个 TOML 文件通过 tomllib.load() 解析验证 — 有效 ✅
  • 本 PR 为纯测试配置(TOML),不涉及 Rust 代码,无需 cargo fmt/clippy ✅
  • 作者声称已在 4 个架构上本地验证全部通过(QEMU 10.2.1, sqlite3 3.51.2)

已解决的 review 反馈

  1. ZR233 的 CHANGES_REQUESTED(apk-curl 内存 512M→2G):已回退,当前 diff 不包含 apk-curl/qemu-loongarch64.toml 的修改 ✅
  2. build features 缺失features=["qemu"] 导致 rootfs block device 识别失败):已在 commit d4960fa 中补齐显式驱动特性 ✅
  3. 作者自述问题(评论「测试发现新的问题,请等我修复后再 merge」):已在 commit d4960fa 中修复并推送,作者评论更新为「已修复」✅

重复与重叠分析

  • base 分支test-suit/starryos/normal/qemu-smp1/sqlite/ 下已有 app-sqliteapp-sqlite-deep(源码级 C 测试,编译链接 sqlite3 库)。本 PR 测试的是 Alpine 发行版中的真实 /usr/bin/sqlite3 CLI(通过 apk add 安装),属于互补关系,不重复 ✅
  • 开放 PR:搜索「sqlite」仅命中本 PR (#895) 和 PR #906(MariaDB),PR #906 与 sqlite3 CLI 测试无关 ✅
  • 结论:无重复、无冲突 ✅

CI 状态

当前 head commit 所有 CI check-runs 为 skipped(fork PR 未触发 CI)。PR 作者已在本地完成 4 个架构验证。

非阻塞建议

  1. 跨架构脚本风格不一致(前轮 review 已提出):aarch64 deep 测试使用独立 sqlite3 调用(更好的失败隔离),riscv64/x86_64/loongarch64 使用合并式调用。两种写法功能等价、逻辑正确,但 aarch64 风格在失败时更容易定位具体步骤。后续可考虑统一。作者已回复将在后续 PR 中处理。

  2. build 配置 plat_dyn 与 postgresql/stress-ng-0 不同:本 PR 使用 plat_dyn = false(静态平台选择),而 postgresql/stress-ng-0 使用 plat_dyn = true(动态平台检测)。两种方式均可工作,但如果未来项目统一 stress 测试 build 配置风格,可能需要同步调整。当前不影响正确性。

结论

Approve — 测试配置质量良好,覆盖全面,格式与现有 stress 测试保持一致。作者已回应 ZR233 的修改要求回退了内存变更,修复了 build features 问题,并在 4 个架构上验证通过。合并后建议关注 loongarch64 CI 实际运行结果。

Powered by glm-5.1

@ZR233
ZR233 merged commit 8bb3880 into rcore-os:dev May 27, 2026
47 checks passed
54dK3n pushed a commit to 54dK3n/tgoskits that referenced this pull request May 31, 2026
* test(starry): add sqlite3 smoke test config

* test(starry): add sqlite3 CLI stress tests (all 4 architectures)

Add sqlite3-smoke (S0-S4) and sqlite3-deep (S5-S8) test configs for:
- aarch64 (baseline)
- x86_64
- riscv64
- loongarch64

Test results (QEMU 10.2.1):
- aarch64: smoke PASS, deep PASS
- x86_64: smoke PASS, deep PASS
- riscv64: smoke PASS, deep PASS
- loongarch64: smoke PASS, deep PASS (timeout=600s)

sqlite3-deep tests cover:
- S5: DELETE journal + COMMIT + ROLLBACK
- S6: WAL mode + reopen query
- S7: 500-row bulk insert + integrity_check
- S8: 64KiB BLOB + reopen query

* fix: address review feedback

- Fix loongarch64 timeout 300→600 for smoke and deep tests
- Change apk add sqlite to apk add --no-cache sqlite
- Scripts already consistent across architectures (verified)

* ci: increase loongarch64 apk-curl qemu memory to 2G

* fix: revert loongarch64 memory to 512M per reviewer feedback

Reviewer ZR233 noted 2G is unnecessary. Verified 512M passes on all 4 architectures:
- aarch64: PASS (32.41s)
- x86_64: PASS (32.80s)
- riscv64: PASS (35.38s)
- loongarch64: PASS (30.14s)

* fix(starry): align sqlite3 stress build features with stress-ng-0 baseline

sqlite3-smoke/sqlite3-deep build configs had only features=["qemu"],
which enables defplat but not virtio-blk/virtio-net drivers. The guest
kernel could not detect the rootfs block device, causing panic:
"failed to determine root device from available block devices".

This patch aligns all 8 build configs (smoke+deep, 4 architectures)
with the passing stress-ng-0 baseline: explicit arch-specific platform
feature + ax-driver/virtio-blk/virtio-net/pci/etc, plat_dyn=false.

---------

Co-authored-by: root <root@DESKTOP-GK445T5>
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.

2 participants