feat: complete API-driven projects with infrastructure and business acceptance
This commit is contained in:
36
performance/apiGenerationAcceptance.md
Normal file
36
performance/apiGenerationAcceptance.md
Normal file
@@ -0,0 +1,36 @@
|
||||
# API 契约生成阶段验收
|
||||
|
||||
日期:2026-09-23。目标已完成:从 `.api` 生成可运行项目、请求/响应 DTO、绑定校验、Handler、分组路由、Service / Repository 扩展位置与 OpenAPI;支持安全重复生成,保持业务与网络实现分离。
|
||||
|
||||
## 交付
|
||||
|
||||
- `api new` 可直接启动的问候项目;`new --api` / `api generate` 从自定义契约创建项目。
|
||||
- `api go -api ... -dir ...` 别名、`api validate`、只读 `api generate --check`。
|
||||
- 导入、分组、路径前缀、命名中间件、混合请求来源、类型与校验语义,详见 [API.md](../API.md)。
|
||||
- `contract` 同源绑定与文档编译器,包括严格 JSON、缺失/零值、嵌套集合、精确整数默认值及约束。
|
||||
- manifest 所有权、内容指纹、业务文件保留、过期生成文件清理、路径/符号链接/大小写保护及生成锁。
|
||||
- `examples/contracts` 多分组示例、框架/CLI/生成项目文档。
|
||||
- 实际联调发现并修复 native 在应用层提前返回 413 后仍等待未发送请求体的问题。现在放弃未读 body 并关闭连接,避免延迟响应或把 body 当成后续请求。Content-Length/chunked 两种 framing 均有回归测试;保留其他状态原有协议错误优先级。
|
||||
|
||||
## 检查结果
|
||||
|
||||
| 验证 | 结果 |
|
||||
| --- | --- |
|
||||
| `GO_OMNI_SCAFFOLD_INTEGRATION=1 go test -race -p=2 -count=1 -timeout=240s ./...` | 39 个有测试的包全部通过;包含原有 memory/mysql × none/local/s3/r2/oss 共 10 种生成组合 |
|
||||
| 生成后的独立消费者模块 | starter 与多分组 contract 项目均通过编译、race 和请求测试 |
|
||||
| `go vet ./...` | 通过 |
|
||||
| `go build ./...` | 通过 |
|
||||
| `git diff --check` | 通过 |
|
||||
| Parser fuzz(2 workers,4s 目标时长) | 69,457 次输入执行,通过 |
|
||||
| 严格 body binder fuzz(2 workers,4s 目标时长) | 109,477 次输入执行,通过 |
|
||||
| `python3 scripts/verifyAPI.py` | starter/contract × nethttp/native,4 组共 54 项检查通过 |
|
||||
|
||||
真实 HTTP 检查包括:就绪、文档与文件一致、问候接口、请求 ID、JSON/path/query/header 组合、false/0、必填和范围、重复标量、未知字段、尾随 JSON、413/415、认证 401、中间件顺序、成功 201/202/204、业务日志 requestId、SIGTERM 退出以及监听端口释放。更新契约后检查过期检测、重新生成和手写 Service 保留,再编译启动。
|
||||
|
||||
完整测试输出:[apiGenerationTests.txt](apiGenerationTests.txt)。真实服务报告及验收时源码 SHA-256:[apiGenerationLocal.json](apiGenerationLocal.json)。临时服务和消费者目录由验收脚本自动清理。
|
||||
|
||||
## 范围说明
|
||||
|
||||
本阶段是文档中列明的 go-zero 风格 `.api` 子集。未包含完整 goctl 语法、客户端 SDK、数据库模型生成、已有业务项目的自动迁移或线上发布。自定义 Service / 中间件初始为 501 占位,业务自行实现。
|
||||
|
||||
本轮使用本机临时服务、离线存储替身和已有测试。未连接业务服务器、未做云账号实网测试、未推送或创建发布标签。远程旧版本还不能使用这些新命令;当前通过本地框架 replace 验证。
|
||||
115
performance/apiGenerationLocal.json
Normal file
115
performance/apiGenerationLocal.json
Normal file
@@ -0,0 +1,115 @@
|
||||
{
|
||||
"passed": true,
|
||||
"durationSeconds": 3.59,
|
||||
"cases": [
|
||||
{
|
||||
"project": "starter",
|
||||
"transport": "nethttp",
|
||||
"checks": [
|
||||
"readiness",
|
||||
"servedOpenApiMatchesFile",
|
||||
"greeting",
|
||||
"requestId",
|
||||
"gracefulShutdown",
|
||||
"listenerReleased"
|
||||
],
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"project": "starter",
|
||||
"transport": "native",
|
||||
"checks": [
|
||||
"readiness",
|
||||
"servedOpenApiMatchesFile",
|
||||
"greeting",
|
||||
"requestId",
|
||||
"gracefulShutdown",
|
||||
"listenerReleased"
|
||||
],
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"project": "contract",
|
||||
"transport": "nethttp",
|
||||
"checks": [
|
||||
"readiness",
|
||||
"servedOpenApiMatchesFile",
|
||||
"mixedSources",
|
||||
"zeroAndFalse",
|
||||
"pathRange",
|
||||
"defaultAndQuery",
|
||||
"requiredFields",
|
||||
"unknownFields",
|
||||
"duplicateScalar",
|
||||
"trailingJson",
|
||||
"rangeValidation",
|
||||
"bodyLimit413",
|
||||
"auth401",
|
||||
"status201",
|
||||
"status202",
|
||||
"contentType415",
|
||||
"middlewareComposition",
|
||||
"noContent204",
|
||||
"gracefulShutdown",
|
||||
"listenerReleased",
|
||||
"businessLogCorrelation"
|
||||
],
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"project": "contract",
|
||||
"transport": "native",
|
||||
"checks": [
|
||||
"readiness",
|
||||
"servedOpenApiMatchesFile",
|
||||
"mixedSources",
|
||||
"zeroAndFalse",
|
||||
"pathRange",
|
||||
"defaultAndQuery",
|
||||
"requiredFields",
|
||||
"unknownFields",
|
||||
"duplicateScalar",
|
||||
"trailingJson",
|
||||
"rangeValidation",
|
||||
"bodyLimit413",
|
||||
"auth401",
|
||||
"status201",
|
||||
"status202",
|
||||
"contentType415",
|
||||
"middlewareComposition",
|
||||
"noContent204",
|
||||
"gracefulShutdown",
|
||||
"listenerReleased",
|
||||
"businessLogCorrelation"
|
||||
],
|
||||
"passed": true
|
||||
}
|
||||
],
|
||||
"sourceSha256": {
|
||||
"cmd/go-omni/api.go": "59f3b8b45497a9f560d649ac5e7b622362f5f20edd81251d7dc76f21605fc90a",
|
||||
"cmd/go-omni/apigen/apigen_test.go": "8e7c94795ffbc3ee062756a77cfeb274f3cd1a78f1dbc3b51ec4ceb14f478518",
|
||||
"cmd/go-omni/apigen/compile.go": "6709da0b69e8d10d49a874447e00c93d0a819d8367b2188e9626bd0c7b3baef2",
|
||||
"cmd/go-omni/apigen/generate.go": "373ec9834aa4ed71a5311c1ef40b78dc6c303aa884d7bb16a680058ca751b2bc",
|
||||
"cmd/go-omni/apigen/parse.go": "e85fe261fdec2e3487851e265babd7af8c7f6153694ad6fb73177aac33f8ef95",
|
||||
"cmd/go-omni/apigen/profile.go": "877939398384c44316e5e052d92c4a93fb3b74a6742df2414a0054913f3fca27",
|
||||
"cmd/go-omni/apigen/profile_test.go": "5f3c091da241fe0f8b99ac19e9efd2c3177aea72e63a346f99fecc0f548aad1a",
|
||||
"cmd/go-omni/apigen/templates.go": "9303a2fafe44cb7e763a2c5beb193c16fa0dc0c2dbde4cb6e14f2ba533d3e56e",
|
||||
"cmd/go-omni/apigen/write.go": "1ce3871fd92f638d097c576583c169daa0ce2fa8010dbcd34a8cd7faa314a1a2",
|
||||
"cmd/go-omni/main.go": "6f851d21792a9eb9fcbc5095e8cacb3dcee1c715a3980650c75381f0e46f51a9",
|
||||
"contract/README.md": "ff3b56398cf676df401d84d1169dfff19fc83ee074b07fb4c16fdf5af2e8fe17",
|
||||
"contract/bind.go": "8a6be9046c9a489a4bed78bca1a017f53e89ca8209b4c0f971b032709f0a8228",
|
||||
"contract/contract.go": "e496e7a57a6e97c482d25bb7ad6c9d07186328d97095f4bdca84965956bd9912",
|
||||
"contract/contract_test.go": "0b651bb4305baed8b78ac764786af11e3538858783c6e117c7294fde50ec0873",
|
||||
"contract/rules.go": "3a8df741b4c5074fe8589acaf5bb584b9b779afbe0412f4ef1b8315c222706b7",
|
||||
"examples/contracts/README.md": "a7ebe6983c8d89d8a745f924f3d6fb3aba72d31dccd197112c18f50bd17456a9",
|
||||
"examples/contracts/shared.api": "cb0096bb1565916b13ae8d2a0bdad1e2ffe7410a417d25ac347e67c7b9d77dfc",
|
||||
"examples/contracts/user.api": "59b98806a142b65f782e83a60f0723bc554833cec113f1c7fb20e09540870ae8",
|
||||
"openapi/openapi.go": "ed04396c95fa7b5b1c13fdcd99d4cfc8617c20c54d7959d51f281b532d0b44f6",
|
||||
"openapi/openapi_test.go": "c92f4a2f548f0304708ac157402fb8641273473e04c524226f2429c2b64b99ab",
|
||||
"openapi/schemaJSON.go": "f400cbba429cd02dc4f5bc70810a99c5d5841fc2995e6380e5de7c0e1f79d3b0",
|
||||
"openapi/schemaJSON_test.go": "e0e1c7c9380350e67d8e209ba4041e3e52fe2bd86af829ff770affa8814e9c28",
|
||||
"scripts/verifyAPI.py": "8fb41860ccc4320b64e26dbb001a8bae588b95641332e84a34f2d7f00fa86c3e",
|
||||
"transport/native/earlyReject_test.go": "58c7b67d7c2dbb8867dec6075b891acb2c1bbbf0ad886fa0cb061c7c5ba95b0e",
|
||||
"transport/native/server.go": "3b2b33d2a4c0a25034f61c54797bd9e143d994b48e6a689bb3ebd2b8c08050ce"
|
||||
}
|
||||
}
|
||||
52
performance/apiGenerationTests.txt
Normal file
52
performance/apiGenerationTests.txt
Normal file
@@ -0,0 +1,52 @@
|
||||
ok git.yuntuo.hk/k2safe/go-omni 1.364s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/app 2.158s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/audit 1.297s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/auth 1.341s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/cache 1.309s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/cache/redis 1.288s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/cmd/go-omni 1.723s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/cmd/go-omni/apigen 5.678s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/cmd/go-omni/scaffold 37.948s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/config 1.303s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/contract 1.327s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/database 1.287s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/database/migrate 1.329s
|
||||
? 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.366s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/examples/platform 1.383s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/examples/reference 1.413s
|
||||
? 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.480s
|
||||
? git.yuntuo.hk/k2safe/go-omni/examples/reference/service [no test files]
|
||||
ok git.yuntuo.hk/k2safe/go-omni/health 1.301s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/httpc 1.395s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/httpx 1.324s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/internal/perfcheck 1.358s
|
||||
? 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.671s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/metrics 1.671s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/middleware 1.355s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/middleware/redis 1.313s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/openapi 1.236s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/pagination 1.291s
|
||||
? git.yuntuo.hk/k2safe/go-omni/queue [no test files]
|
||||
ok git.yuntuo.hk/k2safe/go-omni/queue/redis 1.440s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/resilience 1.332s
|
||||
? git.yuntuo.hk/k2safe/go-omni/response [no test files]
|
||||
ok git.yuntuo.hk/k2safe/go-omni/storage 1.340s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/storage/local 1.328s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/storage/oss 1.465s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/storage/s3 10.988s
|
||||
? git.yuntuo.hk/k2safe/go-omni/storage/storagetest [no test files]
|
||||
ok git.yuntuo.hk/k2safe/go-omni/task 1.403s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/telemetry 1.348s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/transport 1.335s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/transport/http2 12.593s
|
||||
? git.yuntuo.hk/k2safe/go-omni/transport/internal/routing [no test files]
|
||||
ok git.yuntuo.hk/k2safe/go-omni/transport/native 1.999s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/transport/nethttp 1.320s
|
||||
? git.yuntuo.hk/k2safe/go-omni/transport/transporttest [no test files]
|
||||
? git.yuntuo.hk/k2safe/go-omni/validate [no test files]
|
||||
31
performance/apiWorkflowAcceptance.md
Normal file
31
performance/apiWorkflowAcceptance.md
Normal file
@@ -0,0 +1,31 @@
|
||||
# API、基础模块与业务示例验收
|
||||
|
||||
本轮将 API 项目生成与数据库、存储、日志选项组合,新增可运行的用户管理示例。
|
||||
源码及 CLI 目标版本为 v0.7.0-preview。
|
||||
|
||||
## 本地结果
|
||||
|
||||
- 框架 `GO_OMNI_SCAFFOLD_INTEGRATION=1 go test -race -p=2 -count=1 -timeout=300s ./...`:39 个有测试包通过。
|
||||
- 包含 10 种 API 组合(none/mysql × none/local/s3/r2/oss)及既有 10 种 CRUD 模块组合;生成项目实际编译并运行测试。
|
||||
- `go vet ./...`、`go build ./...`、`git diff --check` 通过。
|
||||
- API 基础回归:starter 与契约项目,在 nethttp/native 共 54 项检查通过。
|
||||
- 独立用户示例:nethttp/native 共 30 项业务、存储和生命周期检查通过。
|
||||
- MySQL 真实事务:提交、错误回滚、panic 回滚、context 取消回滚;业务增/改/删在审计写入失败时整体回滚。
|
||||
- 通过 CLI 显式应用数据库迁移;数据库停机 readiness=503,恢复后重新就绪;进程重启数据仍在。
|
||||
- 28 份开发者拥有的文件在重生成后保持原字节,包括业务实现、配置、迁移和测试。
|
||||
- 存储初始化失败关闭此前打开的数据库连接,Close 可重复调用,关闭后不能重开存储。
|
||||
|
||||
数据库容器只绑定 localhost,限制 1 CPU / 768 MiB,使用随机临时密钥,退出删除容器及卷。
|
||||
所有服务器进程都是本机临时子进程;未使用业务服务器。OSS/R2 仍不包含云账号实测。
|
||||
|
||||
## 证据
|
||||
|
||||
- [完整框架测试](apiWorkflowTests.txt)
|
||||
- [本地业务报告](apiWorkflowLocal.json)
|
||||
- [API 回归](apiGenerationLocal.json)
|
||||
- [模块脚手架回归](scaffoldModulesLocal.json)
|
||||
|
||||
## 远程版本验收
|
||||
|
||||
发布标签后执行 `python3 scripts/verifyAPIWorkflow.py --version v0.7.0-preview --report performance/apiWorkflowRemote.json`。
|
||||
结果完成后记录于同目录 remote 报告;该检查从空 module cache 安装 CLI,并要求业务依赖没有本地 replace。
|
||||
151
performance/apiWorkflowLocal.json
Normal file
151
performance/apiWorkflowLocal.json
Normal file
@@ -0,0 +1,151 @@
|
||||
{
|
||||
"passed": true,
|
||||
"frameworkVersion": "local",
|
||||
"noLocalReplace": false,
|
||||
"durationSeconds": 19.79,
|
||||
"regenerationPreservedHandwrittenFiles": 28,
|
||||
"groups": [
|
||||
{
|
||||
"transport": "nethttp",
|
||||
"checks": [
|
||||
"authBeforeService",
|
||||
"emptyPageAndQueryDefaults",
|
||||
"contractValidation",
|
||||
"createReadNormalize",
|
||||
"uniqueEmailConflict",
|
||||
"updateAndPagination",
|
||||
"createUpdateDeleteRollbackOnAuditFailure",
|
||||
"storageUploadAndSignedDownload",
|
||||
"signedDownloadTamperRejected",
|
||||
"openAPIMatchesContract",
|
||||
"readinessOutageAndRecovery",
|
||||
"persistenceAfterServiceRestart",
|
||||
"deleteAndTransactionalAudit",
|
||||
"gracefulStopAndListenerRelease",
|
||||
"businessFileLogsAndSecretExclusion"
|
||||
]
|
||||
},
|
||||
{
|
||||
"transport": "native",
|
||||
"checks": [
|
||||
"authBeforeService",
|
||||
"emptyPageAndQueryDefaults",
|
||||
"contractValidation",
|
||||
"createReadNormalize",
|
||||
"uniqueEmailConflict",
|
||||
"updateAndPagination",
|
||||
"createUpdateDeleteRollbackOnAuditFailure",
|
||||
"storageUploadAndSignedDownload",
|
||||
"signedDownloadTamperRejected",
|
||||
"openAPIMatchesContract",
|
||||
"readinessOutageAndRecovery",
|
||||
"persistenceAfterServiceRestart",
|
||||
"deleteAndTransactionalAudit",
|
||||
"gracefulStopAndListenerRelease",
|
||||
"businessFileLogsAndSecretExclusion"
|
||||
]
|
||||
}
|
||||
],
|
||||
"transactionTests": [
|
||||
"commit",
|
||||
"errorRollback",
|
||||
"panicRollback",
|
||||
"cancellationRollback"
|
||||
],
|
||||
"startupTests": [
|
||||
"storageFailureClosesDatabase",
|
||||
"idempotentClose",
|
||||
"closedContextCannotReopen"
|
||||
],
|
||||
"migrationCLI": true,
|
||||
"frameworkSum": null,
|
||||
"sourceHashes": {
|
||||
"cmd/go-omni/api.go": "59f3b8b45497a9f560d649ac5e7b622362f5f20edd81251d7dc76f21605fc90a",
|
||||
"cmd/go-omni/api_test.go": "ee68b4b8b0155f4d123135b0706c6d17d8fc90e2bcfc1312aa4f9e7a9da2454b",
|
||||
"cmd/go-omni/apigen/apigen_test.go": "8e7c94795ffbc3ee062756a77cfeb274f3cd1a78f1dbc3b51ec4ceb14f478518",
|
||||
"cmd/go-omni/apigen/compile.go": "6709da0b69e8d10d49a874447e00c93d0a819d8367b2188e9626bd0c7b3baef2",
|
||||
"cmd/go-omni/apigen/generate.go": "373ec9834aa4ed71a5311c1ef40b78dc6c303aa884d7bb16a680058ca751b2bc",
|
||||
"cmd/go-omni/apigen/parse.go": "e85fe261fdec2e3487851e265babd7af8c7f6153694ad6fb73177aac33f8ef95",
|
||||
"cmd/go-omni/apigen/profile.go": "877939398384c44316e5e052d92c4a93fb3b74a6742df2414a0054913f3fca27",
|
||||
"cmd/go-omni/apigen/profile_test.go": "5f3c091da241fe0f8b99ac19e9efd2c3177aea72e63a346f99fecc0f548aad1a",
|
||||
"cmd/go-omni/apigen/templates.go": "9303a2fafe44cb7e763a2c5beb193c16fa0dc0c2dbde4cb6e14f2ba533d3e56e",
|
||||
"cmd/go-omni/apigen/write.go": "1ce3871fd92f638d097c576583c169daa0ce2fa8010dbcd34a8cd7faa314a1a2",
|
||||
"cmd/go-omni/main.go": "6f851d21792a9eb9fcbc5095e8cacb3dcee1c715a3980650c75381f0e46f51a9",
|
||||
"cmd/go-omni/main_test.go": "b8040d2b19a1c86672fe1b1be7fa1bf7f885aece79ded6ffa0cc670887b7136f",
|
||||
"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/apiInfrastructure.go": "7542f6af48345249b84054411c449b950db85fa6c5c60e62620bf8864a1aaff3",
|
||||
"cmd/go-omni/scaffold/moduleProfiles_test.go": "ae9790e5d3549d32fc72739a10a31ea858e5a8f8189cf1f5c1840bf80b3f8ad6",
|
||||
"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": "71b3091b83c3e45ac1981164e8c819c997ad96607d535f1492333370f4872548",
|
||||
"cmd/go-omni/scaffold/scaffold_test.go": "58aab9251b01e394bbc90aeb538ff035dd32c73c0d4815132ac6cbc086527cda",
|
||||
"cmd/go-omni/scaffold/templates/README.md.tmpl": "8ec215775fcafd437480022307fffd2ffe43685bc2b5d328b0c1d58402986e0a",
|
||||
"cmd/go-omni/scaffold/templates/api-context.go.tmpl": "d2d67c3d235c4b1c965364f40f49c441d92764ad7ab8fd6848f56b1028e93b1b",
|
||||
"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": "33fdee3a2c3d98e7ca6a323b5e888a73582f94e327b6c24a34c09bf180db7b3d",
|
||||
"cmd/go-omni/scaffold/templates/internal-servicecontext-context.go.tmpl": "de70ecc4194db8a2da5d65297f452a40b453652cb814cd228ce03d465761c856",
|
||||
"cmd/go-omni/scaffold/templates/modules-README.md.tmpl": "4b84fbc2310b856d86c6fcd9a47d97d2261019c74ea8e0cdbc41229086aa3527",
|
||||
"cmd/go-omni/scaffold/templates/modules-config.yaml.tmpl": "b8734080ae6d533a175bcad946ce2cb55d8bac1729918291753b9ca03064910f",
|
||||
"cmd/go-omni/scaffold/templates/modules-filesHandler.go.tmpl": "426867fbef5b99a85394fa4457dd38b9a194adf4bdfb293384b2fbbc799091da",
|
||||
"cmd/go-omni/scaffold/templates/modules-filesHandler_test.go.tmpl": "9571e39bd0a330739eb1fd7e636cd58961b41b44772b2b49162e41deda98547f",
|
||||
"cmd/go-omni/scaffold/templates/modules-filesService.go.tmpl": "6460ee9a873af45ca6cec779bf53302acfce21499610425a4704c2f179eddb8f",
|
||||
"cmd/go-omni/scaffold/templates/modules-gitignore.tmpl": "2579f2a63ff2962239b92dd841b0d0d26e783d85c9d0100011936c8bcbf5d0d3",
|
||||
"cmd/go-omni/scaffold/templates/modules-main.go.tmpl": "cb8daddd4e12afd238540be7022187c74a548d9e409b3a7f1eaf84a9139218bf",
|
||||
"cmd/go-omni/scaffold/templates/modules-settings.go.tmpl": "91084caaa1fd994dde714f52b242d23e41adb731383b12d74399247c87ac5597",
|
||||
"cmd/go-omni/scaffold/templates/modules-settings_test.go.tmpl": "76e55f8954b7606d7146eb1e965065c521a2b81234a47742ed69a93aac300406",
|
||||
"cmd/go-omni/scaffold/templates/modules-storage.go.tmpl": "a775acf2d2490288a8e5482bb0a8769be6b0a8c9cfcc9bb10b62aabbd05fa0c7",
|
||||
"cmd/go-omni/scaffold/templates/modules-storage_test.go.tmpl": "dacca42d228bd9352948054eb2d071829a8a61d8c6fa24d95ff00fc39a74309e",
|
||||
"cmd/go-omni/scaffold/templates/schema.sql.tmpl": "7c5108f18fc7d8ff75c97afd96fcaa9f8ed026c79c71c5612f55572d73354abb",
|
||||
"cmd/go-omni/scaffold/version.go": "2ae216e676082a26e5778045e20964eb4f9e99a58d4f9a9ff4b559b286837d7a",
|
||||
"database/configOverlay_test.go": "01c9b44fded226494ca12f7d0f41a9ff417d8135d263a5833727c1c028b6b8e3",
|
||||
"database/database.go": "3d8615e1bf58ecdae21558591e745c241e499ba6e85fc07acfa2344e04ce95db",
|
||||
"database/database_test.go": "18eac1e4c6dbd6a09216168839ba3511aac8a38c2ddf6fdd5267f35435b09f67",
|
||||
"database/lifecycle_test.go": "e141b52edfb9867184dedac0e79feed56a5b137acbe64280ad69647653bbea21",
|
||||
"database/migrate/migrate.go": "fd6cd27d2dce5b35ffe80eb5442c47c657b93ffc6545bbcc1ee4651a70a4f80b",
|
||||
"database/migrate/migrate_test.go": "d7ba91eed8cfd97e4ef0741d582f493dd411b65ad3192f05b167f75d9b9dcf90",
|
||||
"examples/userService/api/user.api": "cdbc7f356f336b6265e9c3fc9974952e05cf14001c58b330a826b4bb32f02712",
|
||||
"examples/userService/cmd/server/main.go": "80ba4721f677947b7f2ece21d5f3e89ee0c4d2cc653412d83aef2b3a45bd3ccb",
|
||||
"examples/userService/etc/config.yaml": "e86e4c92659bb5d9114c0428c6ed47e8d35d9f984091a4f399006a9c4de5b9a3",
|
||||
"examples/userService/internal/handler/openapiGen.go": "8ddc60c338630db915b9f074ade776f526eabf60fc99b33e425359fd415c4926",
|
||||
"examples/userService/internal/handler/routesGen.go": "7f45030e7eb9f055c4b4d2ff12ad855d7c726aad4aee63c5b3c3f97559a64257",
|
||||
"examples/userService/internal/handler/user/handlersGen.go": "06f3c2798ff323812ff3eb2d8b933a569af3ce1b86a67b66036374add98c0d7e",
|
||||
"examples/userService/internal/middleware/auth.go": "f12197d01da155ad56a8a44f951c83739cbfca48c3224bd52a7bc25357f05c9f",
|
||||
"examples/userService/internal/middleware/auth_test.go": "6ffdd7c7b2ede7e5791eec0eb1d9105ea45b3a52cc3140fe7a94fdc9b6fb3ec6",
|
||||
"examples/userService/internal/middleware/registryGen.go": "a6122a5453dedc6a4415860108814c50e155128cfe5412b39dd33ce2d01b4b00",
|
||||
"examples/userService/internal/model/errors.go": "f123eace52952321b0665a92a2923514c52c8c3bf13df1065710e9675750f837",
|
||||
"examples/userService/internal/model/user.go": "b391143e7386e169b53e7fed25de1146e8c52f3fa287b12728e8d22b33f386de",
|
||||
"examples/userService/internal/repository/user/mysql.go": "924cae233a68e506e9b0b953529e0ccb13a0e71d24723309383c464e1852b833",
|
||||
"examples/userService/internal/repository/user/repository.go": "2aca07788d8d59831b10ac665882ca8157b20f384115bb90742f235f8352a69d",
|
||||
"examples/userService/internal/repository/user/store.go": "f776832e4f3b26fb889dad53b65742833ddb7f43b7dddc72915ad3fe47ec4d3e",
|
||||
"examples/userService/internal/repository/user/transaction_test.go": "9af4cb3a03b71026b80aa5078ddda4e3c4f72a7ab14bed6c87603a4db2cc2a22",
|
||||
"examples/userService/internal/service/user/createUser.go": "53d0ea7371e10a0bd3f32f57b9bff9b48b5f9a3315218f95a258fa45b81d9368",
|
||||
"examples/userService/internal/service/user/deleteUser.go": "0cd0b038d5a11429de438311980ef19a8f6e28ea0d7cf5ebaaf78858daf3a124",
|
||||
"examples/userService/internal/service/user/exportUser.go": "dac2adb0c9ea43a4af15511ae488afaa6d9c9b351e68e9b8a54f4014d29de14d",
|
||||
"examples/userService/internal/service/user/getUser.go": "a307fa716c70286a2a6c5d5c0a6c35ec6d258c3278e2a7fe86b74b324d7b7283",
|
||||
"examples/userService/internal/service/user/listUsers.go": "f0bf8b9c3a4c4a699112e3493b7fe611e2dd4f6e8a4437106396c47d484f1383",
|
||||
"examples/userService/internal/service/user/service.go": "bf7f27f74b3f4e01877222f9eb6a5b2cc8e119dba8e438081689f18d7a116ae6",
|
||||
"examples/userService/internal/service/user/updateUser.go": "9b0e3e4296c0e0df98956961a928612d9203c0fa09aa71bb0683e430e1133ff0",
|
||||
"examples/userService/internal/servicecontext/context.go": "5527ca07049f5c5f5deffa65e5759494b2e0a77804b629b3ecb1705e7557ee25",
|
||||
"examples/userService/internal/servicecontext/context_test.go": "04d008b6cf5b7894752bc5222abb8f4120f1ebe060034ac55ec9663c1f7bc613",
|
||||
"examples/userService/internal/servicecontext/storage.go": "9402e1ee7a258b2db4b6dbf38fcb0674ad8907fb2a948d47dd8374f78bec444d",
|
||||
"examples/userService/internal/settings/config.go": "721c3744a61a2d2807edcdfa190336901368966a0fb952561d0e00da5730cd3a",
|
||||
"examples/userService/internal/types/typesGen.go": "3ab2ce9ffe467c3ea53ac3d1fec283ecebc87cef57fd592d08dca991fd964876",
|
||||
"examples/userService/migrations/000001_users.down.sql": "64b47d3d2644745a2ba1197b73760e63fe0f2c1d12c193888c4417b3d5abb75e",
|
||||
"examples/userService/migrations/000001_users.up.sql": "c6ea5cb92ee53fe20e43373d084ff360d49921b785602145e55380e4adbee1dc"
|
||||
}
|
||||
}
|
||||
52
performance/apiWorkflowTests.txt
Normal file
52
performance/apiWorkflowTests.txt
Normal file
@@ -0,0 +1,52 @@
|
||||
ok git.yuntuo.hk/k2safe/go-omni 1.368s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/app 2.293s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/audit 1.305s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/auth 1.329s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/cache 1.305s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/cache/redis 1.290s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/cmd/go-omni 1.734s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/cmd/go-omni/apigen 25.935s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/cmd/go-omni/scaffold 38.371s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/config 1.319s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/contract 1.313s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/database 1.291s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/database/migrate 1.308s
|
||||
? 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.354s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/examples/platform 1.397s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/examples/reference 1.521s
|
||||
? 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.300s
|
||||
? git.yuntuo.hk/k2safe/go-omni/examples/reference/service [no test files]
|
||||
ok git.yuntuo.hk/k2safe/go-omni/health 1.336s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/httpc 1.815s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/httpx 1.318s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/internal/perfcheck 1.339s
|
||||
? 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.609s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/metrics 1.307s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/middleware 1.337s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/middleware/redis 1.311s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/openapi 1.332s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/pagination 1.278s
|
||||
? git.yuntuo.hk/k2safe/go-omni/queue [no test files]
|
||||
ok git.yuntuo.hk/k2safe/go-omni/queue/redis 1.292s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/resilience 1.275s
|
||||
? git.yuntuo.hk/k2safe/go-omni/response [no test files]
|
||||
ok git.yuntuo.hk/k2safe/go-omni/storage 1.323s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/storage/local 1.297s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/storage/oss 1.454s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/storage/s3 9.482s
|
||||
? git.yuntuo.hk/k2safe/go-omni/storage/storagetest [no test files]
|
||||
ok git.yuntuo.hk/k2safe/go-omni/task 1.377s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/telemetry 1.330s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/transport 1.338s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/transport/http2 12.651s
|
||||
? git.yuntuo.hk/k2safe/go-omni/transport/internal/routing [no test files]
|
||||
ok git.yuntuo.hk/k2safe/go-omni/transport/native 2.017s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/transport/nethttp 1.325s
|
||||
? git.yuntuo.hk/k2safe/go-omni/transport/transporttest [no test files]
|
||||
? git.yuntuo.hk/k2safe/go-omni/validate [no test files]
|
||||
14
performance/loggingUploadsAcceptance.md
Normal file
14
performance/loggingUploadsAcceptance.md
Normal file
@@ -0,0 +1,14 @@
|
||||
# 日志与上传扩展验收
|
||||
|
||||
2026-09-23,在 macOS arm64 / Go 1.27.1 开发环境完成;真实 S3 测试使用本机 Docker 内 Linux arm64 MinIO。此次未在业务服务器运行测试负载。
|
||||
|
||||
- 全库:`GOMAXPROCS=4 GO_OMNI_SCAFFOLD_INTEGRATION=1 go test -race -p=2 -count=1 -timeout=240s ./...`,37 个有测试的包通过,包含脚手架集成和全部网络适配器。
|
||||
- 收尾新增业务错误堆栈、统一分片 MIME 签名及大小不符契约后,对 logx、middleware、storage 全部子包、config、app 重新运行 race,全部通过。
|
||||
- `go vet ./...`、`go build ./...`、`git diff --check` 通过。
|
||||
- 轮转:并发写入、备份份数、gzip 内容完整性、关闭后不重开;脱敏:嵌套 map/struct/group/LogValuer、循环截断、不修改调用者数据;HTTP:慢请求 WARN、5xx ERROR、panic 堆栈和已提交状态保持。
|
||||
- 上传:Local 签名篡改/超时参数/重复参数/类型伪造/实际大小不符/失败不覆盖;S3/OSS SDK 协议及分片分页;R2 签名参数。
|
||||
- 真实 MinIO:SDK/签名直传、两片合并、分页续传查询、重复取消、声明大小伪造、签名绑定大小和类型(篡改返回 403)、普通对象契约。测试环境最多一个容器,2 CPU、2 GiB、256 pids,network=none,无端口映射;退出后清理。
|
||||
|
||||
真实 S3 的运行命令、源码 SHA-256、镜像 ID、清理状态和日志摘要见 [uploadsLocal.json](uploadsLocal.json),原始输出见 [uploadsLocal.txt](uploadsLocal.txt)。可用 `python3 scripts/verifyUploads.py` 复现(提前准备对应 MinIO 镜像)。
|
||||
|
||||
边界:OSS/R2 未使用云账号实测;HTTP fixture 不验证厂商签名。MinIO 的通过结果不能代替它们的实网验收。本地存储目前提供受限签名上传,不提供持久分片会话。分片实际内容校验、业务授权、对象归属、上传配额和过期分片清理由业务/部署配置。未做生产负载、磁盘耗尽、日志平台采集或云存储故障恢复验收。
|
||||
21
performance/scaffoldModulesAcceptance.md
Normal file
21
performance/scaffoldModulesAcceptance.md
Normal file
@@ -0,0 +1,21 @@
|
||||
# 脚手架模块装配验收
|
||||
|
||||
2026-09-23,本机 macOS arm64 / Go 1.27.1,使用当前本地框架源码。新模板目标版本 v0.7.0-preview 尚未发布,验收使用显式本地 replace。
|
||||
|
||||
完成内容:
|
||||
|
||||
- CLI 可选日志输出 stdout/stderr/file、JSON/text 格式、对象存储 none/local/s3/r2/oss,与 memory/mysql 数据库独立组合。
|
||||
- 生成严格的 YAML/JSON 配置、环境变量覆盖、凭据检查、专用客户端连接池和资源关闭代码。
|
||||
- 用户创建日志、服务端上传、直传链接、临时下载链接和错误处理示例;新增项目测试覆盖配置优先级、关闭幂等性/所有权、关闭后不可重新初始化,以及文件接口行为。
|
||||
- 生成器在写文件前验证参数和渲染所有模板;修复目标目录尚不存在时的 macOS /var 符号链接路径计算;拒绝将新模块模板与旧远程框架版本组合。强制重新生成时不自动删除旧代码,存在不兼容遗留文件会提前拒绝。
|
||||
|
||||
验收结果:
|
||||
|
||||
1. `GO_OMNI_SCAFFOLD_INTEGRATION=1 go test -race -p=2 -count=1 -timeout=240s ./...` 全部通过(37 个有测试的框架包)。其中 10 种数据库/存储组合分别编译并执行生成项目的 race 测试;实际 MySQL 集成用例未提供数据库时跳过。原始输出见 [scaffoldModulesTests.txt](scaffoldModulesTests.txt)。
|
||||
2. `go vet ./...`、`go build ./...`、`git diff --check` 通过。
|
||||
3. `python3 scripts/verifyScaffoldModules.py` 验证四种真实服务组合:stderr/json/nethttp/SIGTERM、stdout/text/native/SIGINT、file/json/native/SIGTERM、file/text/nethttp/SIGINT。全部退出码 0、端口释放。每组验证上传/下载字节、直传、篡改签名 403、认证 401、大小 413、类型 415、非法 key 400、对象缺失 404,以及缺少示例 Token 时启动失败。
|
||||
4. 日志包含业务事件与 requestId,签名入口保留真实状态码,未记录示例 Token 或签名 URL。
|
||||
|
||||
运行结果、模板/生成器源码 SHA-256 和日志摘要见 [scaffoldModulesLocal.json](scaffoldModulesLocal.json),生成项目的测试输出见 [scaffoldModulesLocal.txt](scaffoldModulesLocal.txt)。临时项目、二进制和测试进程已清理。
|
||||
|
||||
边界:本轮真实接口验收使用 Local。S3/R2/OSS 生成项目完成编译、配置/构造检查与基于 Local 的业务接口测试,没有访问云账号;MySQL 组合完成编译,本轮未再次运行真实数据库事务验收。示例共享 Token 授权整个文件模块,业务上线仍应替换认证和对象归属规则;这不构成固定用户/租户上下文。当前改动未推送或打标签。
|
||||
104
performance/scaffoldModulesLocal.json
Normal file
104
performance/scaffoldModulesLocal.json
Normal file
@@ -0,0 +1,104 @@
|
||||
{
|
||||
"status": "passed",
|
||||
"startedAt": "2026-09-23T09:31:52.278033+00:00",
|
||||
"cases": [
|
||||
{
|
||||
"logOutput": "stderr",
|
||||
"logFormat": "json",
|
||||
"transport": "nethttp",
|
||||
"signal": "SIGTERM",
|
||||
"status": "passed",
|
||||
"exitCode": 0,
|
||||
"portReleased": true,
|
||||
"missingTokenRejected": true
|
||||
},
|
||||
{
|
||||
"logOutput": "stdout",
|
||||
"logFormat": "text",
|
||||
"transport": "native",
|
||||
"signal": "SIGINT",
|
||||
"status": "passed",
|
||||
"exitCode": 0,
|
||||
"portReleased": true,
|
||||
"missingTokenRejected": true
|
||||
},
|
||||
{
|
||||
"logOutput": "file",
|
||||
"logFormat": "json",
|
||||
"transport": "native",
|
||||
"signal": "SIGTERM",
|
||||
"status": "passed",
|
||||
"exitCode": 0,
|
||||
"portReleased": true,
|
||||
"missingTokenRejected": true
|
||||
},
|
||||
{
|
||||
"logOutput": "file",
|
||||
"logFormat": "text",
|
||||
"transport": "nethttp",
|
||||
"signal": "SIGINT",
|
||||
"status": "passed",
|
||||
"exitCode": 0,
|
||||
"portReleased": true,
|
||||
"missingTokenRejected": true
|
||||
}
|
||||
],
|
||||
"sourceSha256": {
|
||||
"cmd/go-omni/api.go": "59f3b8b45497a9f560d649ac5e7b622362f5f20edd81251d7dc76f21605fc90a",
|
||||
"cmd/go-omni/api_test.go": "ee68b4b8b0155f4d123135b0706c6d17d8fc90e2bcfc1312aa4f9e7a9da2454b",
|
||||
"cmd/go-omni/apigen/apigen_test.go": "8e7c94795ffbc3ee062756a77cfeb274f3cd1a78f1dbc3b51ec4ceb14f478518",
|
||||
"cmd/go-omni/apigen/compile.go": "6709da0b69e8d10d49a874447e00c93d0a819d8367b2188e9626bd0c7b3baef2",
|
||||
"cmd/go-omni/apigen/generate.go": "373ec9834aa4ed71a5311c1ef40b78dc6c303aa884d7bb16a680058ca751b2bc",
|
||||
"cmd/go-omni/apigen/parse.go": "e85fe261fdec2e3487851e265babd7af8c7f6153694ad6fb73177aac33f8ef95",
|
||||
"cmd/go-omni/apigen/profile.go": "877939398384c44316e5e052d92c4a93fb3b74a6742df2414a0054913f3fca27",
|
||||
"cmd/go-omni/apigen/profile_test.go": "5f3c091da241fe0f8b99ac19e9efd2c3177aea72e63a346f99fecc0f548aad1a",
|
||||
"cmd/go-omni/apigen/templates.go": "9303a2fafe44cb7e763a2c5beb193c16fa0dc0c2dbde4cb6e14f2ba533d3e56e",
|
||||
"cmd/go-omni/apigen/write.go": "1ce3871fd92f638d097c576583c169daa0ce2fa8010dbcd34a8cd7faa314a1a2",
|
||||
"cmd/go-omni/main.go": "6f851d21792a9eb9fcbc5095e8cacb3dcee1c715a3980650c75381f0e46f51a9",
|
||||
"cmd/go-omni/main_test.go": "b8040d2b19a1c86672fe1b1be7fa1bf7f885aece79ded6ffa0cc670887b7136f",
|
||||
"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/apiInfrastructure.go": "7542f6af48345249b84054411c449b950db85fa6c5c60e62620bf8864a1aaff3",
|
||||
"cmd/go-omni/scaffold/moduleProfiles_test.go": "ae9790e5d3549d32fc72739a10a31ea858e5a8f8189cf1f5c1840bf80b3f8ad6",
|
||||
"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": "71b3091b83c3e45ac1981164e8c819c997ad96607d535f1492333370f4872548",
|
||||
"cmd/go-omni/scaffold/scaffold_test.go": "58aab9251b01e394bbc90aeb538ff035dd32c73c0d4815132ac6cbc086527cda",
|
||||
"cmd/go-omni/scaffold/templates/README.md.tmpl": "8ec215775fcafd437480022307fffd2ffe43685bc2b5d328b0c1d58402986e0a",
|
||||
"cmd/go-omni/scaffold/templates/api-context.go.tmpl": "d2d67c3d235c4b1c965364f40f49c441d92764ad7ab8fd6848f56b1028e93b1b",
|
||||
"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": "33fdee3a2c3d98e7ca6a323b5e888a73582f94e327b6c24a34c09bf180db7b3d",
|
||||
"cmd/go-omni/scaffold/templates/internal-servicecontext-context.go.tmpl": "de70ecc4194db8a2da5d65297f452a40b453652cb814cd228ce03d465761c856",
|
||||
"cmd/go-omni/scaffold/templates/modules-README.md.tmpl": "4b84fbc2310b856d86c6fcd9a47d97d2261019c74ea8e0cdbc41229086aa3527",
|
||||
"cmd/go-omni/scaffold/templates/modules-config.yaml.tmpl": "b8734080ae6d533a175bcad946ce2cb55d8bac1729918291753b9ca03064910f",
|
||||
"cmd/go-omni/scaffold/templates/modules-filesHandler.go.tmpl": "426867fbef5b99a85394fa4457dd38b9a194adf4bdfb293384b2fbbc799091da",
|
||||
"cmd/go-omni/scaffold/templates/modules-filesHandler_test.go.tmpl": "9571e39bd0a330739eb1fd7e636cd58961b41b44772b2b49162e41deda98547f",
|
||||
"cmd/go-omni/scaffold/templates/modules-filesService.go.tmpl": "6460ee9a873af45ca6cec779bf53302acfce21499610425a4704c2f179eddb8f",
|
||||
"cmd/go-omni/scaffold/templates/modules-gitignore.tmpl": "2579f2a63ff2962239b92dd841b0d0d26e783d85c9d0100011936c8bcbf5d0d3",
|
||||
"cmd/go-omni/scaffold/templates/modules-main.go.tmpl": "cb8daddd4e12afd238540be7022187c74a548d9e409b3a7f1eaf84a9139218bf",
|
||||
"cmd/go-omni/scaffold/templates/modules-settings.go.tmpl": "91084caaa1fd994dde714f52b242d23e41adb731383b12d74399247c87ac5597",
|
||||
"cmd/go-omni/scaffold/templates/modules-settings_test.go.tmpl": "76e55f8954b7606d7146eb1e965065c521a2b81234a47742ed69a93aac300406",
|
||||
"cmd/go-omni/scaffold/templates/modules-storage.go.tmpl": "a775acf2d2490288a8e5482bb0a8769be6b0a8c9cfcc9bb10b62aabbd05fa0c7",
|
||||
"cmd/go-omni/scaffold/templates/modules-storage_test.go.tmpl": "dacca42d228bd9352948054eb2d071829a8a61d8c6fa24d95ff00fc39a74309e",
|
||||
"cmd/go-omni/scaffold/templates/schema.sql.tmpl": "7c5108f18fc7d8ff75c97afd96fcaa9f8ed026c79c71c5612f55572d73354abb",
|
||||
"cmd/go-omni/scaffold/version.go": "2ae216e676082a26e5778045e20964eb4f9e99a58d4f9a9ff4b559b286837d7a",
|
||||
"config/env.go": "ab01d21b088cfe497d9cadf28916b27f6cff8d788dd7661a9d93408892141b27",
|
||||
"scripts/verifyScaffoldModules.py": "b73f3527e26126b8a7628922fdda0a3ac1cc96c708cc108bfb012c143b0427cb"
|
||||
},
|
||||
"finishedAt": "2026-09-23T09:32:11.031629+00:00",
|
||||
"logSha256": "e26649c11012f44bbbec004a7eb81430ad587ccb4e7817b098e2e09967fabbcc"
|
||||
}
|
||||
32
performance/scaffoldModulesLocal.txt
Normal file
32
performance/scaffoldModulesLocal.txt
Normal file
@@ -0,0 +1,32 @@
|
||||
created GoOmni project /private/var/folders/wm/1sg73x8n7879sp3t6m4jpnrr0000gn/T/goOmniModuleAcceptanceio6u2uka/case0
|
||||
? example.com/moduleAcceptance/cmd/server [no test files]
|
||||
ok example.com/moduleAcceptance/internal/handler 1.313s
|
||||
? example.com/moduleAcceptance/internal/model [no test files]
|
||||
? example.com/moduleAcceptance/internal/repository [no test files]
|
||||
? example.com/moduleAcceptance/internal/service [no test files]
|
||||
ok example.com/moduleAcceptance/internal/servicecontext 1.539s
|
||||
ok example.com/moduleAcceptance/internal/settings 1.305s
|
||||
created GoOmni project /private/var/folders/wm/1sg73x8n7879sp3t6m4jpnrr0000gn/T/goOmniModuleAcceptanceio6u2uka/case1
|
||||
? example.com/moduleAcceptance/cmd/server [no test files]
|
||||
ok example.com/moduleAcceptance/internal/handler 1.371s
|
||||
? example.com/moduleAcceptance/internal/model [no test files]
|
||||
? example.com/moduleAcceptance/internal/repository [no test files]
|
||||
? example.com/moduleAcceptance/internal/service [no test files]
|
||||
ok example.com/moduleAcceptance/internal/servicecontext 1.621s
|
||||
ok example.com/moduleAcceptance/internal/settings 1.298s
|
||||
created GoOmni project /private/var/folders/wm/1sg73x8n7879sp3t6m4jpnrr0000gn/T/goOmniModuleAcceptanceio6u2uka/case2
|
||||
? example.com/moduleAcceptance/cmd/server [no test files]
|
||||
ok example.com/moduleAcceptance/internal/handler 1.327s
|
||||
? example.com/moduleAcceptance/internal/model [no test files]
|
||||
? example.com/moduleAcceptance/internal/repository [no test files]
|
||||
? example.com/moduleAcceptance/internal/service [no test files]
|
||||
ok example.com/moduleAcceptance/internal/servicecontext 1.538s
|
||||
ok example.com/moduleAcceptance/internal/settings 1.320s
|
||||
created GoOmni project /private/var/folders/wm/1sg73x8n7879sp3t6m4jpnrr0000gn/T/goOmniModuleAcceptanceio6u2uka/case3
|
||||
? example.com/moduleAcceptance/cmd/server [no test files]
|
||||
ok example.com/moduleAcceptance/internal/handler 1.318s
|
||||
? example.com/moduleAcceptance/internal/model [no test files]
|
||||
? example.com/moduleAcceptance/internal/repository [no test files]
|
||||
? example.com/moduleAcceptance/internal/service [no test files]
|
||||
ok example.com/moduleAcceptance/internal/servicecontext 1.554s
|
||||
ok example.com/moduleAcceptance/internal/settings 1.312s
|
||||
50
performance/scaffoldModulesTests.txt
Normal file
50
performance/scaffoldModulesTests.txt
Normal file
@@ -0,0 +1,50 @@
|
||||
ok git.yuntuo.hk/k2safe/go-omni 1.486s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/app 2.299s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/audit 1.285s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/auth 1.332s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/cache 1.306s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/cache/redis 1.281s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/cmd/go-omni 1.486s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/cmd/go-omni/scaffold 38.201s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/config 1.548s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/database 1.281s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/database/migrate 1.677s
|
||||
? 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.347s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/examples/platform 1.501s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/examples/reference 1.398s
|
||||
? 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.287s
|
||||
? git.yuntuo.hk/k2safe/go-omni/examples/reference/service [no test files]
|
||||
ok git.yuntuo.hk/k2safe/go-omni/health 1.326s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/httpc 1.399s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/httpx 1.430s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/internal/perfcheck 1.338s
|
||||
? 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.840s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/metrics 1.301s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/middleware 1.357s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/middleware/redis 1.300s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/openapi 1.316s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/pagination 1.307s
|
||||
? git.yuntuo.hk/k2safe/go-omni/queue [no test files]
|
||||
ok git.yuntuo.hk/k2safe/go-omni/queue/redis 1.630s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/resilience 1.305s
|
||||
? git.yuntuo.hk/k2safe/go-omni/response [no test files]
|
||||
ok git.yuntuo.hk/k2safe/go-omni/storage 1.322s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/storage/local 1.351s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/storage/oss 1.439s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/storage/s3 9.596s
|
||||
? git.yuntuo.hk/k2safe/go-omni/storage/storagetest [no test files]
|
||||
ok git.yuntuo.hk/k2safe/go-omni/task 1.563s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/telemetry 1.311s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/transport 1.331s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/transport/http2 12.897s
|
||||
? git.yuntuo.hk/k2safe/go-omni/transport/internal/routing [no test files]
|
||||
ok git.yuntuo.hk/k2safe/go-omni/transport/native 2.001s
|
||||
ok git.yuntuo.hk/k2safe/go-omni/transport/nethttp 1.318s
|
||||
? git.yuntuo.hk/k2safe/go-omni/transport/transporttest [no test files]
|
||||
? git.yuntuo.hk/k2safe/go-omni/validate [no test files]
|
||||
104
performance/uploadsLocal.json
Normal file
104
performance/uploadsLocal.json
Normal file
@@ -0,0 +1,104 @@
|
||||
{
|
||||
"status": "passed",
|
||||
"startedAt": "2026-09-23T07:35:47.522157+00:00",
|
||||
"architecture": "arm64",
|
||||
"goVersion": "go version go1.27.1 darwin/arm64",
|
||||
"image": "quay.io/minio/minio:RELEASE.2025-09-07T16-13-09Z",
|
||||
"imageId": "sha256:8f08aee614800a237906bd48114d733e5ac5bfac4ccdf731f141b0e880d7a253",
|
||||
"sourceSha256": {
|
||||
"go.mod": "2623f51aa8a352a8f4a8d42a7b2996d22f4bd8c1c76e432745bd9076413fa28c",
|
||||
"go.sum": "9cdc3287be5a1ad128023b25f22d4f1dff968c06c72d5338b444f8140cd7f968",
|
||||
"internal/storagefixture/multipart.go": "da9ec938b3bdb872e10e4f874b6a0224121c14a631dcf4e86d7ebbc1cd34a770",
|
||||
"internal/storagefixture/server.go": "defacc905246a643faf5371e437f9ce458f05461e0a922766034d1f9ffdaf003",
|
||||
"storage/local/local.go": "ce5fac2e54680b96db3e7dfd9a8d065888f246c5607882607d79c302ee3d231b",
|
||||
"storage/local/local_test.go": "3a2241840968df8e37fd67169c3ef708228449e81f65aff908c8b60d49434dc0",
|
||||
"storage/multipart.go": "3b718ebe6da681c89a3f797892c88e7acb15c295df2376d64ac35da0976ed69d",
|
||||
"storage/multipart_test.go": "4053f680f7795db2a6b4aa23590b3669eec7a609dd92c4a1e20891a5299274ee",
|
||||
"storage/oss/oss.go": "4216ce9f3fe3ac5418a5b809db3cef7e99dcca72a25a2a12301f5897cda85dd5",
|
||||
"storage/oss/oss_test.go": "555a954010b1218804dc7951fc75e42eae24eba9a99c0871f5ba787f3fc87d45",
|
||||
"storage/oss/upload.go": "556129611f9e5549cac8a36b4026bfb19c112a295b55192579f9ac116e20626f",
|
||||
"storage/oss/upload_test.go": "08eb0ed157f3743288d781f61d4d2b7bfe77852a8259c5e598c719d35889409e",
|
||||
"storage/s3/config.go": "626ec6a2c0b06c95ee7eb7aa0832b190cfcdeb8a127b6b89e99204040bc3b041",
|
||||
"storage/s3/s3.go": "016bef5948e97f3d043d2e858716f1c02d9f27c4e02802bdc1be3860116f4b6c",
|
||||
"storage/s3/s3_test.go": "f82af6bef236b293910c8d7504cb4e91717a729f5be92f089838ff791b28576c",
|
||||
"storage/s3/upload.go": "3ce0b3626249ffe7a041606d6a9481743af8a0d4868fadea20ed3ed44ee0c765",
|
||||
"storage/s3/upload_test.go": "a41fdbd100d9c79a3606c5942f98017afe26d841b251d96e979df87d0af93867",
|
||||
"storage/signed.go": "aee2d98bd91fc8f55d2efd7bb40c57e3bcbc1f194cc59567699660cf954b986a",
|
||||
"storage/signedUpload.go": "a8d31bcbbad64796f04611e69271e94d917c9bcd5aeabd7a97ea155b0093c814",
|
||||
"storage/signed_test.go": "eaffd40894018814e976477f96cf0fbaecfa1987caad78830d9fc8e96995882f",
|
||||
"storage/storage.go": "cb670872f01cf1d7b4ebf21cec9fc6f52ad93bfdf523b2f28bbb8d9c7fe39a6c",
|
||||
"storage/storagetest/contract.go": "e7ad7242102437882269d4066462059d7974586b36a82d18639eca10fd932be9",
|
||||
"storage/storagetest/uploads.go": "9b66f86dd94ccdf30c7d603d432bc2a55956608898e46c1274fa27d16fa1a969",
|
||||
"storage/upload.go": "9ff2930ba389163acc8063b51107c09a60290609ba384de8004c498ce09f20a1",
|
||||
"storage/upload_test.go": "12b60419807ed64b89e30861674e19abee7b0b7bb0e8ec9ac5b3aa2e0710a1da"
|
||||
},
|
||||
"commands": [
|
||||
[
|
||||
"go",
|
||||
"test",
|
||||
"-p=2",
|
||||
"-c",
|
||||
"-o",
|
||||
"/var/folders/wm/1sg73x8n7879sp3t6m4jpnrr0000gn/T/goOmniUploadq1j27rc4/s3.test",
|
||||
"./storage/s3"
|
||||
],
|
||||
[
|
||||
"docker",
|
||||
"run",
|
||||
"--rm",
|
||||
"--name",
|
||||
"go-omni-upload-647d8574e00d",
|
||||
"--platform",
|
||||
"linux/arm64",
|
||||
"--cpus",
|
||||
"2",
|
||||
"--memory",
|
||||
"2048m",
|
||||
"--memory-swap",
|
||||
"2048m",
|
||||
"--pids-limit",
|
||||
"256",
|
||||
"--network",
|
||||
"none",
|
||||
"--read-only",
|
||||
"--cap-drop",
|
||||
"ALL",
|
||||
"--security-opt",
|
||||
"no-new-privileges",
|
||||
"--user",
|
||||
"1000:1000",
|
||||
"--tmpfs",
|
||||
"/tmp:rw,nosuid,noexec,size=64m,mode=1777",
|
||||
"--tmpfs",
|
||||
"/data:rw,nosuid,noexec,size=128m,mode=1777",
|
||||
"-v",
|
||||
"/var/folders/wm/1sg73x8n7879sp3t6m4jpnrr0000gn/T/goOmniUploadq1j27rc4:/test:ro",
|
||||
"-e",
|
||||
"GOMAXPROCS=2",
|
||||
"-e",
|
||||
"MINIO_ROOT_USER=goOmniTest",
|
||||
"-e",
|
||||
"MINIO_ROOT_PASSWORD=goOmniTestSecret",
|
||||
"-e",
|
||||
"GO_OMNI_S3_TEST_ADDR=127.0.0.1:9000",
|
||||
"--entrypoint",
|
||||
"sh",
|
||||
"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=60s || { cat /tmp/minio.log; exit 1; }\n"
|
||||
]
|
||||
],
|
||||
"containerLimits": {
|
||||
"cpus": 2,
|
||||
"memoryBytes": 2147483648,
|
||||
"pids": 256,
|
||||
"network": "none"
|
||||
},
|
||||
"notes": [
|
||||
"MinIO verifies S3 signatures; OSS/R2 real cloud accounts are not exercised."
|
||||
],
|
||||
"preExistingContainersStillRunning": true,
|
||||
"cleanedContainer": "go-omni-upload-647d8574e00d",
|
||||
"finishedAt": "2026-09-23T07:35:58.127622+00:00",
|
||||
"logSha256": "3cf85670fe5ad6de561d4f82049fd8a3f38c56aeb30cb4e868138fc3d886f40f"
|
||||
}
|
||||
7
performance/uploadsLocal.txt
Normal file
7
performance/uploadsLocal.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
minio version RELEASE.2025-09-07T16-13-09Z (commit-id=07c3a429bfed433e49018cb0f78a52145d4bedeb)
|
||||
Runtime: go1.24.6 linux/arm64
|
||||
License: GNU AGPLv3 - https://www.gnu.org/licenses/agpl-3.0.html
|
||||
Copyright: 2015-2025 MinIO, Inc.
|
||||
=== RUN TestS3Integration
|
||||
--- PASS: TestS3Integration (9.06s)
|
||||
PASS
|
||||
Reference in New Issue
Block a user