docs: record advanced module contracts and isolated Linux acceptance
This commit is contained in:
44
performance/advancedAcceptance.md
Normal file
44
performance/advancedAcceptance.md
Normal file
@@ -0,0 +1,44 @@
|
||||
# 扩展模块验收
|
||||
|
||||
代码提交:`208a9c3fbdb7ccf2ed409ba380050842e89829d8`。本报告与随后文档提交没有改变被测运行代码。
|
||||
|
||||
2026-09-23 在独立 Linux amd64 验证目录运行,开始 06:51:31 UTC,完成 06:55:56 UTC。工作树在启动时干净。原始 [JSON](advancedLinux.json) 记录 98 个源码/模板/脚本摘要、镜像 ID、命令和容器清理;[TXT](advancedLinux.txt) 保存实际输出。回传本机后已逐个核对源码摘要及日志 SHA-256。
|
||||
|
||||
```sh
|
||||
python3 scripts/verifyModules.py --advanced \
|
||||
--goproxy https://goproxy.cn,direct \
|
||||
--output performance/advancedLinux.json
|
||||
```
|
||||
|
||||
## 环境与隔离
|
||||
|
||||
- Go 1.25.14,Linux amd64。实际依赖版本以提交内 go.mod/go.sum 为准;新增依赖后已覆盖原有网络适配器回归。
|
||||
- Redis 7.4.11,MinIO RELEASE.2025-09-07T16-13-09Z,MySQL 8.4.11。
|
||||
- 编译、Redis、MinIO、MySQL 顺序运行,最多一个测试容器;每个硬限制 2 CPU / 2 GiB 内存与内存加 swap / 256 pids。
|
||||
- 数据服务阶段 `--network none`,仅容器回环/Unix socket,无发布端口,数据位于本次临时目录/tmpfs。没有连接现有业务数据库。
|
||||
- 四个测试容器已清理,原有 7 个业务容器均仍运行。
|
||||
|
||||
## 通过范围
|
||||
|
||||
| 项目 | 实际证据 |
|
||||
| --- | --- |
|
||||
| 全仓库检查 | `go test -race -count=1 -timeout=240s ./...`、`go vet ./...`、`go build ./...`;脚手架集成开关已开启,包含独立生成项目 |
|
||||
| 认证与配置 | JWT 过期/缺 exp/错误发行者或受众/算法混用/轮换、Session 撤销与状态隔离、文件环境覆盖、非法/静态配置拒绝、子日志级别更新 |
|
||||
| 契约与观测 | OpenAPI 路径参数与 DTO、重复注册拒绝、W3C 入站/出站关联、外层访问日志 traceId、HTTP 指标、Redis miss 错误保持、SQL spans |
|
||||
| 熔断与通用模块 | 冷却探针、迟到结果、响应体期间槽位、panic 释放、分页溢出与重复参数、审计白名单与写入失败 |
|
||||
| 组合示例 | nethttp/native/实验 HTTP2 的真实 TLS 401/403/201、对象内容、非法路径、OpenAPI 和关闭;原有 modules/reference 回归同批通过 |
|
||||
| 共享 Redis | 并发 claim 唯一赢家、错误 owner 拒绝、二进制响应回放、两个应用实例仅执行一次、冲突 409、共享限流 429、存储失败 503、过期目标不受批次清理顺序影响 |
|
||||
| Redis 队列 | 重报回执、内容冲突、容量拒绝、旧 owner 无法 ACK、保留未确认消息后自动接管、两个 Consumer 竞争、有限重试/永久拒绝、失败消息分页/受控删除、完成身份 TTL |
|
||||
| 对象存储 | Local 契约及失败上传保留原对象、拒绝符号链接、签名篡改;OSS SDK 协议 fixture;S3 SDK fixture 和 R2 endpoint/region/签名参数;真实 MinIO 上传/覆盖/读取/删除与错误签名 403 |
|
||||
| MySQL 迁移 | 全新测试库 up、重复 up 不重执行、版本读取、SQL 查询/更新观测、失败迁移保留 dirty、后续执行被阻断 |
|
||||
|
||||
真实 Redis/MinIO/MySQL 阶段使用 Go 编译的静态测试程序;该阶段没有启用 race。全仓库 race 阶段不连接这些外部数据服务。两类验证各自的范围不混为一项。
|
||||
|
||||
## 保留边界
|
||||
|
||||
- 本批按用户决定不集成 Orbit,未修改 Orbit 或业务项目,也没有用通用队列模拟其流程编排协议。
|
||||
- OSS/R2 没有真实云账号、bucket 权限、临时凭据轮换、地域/公网故障验收;MinIO 通过不能替代这些验证。
|
||||
- 队列接管通过真实 Redis 中的未确认 delivery 验证,没有本批 Worker 进程强杀、Redis AOF 重启/复制切换、长期负载或 exactly-once 证明。测试 Redis 关闭持久化以隔离协议检查,生产需另行配置持久化与故障验收。
|
||||
- 没有在生产业务上自动执行迁移;没有证明任意 DDL 可事务回滚。MySQL 失败保留 dirty,由部署流程核查。
|
||||
- OpenTelemetry 的采集/传播/exporter 接口通过本批测试,未连接实际 OTLP collector 或告警系统。
|
||||
- 这是扩展模块的首版功能验收,不是生产规模容量或完整运维验收。
|
||||
303
performance/advancedLinux.json
Normal file
303
performance/advancedLinux.json
Normal file
@@ -0,0 +1,303 @@
|
||||
{
|
||||
"status": "passed",
|
||||
"startedAt": "2026-09-23T06:51:31.468977+00:00",
|
||||
"testedCommit": "208a9c3fbdb7ccf2ed409ba380050842e89829d8",
|
||||
"workingTreeStatus": "",
|
||||
"sourceSha256": {
|
||||
"audit/audit.go": "48da5d6ecd498230d22db04413d379650b9810b3faee5fb5d52415ab6f681eea",
|
||||
"audit/audit_test.go": "7ecb96dcc8294c905465bb026030a2b0d2d5064359a9cb6b95199d5d15491c49",
|
||||
"auth/adapters_test.go": "a45dd935fd91b91d16435c97c3b6b6b82615a55bc16463eb94448704a2433fe1",
|
||||
"auth/auth.go": "067b75edf2d73338ceeff3b70698e6f5426606c5d510a7d0249bcf6fd7796eb8",
|
||||
"auth/auth_test.go": "158626ac86c504a337e37faad65b2bad77d68f54ce6b6ac2cda9d287aeefa963",
|
||||
"auth/jwt.go": "cfd4ead3712e921cb08d65b9ea81a06d1b6de420bc94cf240540a95959a2f241",
|
||||
"auth/policy.go": "f02cf32593033908921172190a65debaf9f8c0af616ceb95982ea94649170b62",
|
||||
"auth/session.go": "544c71e00c6af913722c1cca510e1fb2938925234c246e0ec52de22284a81b18",
|
||||
"cache/cache.go": "4aad0a644c0c9ce6353e61e70059715bea5402f0d7132b50003ee126c3836cad",
|
||||
"cache/cache_test.go": "c850cd8a90c1e6a8d701a415e283d4147fbd66d12d054002014cbf348863aea2",
|
||||
"cache/memory.go": "3ac2a710a0d4677ad58dd6817005033ef7cc939be7eb3e40476212ce7f18ad42",
|
||||
"cache/redis/redis.go": "3f522258da8a0fc6627645573221e9f5ccbdfea0fe8a1450985cfd084e2c18ce",
|
||||
"cache/redis/redis_test.go": "4948647b2d31803252af1ee4e4b96372b53f9fac46f03ab064b40abe2d5a0aa1",
|
||||
"cmd/go-omni/main.go": "811cd23a5288cd0a7efc132782d9509307f736afbcbbb2d001c59aad9d8633a9",
|
||||
"cmd/go-omni/main_test.go": "312e0dea1d46cbbd436acdb4fcac0704d4781746d9e8433f1203f67ef9601065",
|
||||
"cmd/go-omni/migrate.go": "f1ce89fbe419205eb82172da2b90e8888905d2b85d1a9db2a72b568bcf849a70",
|
||||
"cmd/go-omni/migrate_test.go": "15d9a4aaebf9f899e523e908f1fa3c2282eb1e6c8cadbefae6b68f1ae4e00e6e",
|
||||
"cmd/go-omni/scaffold/addModule.go": "8f43bd68c2b3820cf1d036c4f2c5f9d06d1c7c8e5114f5081597d905f8d8cdcc",
|
||||
"cmd/go-omni/scaffold/addModule_test.go": "667c45312f628f0fb5b8206ddef7ccc02a75f33b72f73fd6a17b03da0cb62e91",
|
||||
"cmd/go-omni/scaffold/moduleTemplates/README.md.tmpl": "9d3bfc46cac5618bcff7d8a6b2cc9f123e818aeb3dee9bcdfe0f91db584994bd",
|
||||
"cmd/go-omni/scaffold/moduleTemplates/handler-handler.go.tmpl": "729cd0f6faba53d5d2c1492935e12ac2adcefde4490748e25c18be7ccb3f7139",
|
||||
"cmd/go-omni/scaffold/moduleTemplates/model-model.go.tmpl": "a005611f6b455d4d8469e316bc26fa571043b2da1834db2b3dd14a96d66221d7",
|
||||
"cmd/go-omni/scaffold/moduleTemplates/module.go.tmpl": "fb0be7fd571ba2c0edb01d70d68cdbbfe53561caab98346bf1ac7cd8df07205a",
|
||||
"cmd/go-omni/scaffold/moduleTemplates/repository-repository.go.tmpl": "902da3d9f12395fb226178c4428ff547e1c2fce3261882dba98d1400d8c90747",
|
||||
"cmd/go-omni/scaffold/moduleTemplates/service-service.go.tmpl": "49d26044a69a43e983aa5ba4b5b2399b26b77898b23e230751ad1372c2af3178",
|
||||
"cmd/go-omni/scaffold/scaffold.go": "15baca1b5c4607c8f96fb6f6d4b96a661a86899012f93a6c380bc6d894b18803",
|
||||
"cmd/go-omni/scaffold/scaffold_test.go": "58aab9251b01e394bbc90aeb538ff035dd32c73c0d4815132ac6cbc086527cda",
|
||||
"cmd/go-omni/scaffold/templates/README.md.tmpl": "dc5ce58c49b4c0b50a87fdca794513cad38f428975bdfe772e89944e39614bd4",
|
||||
"cmd/go-omni/scaffold/templates/cmd-server-main.go.tmpl": "07c4f81109ece43fcf15bb807ada5ae6dc7e732babc7293269514a21cd389955",
|
||||
"cmd/go-omni/scaffold/templates/databaseIntegration_test.go.tmpl": "81c4f7fbc919d74b738d3a7338248cbd83cfa0803b2058e8ee184e3ce51e7e9b",
|
||||
"cmd/go-omni/scaffold/templates/go.mod.tmpl": "7d3bb15d2292e36939cc1905258d2800aeaf0e37d7d041b2ff8cfdb6fc84c57a",
|
||||
"cmd/go-omni/scaffold/templates/internal-handler-user.go.tmpl": "7f8dbcd2f9b0129a90160d6059e47d19d4758274060a1a3e5160055d0592d34f",
|
||||
"cmd/go-omni/scaffold/templates/internal-model-errors.go.tmpl": "f123eace52952321b0665a92a2923514c52c8c3bf13df1065710e9675750f837",
|
||||
"cmd/go-omni/scaffold/templates/internal-model-user.go.tmpl": "b391143e7386e169b53e7fed25de1146e8c52f3fa287b12728e8d22b33f386de",
|
||||
"cmd/go-omni/scaffold/templates/internal-repository-memory.go.tmpl": "148abc273c1fab3f28536706792762ae41e8687dfe9986c374372f162600feac",
|
||||
"cmd/go-omni/scaffold/templates/internal-repository-mysql.go.tmpl": "34bd333e29211a0025ff6ebaea18c7f142f18f1cc451d692f9d360e8c8f6f635",
|
||||
"cmd/go-omni/scaffold/templates/internal-repository-users.go.tmpl": "6d7dd80f34a9c215daeb4a86bfbe11e845e7ff7e9864c8af43e1c2ec3a8b28ec",
|
||||
"cmd/go-omni/scaffold/templates/internal-service-user.go.tmpl": "3fde559ac634a6c85d322dbc3487691a192644268e85aa3911dd2561a4116196",
|
||||
"cmd/go-omni/scaffold/templates/internal-servicecontext-context.go.tmpl": "2504d9750194a543121c9e93328f5f2a535f1db9f8dbd361edf3681cdfa21c39",
|
||||
"cmd/go-omni/scaffold/templates/schema.sql.tmpl": "7c5108f18fc7d8ff75c97afd96fcaa9f8ed026c79c71c5612f55572d73354abb",
|
||||
"cmd/go-omni/scaffold/version.go": "4d2d1b0d6d0ea716ff4cb7ff08cc25e6f91e06b1a4585176e3128a22e2f2f4ad",
|
||||
"config/config.go": "5cbdf774afa62001910bac3d6523399dc5c9dfdafc6111ab86bd5ce1502d7811",
|
||||
"config/config_test.go": "53b72d5bbe2b5a38c0e3c17bd426f1bb5b43beb2014e7391aef9c438d9e521ac",
|
||||
"config/env.go": "2c05cc2d97ae778158a52d390bcec4226d4196833e1e051a76a2eeb425997c0b",
|
||||
"config/file.go": "2e9f0f9ae30f995994ba0841c27bd27ede7f0652b2c822d71140f439e023d95e",
|
||||
"config/file_test.go": "1479d625aad26a1f773bc4a08c146347f163bbf7b4f11385a32f687119df5817",
|
||||
"database/migrate/migrate.go": "fd6cd27d2dce5b35ffe80eb5442c47c657b93ffc6545bbcc1ee4651a70a4f80b",
|
||||
"database/migrate/migrate_test.go": "d7ba91eed8cfd97e4ef0741d582f493dd411b65ad3192f05b167f75d9b9dcf90",
|
||||
"examples/modules/main.go": "6b44b981c0f654e241664c94612cd95ba8a394155b589add0814d81397156a26",
|
||||
"examples/modules/main_test.go": "4ceb869a7e1ab3fb037af5411ec3dec47af66738adb66c4db01498d446aab7fb",
|
||||
"examples/platform/main.go": "f4fea7a6cdb37413ccab847de68fcbcf8608142858005e1c75754692e2c676d9",
|
||||
"examples/platform/main_test.go": "fd120cfcda2dcaeef5038bdee0ffaaff88bec4450e285ecb4a4de458230d7a12",
|
||||
"go.mod": "f025c81671bfe1399028ce52b934c3b9c264a788c563dfe63a8eb3bc1c458093",
|
||||
"go.sum": "8db5712ded87123d25b155ae67c5c5b168e8dc39d84e00a256766c5ef199cb76",
|
||||
"httpc/client.go": "bbec35b6234a554a4aefd0fef97ace3850288642faab2e382dcbe19a6cb95cd8",
|
||||
"httpc/client_test.go": "972ebd2efab618629e394484c288afe4e675fcfe0c50121d9fa9071680d6e763",
|
||||
"httpx/context.go": "104434499f074eedf2c54e4d0e90db587feb230ca8bb76803b87f2e42d9a8118",
|
||||
"internal/storagefixture/server.go": "defacc905246a643faf5371e437f9ce458f05461e0a922766034d1f9ffdaf003",
|
||||
"logx/logx.go": "1307adf3758967651dd802b814fc0f5804280163a4dc463478bf3667af641740",
|
||||
"logx/logx_test.go": "0f99eff445decdd81a55b3d5374c22d2e038d2a4748adb2c9367d6d03e481671",
|
||||
"middleware/idempotency.go": "a67e0040cbb15cd0140379154017e8f1549b06fc1f307c2549dad515d977e05f",
|
||||
"middleware/middleware.go": "a1e6cfae40d3e1701238a680009d66121f1bbaed786e81b3f6133eb1198a1cf6",
|
||||
"middleware/middleware_test.go": "9249aac16f251858bfe7937f768dc628bf4cc392af75f90223ccacd0f13d2cb9",
|
||||
"middleware/protection_test.go": "4347bb6074078c4c7bd9f65f5fa13a0ac2bc9a8615b297588cc3358aede69a7e",
|
||||
"middleware/rateLimit.go": "fa78a39495a432b3c3349915421a60bed8a76b0921d1f11d7962171fcb1e25ae",
|
||||
"middleware/redis/store.go": "168cac5588ed56e6ef33f2a5de6f8e91599ddf0583f509dd46f5210940fb148a",
|
||||
"middleware/redis/store_test.go": "6659dd4f486da08f4bffb27c698f18c67c3f8c3b59d9f3ebc68e7cd79b9dae15",
|
||||
"middleware/request_id.go": "d52bf17bf80245bafe878026b044857442f0af8df689bcaed4d967d006cbd947",
|
||||
"middleware/sharedIdempotency.go": "2fcc5dec3564680ee8039a8d43451948165553524c9c85248ec7218a5fa68ced",
|
||||
"middleware/timeout.go": "e2f446d992c9f0c986deb75fa71297f19c78f8e43593f174cd19fe93e385e440",
|
||||
"openapi/openapi.go": "13cc2a4fcaa4a50e6f38a38a3d168b6240dcdb49b2ebb5a2782f744f2635857d",
|
||||
"openapi/openapi_test.go": "c92f4a2f548f0304708ac157402fb8641273473e04c524226f2429c2b64b99ab",
|
||||
"pagination/pagination.go": "5c3ca00d27769dcef18d234ac14d5ccc635759ab5be77ef0c765aeba66d39532",
|
||||
"pagination/pagination_test.go": "f78fa86928d4d34a763e96423b29148bc74403aaf58c04d58fe29e225f6598eb",
|
||||
"queue/queue.go": "99a0a8d577dc401d7e69d01602c1889d93d370514bc333111706602044de158a",
|
||||
"queue/redis/consumer.go": "fdb9163db4917f27e4d716e5b42c64dc9694809c460e53b0bff034ebe2859be6",
|
||||
"queue/redis/consumer_test.go": "ea10f5e4804a3350bcee8bdc4bd0debe42820bd3451e28e36f6afc6aeadc0a46",
|
||||
"queue/redis/store.go": "ab5320bcdc7e80c7f3fdc77d583d895055d8970e0a22dbd78bac9b2801cfc634",
|
||||
"resilience/breaker.go": "ca1052185b7dd92e0c289c50aab7f37fb0e6aec6c4c214ae02dff7b8eb91b137",
|
||||
"resilience/breaker_test.go": "6f5abc9534d2bf2506afa3f79fcbb2efb18fa9d488cb010e870c42aa1c8c20d1",
|
||||
"resilience/http.go": "b84a64cef10943af51035c4fc19569b06cde0872046adf1bd1569b6b38170df4",
|
||||
"scripts/verifyModules.py": "ce68eb1f095bbaf721f924ec67c6fa48e0669303f3cdd83be56df06f97e18277",
|
||||
"storage/local/local.go": "ce5fac2e54680b96db3e7dfd9a8d065888f246c5607882607d79c302ee3d231b",
|
||||
"storage/local/local_test.go": "3a2241840968df8e37fd67169c3ef708228449e81f65aff908c8b60d49434dc0",
|
||||
"storage/oss/oss.go": "4b189138172ff42fb8c7549750eea59286c52bcc336f2e4da9d3831cdf3b41b9",
|
||||
"storage/oss/oss_test.go": "555a954010b1218804dc7951fc75e42eae24eba9a99c0871f5ba787f3fc87d45",
|
||||
"storage/s3/config.go": "626ec6a2c0b06c95ee7eb7aa0832b190cfcdeb8a127b6b89e99204040bc3b041",
|
||||
"storage/s3/s3.go": "a9f92c4c59930dd6bf9ec630bcb128ec46bef335f97704ca47647a9b73e15a58",
|
||||
"storage/s3/s3_test.go": "da670fb98a31ff1498d02682cdcd41e3adbab22a44b37f88907b1ea93ab2977f",
|
||||
"storage/signed.go": "72f0255c6ddd275298ba1b9fd50eb48c1858cc8102c43f6764e46f209fffb634",
|
||||
"storage/signed_test.go": "eaffd40894018814e976477f96cf0fbaecfa1987caad78830d9fc8e96995882f",
|
||||
"storage/storage.go": "cb670872f01cf1d7b4ebf21cec9fc6f52ad93bfdf523b2f28bbb8d9c7fe39a6c",
|
||||
"storage/storagetest/contract.go": "e024c5cd3c8a6c2ed656bad370a707f6960f4e717bc5d7dfd5624f6076c00605",
|
||||
"task/task.go": "ef671a9b7d84e7f53cdb2dcb787881e47b00ef0afb29fb6e4698fa8765a7bfe7",
|
||||
"task/task_test.go": "6e33ecd81345ece6102f48e60050a0d990e1bf75c3840e262d5da2962c743681",
|
||||
"telemetry/adapters.go": "a892ef0c2b268caf266a3ea0f833ecf7e9228ff59aeaeecae6fe4a2170ba51e2",
|
||||
"telemetry/telemetry.go": "5567b9d68f52ca54e34568c5f0c9a5b985d90c0c4b5224e57622d6f60adebe69",
|
||||
"telemetry/telemetry_test.go": "7040df811a5cbf9108af3d5e0a98639d1e31efdc8ce4eee6ac0332f3a58691de"
|
||||
},
|
||||
"containerLimits": {
|
||||
"cpus": 2,
|
||||
"memoryBytes": 2147483648,
|
||||
"memoryAndSwapBytes": 2147483648,
|
||||
"pidsLimit": 256
|
||||
},
|
||||
"wallTimeoutSeconds": 900,
|
||||
"imageIds": {
|
||||
"golang:1.25": "sha256:699337d620559a59b4a2bb298ad59611e535d2ee755a34cf2d2a98f37578dc80",
|
||||
"redis:7.4-alpine": "sha256:858f009f9709ce576febc734aa78b8f6d624b82571f9ddb6bda4377c833b3499",
|
||||
"quay.io/minio/minio:RELEASE.2025-09-07T16-13-09Z": "sha256:14cea493d9a34af32f524e538b8346cf79f3321eff8e708c1e2960462bd8936e",
|
||||
"m.daocloud.io/docker.io/library/mysql:8.4": "sha256:b3b90af2a6552ae30c266fdb7d5dd55f3afb72404bb78d37fe8a23eb857fd3fb"
|
||||
},
|
||||
"commands": [
|
||||
[
|
||||
"/usr/bin/docker",
|
||||
"run",
|
||||
"--rm",
|
||||
"--name",
|
||||
"go-omni-modules-7387653de963-build",
|
||||
"--cpus",
|
||||
"2",
|
||||
"--memory",
|
||||
"2048m",
|
||||
"--memory-swap",
|
||||
"2048m",
|
||||
"--pids-limit",
|
||||
"256",
|
||||
"--log-opt",
|
||||
"max-size=10m",
|
||||
"--log-opt",
|
||||
"max-file=1",
|
||||
"-v",
|
||||
"/root/go-omni-validation:/workspace:ro",
|
||||
"-v",
|
||||
"/tmp/goOmniModulesc4suqkr6:/output",
|
||||
"-w",
|
||||
"/workspace",
|
||||
"-e",
|
||||
"GOWORK=off",
|
||||
"-e",
|
||||
"GOMAXPROCS=2",
|
||||
"-e",
|
||||
"GO_OMNI_SCAFFOLD_INTEGRATION=1",
|
||||
"-e",
|
||||
"GOPROXY=https://goproxy.cn,direct",
|
||||
"golang:1.25",
|
||||
"sh",
|
||||
"-c",
|
||||
"go version && go test -race -count=1 -timeout=240s ./... && go vet ./... && go build ./... && CGO_ENABLED=0 go test -c -o /output/redis.test ./cache/redis && CGO_ENABLED=0 go test -c -o /output/shared.test ./middleware/redis && CGO_ENABLED=0 go test -c -o /output/queue.test ./queue/redis && CGO_ENABLED=0 go test -c -o /output/s3.test ./storage/s3 && CGO_ENABLED=0 go test -c -o /output/mysql.test ./database/migrate"
|
||||
],
|
||||
[
|
||||
"/usr/bin/docker",
|
||||
"run",
|
||||
"--rm",
|
||||
"--name",
|
||||
"go-omni-modules-7387653de963-redis",
|
||||
"--cpus",
|
||||
"2",
|
||||
"--memory",
|
||||
"2048m",
|
||||
"--memory-swap",
|
||||
"2048m",
|
||||
"--pids-limit",
|
||||
"256",
|
||||
"--log-opt",
|
||||
"max-size=10m",
|
||||
"--log-opt",
|
||||
"max-file=1",
|
||||
"--network",
|
||||
"none",
|
||||
"--read-only",
|
||||
"--cap-drop",
|
||||
"ALL",
|
||||
"--security-opt",
|
||||
"no-new-privileges",
|
||||
"--user",
|
||||
"999:999",
|
||||
"--tmpfs",
|
||||
"/tmp:rw,nosuid,noexec,size=64m,mode=1777",
|
||||
"-v",
|
||||
"/tmp/goOmniModulesc4suqkr6:/test:ro",
|
||||
"--entrypoint",
|
||||
"sh",
|
||||
"-e",
|
||||
"GOMAXPROCS=2",
|
||||
"-e",
|
||||
"GO_OMNI_REDIS_TEST_ADDR=127.0.0.1:6379",
|
||||
"redis:7.4-alpine",
|
||||
"-c",
|
||||
"set -eu\nredis-server --version\nredis-server --bind 127.0.0.1 --port 6379 --save '' --appendonly no --maxmemory 32mb --daemonize yes --pidfile /tmp/redis.pid --logfile /tmp/redis.log --dir /tmp\ntrap 'redis-cli -h 127.0.0.1 shutdown nosave >/dev/null 2>&1 || true' EXIT\nattempt=0\nuntil redis-cli -h 127.0.0.1 ping >/dev/null 2>&1; do\n attempt=$((attempt + 1))\n if [ \"$attempt\" -gt 50 ]; then cat /tmp/redis.log; exit 1; fi\n sleep 0.1\ndone\n/test/redis.test -test.v -test.run '^TestRedisIntegration$' -test.count=1 -test.timeout=30s\n/test/shared.test -test.v -test.count=1 -test.timeout=45s\n/test/queue.test -test.v -test.count=1 -test.timeout=45s\n"
|
||||
],
|
||||
[
|
||||
"/usr/bin/docker",
|
||||
"run",
|
||||
"--rm",
|
||||
"--name",
|
||||
"go-omni-modules-7387653de963-s3",
|
||||
"--cpus",
|
||||
"2",
|
||||
"--memory",
|
||||
"2048m",
|
||||
"--memory-swap",
|
||||
"2048m",
|
||||
"--pids-limit",
|
||||
"256",
|
||||
"--log-opt",
|
||||
"max-size=10m",
|
||||
"--log-opt",
|
||||
"max-file=1",
|
||||
"--network",
|
||||
"none",
|
||||
"--read-only",
|
||||
"--cap-drop",
|
||||
"ALL",
|
||||
"--security-opt",
|
||||
"no-new-privileges",
|
||||
"-v",
|
||||
"/tmp/goOmniModulesc4suqkr6:/test:ro",
|
||||
"--entrypoint",
|
||||
"sh",
|
||||
"-e",
|
||||
"GOMAXPROCS=2",
|
||||
"--user",
|
||||
"1000:1000",
|
||||
"--tmpfs",
|
||||
"/tmp:rw,nosuid,noexec,size=64m,mode=1777",
|
||||
"--tmpfs",
|
||||
"/data:rw,nosuid,noexec,size=128m,mode=1777",
|
||||
"-e",
|
||||
"MINIO_ROOT_USER=goOmniTest",
|
||||
"-e",
|
||||
"MINIO_ROOT_PASSWORD=goOmniTestSecret",
|
||||
"-e",
|
||||
"GO_OMNI_S3_TEST_ADDR=127.0.0.1:9000",
|
||||
"quay.io/minio/minio:RELEASE.2025-09-07T16-13-09Z",
|
||||
"-c",
|
||||
"set -eu\nminio --version\nminio server /data --address 127.0.0.1:9000 --console-address 127.0.0.1:9001 >/tmp/minio.log 2>&1 &\nserver=$!\ntrap 'kill \"$server\" 2>/dev/null || true; wait \"$server\" 2>/dev/null || true' EXIT\n/test/s3.test -test.v -test.run '^TestS3Integration$' -test.count=1 -test.timeout=45s || { cat /tmp/minio.log; exit 1; }\n"
|
||||
],
|
||||
[
|
||||
"/usr/bin/docker",
|
||||
"run",
|
||||
"--rm",
|
||||
"--name",
|
||||
"go-omni-modules-7387653de963-mysql",
|
||||
"--cpus",
|
||||
"2",
|
||||
"--memory",
|
||||
"2048m",
|
||||
"--memory-swap",
|
||||
"2048m",
|
||||
"--pids-limit",
|
||||
"256",
|
||||
"--log-opt",
|
||||
"max-size=10m",
|
||||
"--log-opt",
|
||||
"max-file=1",
|
||||
"--network",
|
||||
"none",
|
||||
"--read-only",
|
||||
"--cap-drop",
|
||||
"ALL",
|
||||
"--security-opt",
|
||||
"no-new-privileges",
|
||||
"-v",
|
||||
"/tmp/goOmniModulesc4suqkr6:/test:ro",
|
||||
"--entrypoint",
|
||||
"sh",
|
||||
"-e",
|
||||
"GOMAXPROCS=2",
|
||||
"--user",
|
||||
"999:999",
|
||||
"--tmpfs",
|
||||
"/tmp:rw,nosuid,noexec,size=512m,mode=1777",
|
||||
"--tmpfs",
|
||||
"/var/lib/mysql:rw,nosuid,noexec,size=1m,mode=1777",
|
||||
"-e",
|
||||
"GO_OMNI_MIGRATE_TEST_DSN=root@unix(/tmp/mysql.sock)/omni_test?parseTime=true&timeout=2s&readTimeout=5s&writeTimeout=5s",
|
||||
"m.daocloud.io/docker.io/library/mysql:8.4",
|
||||
"-c",
|
||||
"set -eu\nmysqld --version\nmkdir /tmp/mysql\nmysqld --no-defaults --initialize-insecure --datadir=/tmp/mysql --innodb-redo-log-capacity=67108864 >/tmp/init.log 2>&1 || { cat /tmp/init.log; exit 1; }\nmysqld --no-defaults --datadir=/tmp/mysql --socket=/tmp/mysql.sock --pid-file=/tmp/mysql.pid --bind-address=127.0.0.1 --port=3306 --mysqlx=OFF --skip-log-bin --skip-name-resolve --innodb-buffer-pool-size=134217728 --innodb-redo-log-capacity=67108864 --max-connections=8 --log-error=/tmp/mysql.log &\nserver=$!\ntrap 'kill \"$server\" 2>/dev/null || true; wait \"$server\" 2>/dev/null || true' EXIT\nattempt=0\nuntil mysql --no-defaults --socket=/tmp/mysql.sock -uroot -e 'SELECT 1' >/dev/null 2>&1; do\n attempt=$((attempt + 1)); if [ \"$attempt\" -gt 200 ]; then cat /tmp/mysql.log; exit 1; fi; sleep 0.1\ndone\nmysql --no-defaults --socket=/tmp/mysql.sock -uroot -e 'CREATE DATABASE omni_test'\n/test/mysql.test -test.v -test.run '^TestMySQLIntegration$' -test.count=1 -test.timeout=60s\n"
|
||||
]
|
||||
],
|
||||
"cleanedContainers": [
|
||||
"go-omni-modules-7387653de963-build",
|
||||
"go-omni-modules-7387653de963-redis",
|
||||
"go-omni-modules-7387653de963-s3",
|
||||
"go-omni-modules-7387653de963-mysql"
|
||||
],
|
||||
"notes": [
|
||||
"Full repository race/vet/build plus independent generated-module CRUD in the compiler container.",
|
||||
"Real Redis uses a statically linked non-race test binary, loopback only, network=none and no published ports.",
|
||||
"At most one validation container; no pre-existing service or database is accessed."
|
||||
],
|
||||
"logSha256": "e76d05ff859f96330f19e4cb2a96241cf5d63cf118abd80db16fe67ff3a1c51f",
|
||||
"finishedAt": "2026-09-23T06:55:56.890295+00:00",
|
||||
"preExistingContainersStillRunning": 7
|
||||
}
|
||||
119
performance/advancedLinux.txt
Normal file
119
performance/advancedLinux.txt
Normal file
@@ -0,0 +1,119 @@
|
||||
go version go1.25.14 linux/amd64
|
||||
go: downloading github.com/golang-jwt/jwt/v5 v5.3.1
|
||||
go: downloading github.com/redis/go-redis/v9 v9.17.3
|
||||
go: downloading golang.org/x/mod v0.21.0
|
||||
go: downloading github.com/go-sql-driver/mysql v1.9.3
|
||||
go: downloading github.com/golang-migrate/migrate/v4 v4.18.1
|
||||
go: downloading gopkg.in/yaml.v3 v3.0.1
|
||||
go: downloading go.opentelemetry.io/otel/sdk v1.31.0
|
||||
go: downloading go.opentelemetry.io/otel v1.31.0
|
||||
go: downloading github.com/aliyun/alibabacloud-oss-go-sdk-v2 v1.6.0
|
||||
go: downloading github.com/minio/minio-go/v7 v7.0.83
|
||||
go: downloading golang.org/x/net v0.33.0
|
||||
go: downloading github.com/go-playground/validator/v10 v10.20.0
|
||||
go: downloading go.opentelemetry.io/otel/metric v1.31.0
|
||||
go: downloading go.opentelemetry.io/otel/sdk/metric v1.31.0
|
||||
go: downloading go.opentelemetry.io/otel/trace v1.31.0
|
||||
go: downloading filippo.io/edwards25519 v1.1.0
|
||||
go: downloading github.com/cespare/xxhash/v2 v2.3.0
|
||||
go: downloading github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f
|
||||
go: downloading github.com/hashicorp/go-multierror v1.1.1
|
||||
go: downloading go.uber.org/atomic v1.7.0
|
||||
go: downloading golang.org/x/time v0.5.0
|
||||
go: downloading github.com/goccy/go-json v0.10.4
|
||||
go: downloading github.com/google/uuid v1.6.0
|
||||
go: downloading github.com/klauspost/compress v1.17.11
|
||||
go: downloading github.com/minio/md5-simd v1.1.2
|
||||
go: downloading github.com/go-ini/ini v1.67.0
|
||||
go: downloading github.com/gabriel-vasile/mimetype v1.4.3
|
||||
go: downloading github.com/go-playground/universal-translator v0.18.1
|
||||
go: downloading github.com/leodido/go-urn v1.4.0
|
||||
go: downloading golang.org/x/crypto v0.31.0
|
||||
go: downloading golang.org/x/text v0.21.0
|
||||
go: downloading golang.org/x/sys v0.28.0
|
||||
go: downloading github.com/hashicorp/errwrap v1.1.0
|
||||
go: downloading github.com/klauspost/cpuid/v2 v2.2.9
|
||||
go: downloading github.com/dustin/go-humanize v1.0.1
|
||||
go: downloading github.com/rs/xid v1.6.0
|
||||
go: downloading github.com/go-playground/locales v0.14.1
|
||||
go: downloading github.com/go-logr/logr v1.4.2
|
||||
go: downloading github.com/go-logr/stdr v1.2.2
|
||||
ok git.yuntuo.hk/k2safe/go-omni 1.098s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/app 1.652s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/audit 1.016s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/auth 1.048s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/cache 1.034s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/cache/redis 1.014s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/cmd/go-omni 1.194s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/cmd/go-omni/scaffold 4.092s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/config 1.042s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/database 1.013s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/database/migrate 1.053s
|
||||
? git.yuntuo.hk/k2safe/go-omni/errors [no test files]
|
||||
? git.yuntuo.hk/k2safe/go-omni/examples/basic [no test files]
|
||||
ok git.yuntuo.hk/k2safe/go-omni/examples/modules 1.072s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/examples/platform 1.105s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/examples/reference 1.156s
|
||||
? git.yuntuo.hk/k2safe/go-omni/examples/reference/handler [no test files]
|
||||
? git.yuntuo.hk/k2safe/go-omni/examples/reference/model [no test files]
|
||||
ok git.yuntuo.hk/k2safe/go-omni/examples/reference/repository 1.016s
|
||||
? git.yuntuo.hk/k2safe/go-omni/examples/reference/service [no test files]
|
||||
ok git.yuntuo.hk/k2safe/go-omni/health 1.040s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/httpc 1.102s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/httpx 1.033s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/internal/perfcheck 1.050s
|
||||
? git.yuntuo.hk/k2safe/go-omni/internal/storagefixture [no test files]
|
||||
? git.yuntuo.hk/k2safe/go-omni/internal/testutil [no test files]
|
||||
ok git.yuntuo.hk/k2safe/go-omni/logx 1.013s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/metrics 1.054s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/middleware 1.059s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/middleware/redis 1.036s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/openapi 1.036s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/pagination 1.013s
|
||||
? git.yuntuo.hk/k2safe/go-omni/queue [no test files]
|
||||
ok git.yuntuo.hk/k2safe/go-omni/queue/redis 1.014s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/resilience 1.014s
|
||||
? git.yuntuo.hk/k2safe/go-omni/response [no test files]
|
||||
ok git.yuntuo.hk/k2safe/go-omni/storage 1.020s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/storage/local 1.021s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/storage/oss 1.029s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/storage/s3 1.035s
|
||||
? git.yuntuo.hk/k2safe/go-omni/storage/storagetest [no test files]
|
||||
ok git.yuntuo.hk/k2safe/go-omni/task 1.092s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/telemetry 1.038s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/transport 1.053s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/transport/http2 10.647s
|
||||
? git.yuntuo.hk/k2safe/go-omni/transport/internal/routing [no test files]
|
||||
ok git.yuntuo.hk/k2safe/go-omni/transport/native 2.513s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/transport/nethttp 1.071s
|
||||
? git.yuntuo.hk/k2safe/go-omni/transport/transporttest [no test files]
|
||||
? git.yuntuo.hk/k2safe/go-omni/validate [no test files]
|
||||
Redis server v=7.4.11 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64 build=40ff01a501d8e4b6
|
||||
=== RUN TestRedisIntegration
|
||||
--- PASS: TestRedisIntegration (0.09s)
|
||||
PASS
|
||||
=== RUN TestSharedRedisIntegration
|
||||
--- PASS: TestSharedRedisIntegration (0.01s)
|
||||
=== RUN TestExpiredTargetBeyondCleanupBatch
|
||||
--- PASS: TestExpiredTargetBeyondCleanupBatch (0.03s)
|
||||
PASS
|
||||
=== RUN TestQueueRedisIntegration
|
||||
=== RUN TestQueueRedisIntegration/publicationAndCapacity
|
||||
=== RUN TestQueueRedisIntegration/staleAcknowledgement
|
||||
=== RUN TestQueueRedisIntegration/crashReclaimRetryAndDeadLetters
|
||||
--- PASS: TestQueueRedisIntegration (1.11s)
|
||||
--- PASS: TestQueueRedisIntegration/publicationAndCapacity (0.00s)
|
||||
--- PASS: TestQueueRedisIntegration/staleAcknowledgement (0.00s)
|
||||
--- PASS: TestQueueRedisIntegration/crashReclaimRetryAndDeadLetters (1.11s)
|
||||
PASS
|
||||
minio version RELEASE.2025-09-07T16-13-09Z (commit-id=07c3a429bfed433e49018cb0f78a52145d4bedeb)
|
||||
Runtime: go1.24.6 linux/amd64
|
||||
License: GNU AGPLv3 - https://www.gnu.org/licenses/agpl-3.0.html
|
||||
Copyright: 2015-2025 MinIO, Inc.
|
||||
=== RUN TestS3Integration
|
||||
--- PASS: TestS3Integration (0.33s)
|
||||
PASS
|
||||
/usr/sbin/mysqld Ver 8.4.11 for Linux on x86_64 (MySQL Community Server - GPL)
|
||||
=== RUN TestMySQLIntegration
|
||||
--- PASS: TestMySQLIntegration (0.03s)
|
||||
PASS
|
||||
Reference in New Issue
Block a user