feat: integrate performance upgrade and agent inspection tooling
Validate ShrinkSDK Workspace / catalog (push) Successful in 5s
Validate ShrinkSDK Workspace / unity (push) Successful in 3m20s

This commit is contained in:
2026-09-29 10:16:02 +08:00
parent f92105c97d
commit 08246ddb01
114 changed files with 7135 additions and 87 deletions
+80
View File
@@ -0,0 +1,80 @@
# 性能与跨宿主验收 — 2026-09-28 UTC
本次为本地工作区验收,不代表远程发布、生产容量承诺或所有后端的性能保证。原始测量时间保留在 JSON/XML 中;Windows 本地显示日期可能为 9 月 29 日。
## 方法与证据边界
- Windows x64;Unity 2022.3.62f3 的实际 Standalone Player,而非用 EditMode 冒充 Player;另有 .NET 8.0.31、.NET 10 和 Godot 4.6.3 Mono 的实际运行。
- 网络矩阵:64 B/1 KB/32 KB 负载参数,1/32/256 会话;RPC、广播、慢消费者、突发队列。Loopback 会话不是 OS socket;TCP 文件是实际本机 socket,且 RPC 采用串行往返采样,不等于高并发容量压测。
- Context:10/100/1000 组件依赖链,10,000 次创建退役;旧实现来自 Context 子模块提交 b93f3e61223e7572588b67c0d3935073817f0da6,不是重新编写的假想基线。
- 存档:100 KB/1 MB/10 MB,前台/后台编码;.NET 每组合 10 次并覆盖加密,Player 记录真实阶段耗时与采集线程。输入主要为字符串快照,不能推断复杂游戏对象的采集成本。
- 单机开发环境、有限样本,非隔离实验机;p99 易受 JIT、GC、系统调度影响。没有可靠的多轮置信区间,不将小幅波动称为普遍提升。
- Unity 的 GC.GetAllocatedBytesForCurrentThread 对已知分配返回零,已弃用该结果。Player 改用经已知数组分配校准的 GC.Alloc 事件计数;事件次数不是 B/op。独立 .NET 的字节计数与 Player 分开报告。
原始数据位于 [Data/2026-09-28](Data/2026-09-28/);Player 完整输出同时保存在 XML 与 player-output.txt。工具、测试源代码保留在 Tools/AgentSupport 与 Assets/AgentSupportTests。
## 已量化的核心变化
### Context(.NET 8)
| 组件数 | 旧诊断 p95 µs | 新诊断 p95 µs | 旧 B/op | 新 B/op |
|---:|---:|---:|---:|---:|
| 10 | 9.4 | 11.7 | 10,456 | 7,312 |
| 100 | 538.2 | 116.9 | 108,016 | 73,456 |
| 1000 | 7,426.4 | 548.3 | 1,083,616 | 735,328 |
大规模诊断通过按依赖键访问 provider 候选索引获益;10 个组件的 p95 本轮反而略高,不能宣称所有规模都更快。10,000 次退役后旧运行时持有 10,000 个 fiber,新运行时为 0,诊断历史有界 64。弱引用测试验证实例可回收;整进程 GC 差值可能为负,不将其解读为精确节省字节数。
深链生命周期改为迭代队列展开,避免 1000 层同步完成/撤回造成栈溢出;不改变依赖排空与效应撤回顺序。
### 网络封装(.NET 8)
| 负载参数 | 旧 JSON 外封装 B/op | 新 v2 外封装 B/op |
|---:|---:|---:|
| 64 B | 3,504 | 32 |
| 1 KB | 10,560 | 32 |
| 32 KB | 230,328 | 32 |
这里只比较已经编码的消息体如何封装,不是端到端零分配。新封装取消外层 JSON/Base64,消息直接写入池化 buffer;仍有 writer 对象、消息反序列化、排队和 transport 的独立成本。JSON 与生成式 MessagePack 的完整消息编码对照见原始 rows,不能套用此表的 32 B。
队列突发测试输入 10,000 个显式可替换状态,32 个 session 分区最终保留 32 项、32 KB,返回 9,968 次 Replaced;一次 4 KB budget 泵送完成 4 项。可靠操作不使用这种替换机制,满队列显式拒绝。
### 实际 TCP 与后端选择
256 个本机 TCP 连接、1 KB、256 次串行 RPC 往返:
| 运行时 | p50 µs | p95 µs | p99 µs | ops/s |
|---|---:|---:|---:|---:|
| .NET 8 | 99.3 | 258.9 | 355.1 | 6,911 |
| .NET 10 | 88.4 | 250.8 | 384.3 | 7,392 |
其他参数组合有升有降;本轮未证明目标场景稳定达到 15% 收益,因此不引入新的默认 .NET 10 专属服务端依赖。Pipelines 仅有内存 buffer roundtrip 微实验,未实现等价 socket 后端对照,不足以采纳。共享运行时继续 netstandard2.1。
TCP 慢消费者测试证明有界队列和拒绝反馈,不证明业务消费成功:该突发负载使用 RPC 消息的一次性发送路径,记录中存在 DispatchMissCount;不能将该行视为完整 handler 吞吐测试。可靠队列行为、会话隔离、取消和故障另由功能测试验证。KCP 未作独立吞吐结论。
### EventBus 与存档
.NET 8 同步 Post、同步完成的异步 Post 为 0 B/op;注册/撤回 224 B/op,按需绑定诊断 120 B/op。同步路径的捕获闭包已移出快路径;Unity 的结构体事件空值检查另外增加值类型短路,避免 Mono 装箱。
校准后的 Player 实测:独立 Bus 10,000 次同步发布为 0 次分配事件;当前默认 Bus 为 10,000 次分配事件。修复值类型空值检查前默认通道是 20,000 次,不能将早先字节 API 的零值作为基线。
默认全局 Bus 可能带网络桥或诊断观察器;接口观察器需要结构体装箱,不能把独立 Bus 的零分配结果扩大到所有配置。Player 同时测量默认与独立通道,并为引用类型空值保留异常检查。
存档采集仍在调用线程,后台开关仅移动脱离宿主对象的快照编码与加密。示例 .NET 8 的 10 MB 未加密平均编码为前台约 7.68 ms、后台约 8.21 ms;主要收益是主线程工作转移,而非宣称总保存时间必然缩短。Player 的冷启动与各阶段实测见 player-output.txt;未隐藏首轮高耗时。格式、原子落盘、取消时备份保留及损坏回退均有测试。
## 复现
在已还原依赖的仓库运行:
~~~powershell
pwsh Tools/AgentSupport/Benchmarks/Prepare-Baseline.ps1
dotnet run --project Tools/AgentSupport/Benchmarks -c Release -f net8.0 -- Artifacts/AgentSupport/benchmark-net8.json
dotnet run --project Tools/AgentSupport/Benchmarks -c Release -f net10.0 -- Artifacts/AgentSupport/benchmark-net10.json
dotnet run --project Tools/AgentSupport/Benchmarks -c Release -f net8.0 -- --tcp Artifacts/AgentSupport/tcp-net8.json
dotnet test Tools/AgentSupport/RuntimeTests
dotnet test Tools/AgentSupport/Shrink.Inspect.Tests
~~~
Unity 用 TestRunner 的 StandaloneWindows64 Player 运行 ShrinkSDK.AgentSupport.PlayerTests;Editor 辅助入口 PlayerAcceptance.Run() 将本次结果保存到 Artifacts/AgentSupport/unity-player-results.xml。基线脚本读取子模块 HEAD:以后 HEAD 前进时,应显式使用上述旧提交重建对照,不把新的 HEAD 当成本报告基线。
最终功能验收、消费工程已知失败和导航覆盖范围见 [AgentSupportAcceptance](../AgentSupportAcceptance.md);协议和回退见 [迁移说明](../NetworkV2Migration.md)。
@@ -0,0 +1,18 @@
# 本地验收原始证据
JSON/XML 内保留各次采集时间,未把编辑器微基准改名为 Player 结果。
- benchmark-net8/net10:封装、消息编码、Loopback、Context、EventBus、存档阶段和实验性 Pipelines。
- tcp-net8/net10:实际本机 socket,串行 RPC 往返;慢消费者行的 DispatchMissCount 见上级报告限制。
- unity-player-results.xml、player-output.txt:实际 Windows Player 的 10 项测试和已校准分配事件;不是字节分配计数。
- unity-all-editmode-results.json:SDK 全量 226 项 EditMode 通过。
- runtime-tests-final.log、cli-tests-final.log:64/12 项独立回归。
- godot-run-final.log、nuget-consumer-final.log:实际跨宿主与隔离包消费运行。
- justany-tests.json:83 项定向业务测试,80 通过/3 失败,保留失败原因。
- justany-messagepack-results.json:Unity 生成 formatter 对 .NET golden frame 的互通。
- justany-runtime.json、justany-installed.json:实际应用状态和已注册包路径/版本。
- package-validation.json:24 包本地图、22 包安装比较;20 个 NuGet.Config.meta 由消费项目 NuGetForUnity 修改导入标签/平台设置,GUID 相同,其他 1053 个文件一致。
- waiting-query.json:当时匹配构建的缺失 provider 查询产物;不是当前实时状态。
- sha256.json:上述原始文件的摘要;用于校验证据文件,不充当各基准构建的代码提交标识。
consumer-runtime-query.json 是最后一次实际宿主导出后立即查询的 route 链,包含 5 条 runtime-bound 关系;justany-play-errors.json 和 justany-compilation.json 记录该次运行后的检查。
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,4 @@
D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\Shrink.Inspect.Tests\bin\Debug\net8.0\Shrink.Inspect.Tests.dll (.NETCoreApp,Version=v8.0)的测试运行
总共 1 个测试文件与指定模式相匹配。
已通过! - 失败: 0,通过: 12,已跳过: 0,总计: 12,持续时间: 4 s - Shrink.Inspect.Tests.dll (net8.0)
@@ -0,0 +1,174 @@
{
"success": true,
"formatVersion": 1,
"toolVersion": "0.1.2.0",
"command": "flow",
"query": "route:command/execute",
"buildId": "793d92f10d38ad8ae6f45cd7365d657b9bc73274c194f761250fb1b98e58d56f",
"offset": 0,
"limit": 20,
"nextOffset": null,
"coverage": [
"SeedsKey.Game: incomplete compilation: CS0117 “EndlessSnapshotResolver”未包含“Instance”的定义",
"SeedsKey.ShrinkSDK.Tests: incomplete compilation: CS0117 “Resolver”未包含“Instance”的定义",
"Installed ShrinkSDK package sources are included; other external packages are reference-only.",
"Snapshot: Default Context and named EventBus instances only; host-owned instances require CaptureHostState registration.",
"Snapshot: Endless multiplayer uses its own session/protocol; SDK Network bindings do not describe that custom channel."
],
"coverageTruncated": false,
"semanticCoverage": {
"incompleteCount": 10,
"examples": [
"ShrinkInspection",
"com.cammin.ldtkunity",
"com.esotericsoftware.spine.spine-unity",
"vHierarchy",
"Scripts"
]
},
"validation": [],
"total": 14,
"truncated": false,
"items": [
{
"From": "route:command/execute",
"To": "type:ShrinkCommand.Integration.ShrinkNetworkCommandRequest",
"Kind": "message",
"Evidence": "static",
"Location": {
"File": "D:\\UnityBuilds\\justanyproject\\Library\\PackageCache\\com.cneicy.shrink-command-integration-network@c9fc19bad75e\\ShrinkNetworkCommandContracts.cs",
"Line": 5
}
},
{
"From": "route:command/execute_response",
"To": "type:ShrinkCommand.Integration.ShrinkNetworkCommandResponse",
"Kind": "message",
"Evidence": "static",
"Location": {
"File": "D:\\UnityBuilds\\justanyproject\\Library\\PackageCache\\com.cneicy.shrink-command-integration-network@c9fc19bad75e\\ShrinkNetworkCommandContracts.cs",
"Line": 13
}
},
{
"From": "route:command/execute",
"To": "type:ShrinkCommand.Integration.ShrinkNetworkCommandRequest",
"Kind": "message [seedskey-network]",
"Evidence": "runtime-bound",
"Location": {
"File": "D:\\UnityBuilds\\justanyproject\\Artifacts\\Inspection\\runtime.json",
"Line": 1
}
},
{
"From": "route:command/execute_response",
"To": "type:ShrinkCommand.Integration.ShrinkNetworkCommandResponse",
"Kind": "message [seedskey-network]",
"Evidence": "runtime-bound",
"Location": {
"File": "D:\\UnityBuilds\\justanyproject\\Artifacts\\Inspection\\runtime.json",
"Line": 1
}
},
{
"From": "type:ShrinkCommand.Integration.ShrinkNetworkCommandRequest",
"To": "M:ShrinkCommand.Integration.ShrinkNetworkCommandBridge.RegisterService(ShrinkNetwork.ShrinkNetworkService,ShrinkCommand.ShrinkCommandService,ShrinkCommand.Integration.ShrinkNetworkCommandBridgeOptions)",
"Kind": "registers",
"Evidence": "candidate",
"Location": {
"File": "D:\\UnityBuilds\\justanyproject\\Library\\PackageCache\\com.cneicy.shrink-command-integration-network@c9fc19bad75e\\ShrinkNetworkCommandBridge.cs",
"Line": 38
}
},
{
"From": "type:ShrinkCommand.Integration.ShrinkNetworkCommandRequest",
"To": "M:ShrinkCommand.Integration.ShrinkNetworkCommandBridge.(ShrinkNetwork.ShrinkNetworkContext,ShrinkCommand.Integration.ShrinkNetworkCommandRequest)",
"Kind": "handler",
"Evidence": "candidate",
"Location": {
"File": "D:\\UnityBuilds\\justanyproject\\Library\\PackageCache\\com.cneicy.shrink-command-integration-network@c9fc19bad75e\\ShrinkNetworkCommandBridge.cs",
"Line": 39
}
},
{
"From": "type:ShrinkCommand.Integration.ShrinkNetworkCommandRequest",
"To": "M:ShrinkCommand.Integration.ShrinkNetworkCommandBridge.HandleExecuteAsync(ShrinkCommand.ShrinkCommandService,ShrinkCommand.Integration.ShrinkNetworkCommandBridgeOptions,ShrinkNetwork.ShrinkNetworkContext,ShrinkCommand.Integration.ShrinkNetworkCommandRequest)",
"Kind": "handler-forward",
"Evidence": "candidate",
"Location": {
"File": "D:\\UnityBuilds\\justanyproject\\Library\\PackageCache\\com.cneicy.shrink-command-integration-network@c9fc19bad75e\\ShrinkNetworkCommandBridge.cs",
"Line": 39
}
},
{
"From": "T:ShrinkCommand.Integration.ShrinkNetworkCommandRequest",
"To": "type:ShrinkCommand.Integration.ShrinkNetworkCommandRequest",
"Kind": "declares",
"Evidence": "static",
"Location": {
"File": "D:\\UnityBuilds\\justanyproject\\Library\\PackageCache\\com.cneicy.shrink-command-integration-network@c9fc19bad75e\\ShrinkNetworkCommandContracts.cs",
"Line": 5
}
},
{
"From": "opcode:1501",
"To": "type:ShrinkCommand.Integration.ShrinkNetworkCommandRequest",
"Kind": "message",
"Evidence": "static",
"Location": {
"File": "D:\\UnityBuilds\\justanyproject\\Library\\PackageCache\\com.cneicy.shrink-command-integration-network@c9fc19bad75e\\ShrinkNetworkCommandContracts.cs",
"Line": 5
}
},
{
"From": "T:ShrinkCommand.Integration.ShrinkNetworkCommandResponse",
"To": "type:ShrinkCommand.Integration.ShrinkNetworkCommandResponse",
"Kind": "declares",
"Evidence": "static",
"Location": {
"File": "D:\\UnityBuilds\\justanyproject\\Library\\PackageCache\\com.cneicy.shrink-command-integration-network@c9fc19bad75e\\ShrinkNetworkCommandContracts.cs",
"Line": 13
}
},
{
"From": "opcode:1502",
"To": "type:ShrinkCommand.Integration.ShrinkNetworkCommandResponse",
"Kind": "message",
"Evidence": "static",
"Location": {
"File": "D:\\UnityBuilds\\justanyproject\\Library\\PackageCache\\com.cneicy.shrink-command-integration-network@c9fc19bad75e\\ShrinkNetworkCommandContracts.cs",
"Line": 13
}
},
{
"From": "opcode:1501",
"To": "type:ShrinkCommand.Integration.ShrinkNetworkCommandRequest",
"Kind": "message [seedskey-network]",
"Evidence": "runtime-bound",
"Location": {
"File": "D:\\UnityBuilds\\justanyproject\\Artifacts\\Inspection\\runtime.json",
"Line": 1
}
},
{
"From": "opcode:1502",
"To": "type:ShrinkCommand.Integration.ShrinkNetworkCommandResponse",
"Kind": "message [seedskey-network]",
"Evidence": "runtime-bound",
"Location": {
"File": "D:\\UnityBuilds\\justanyproject\\Artifacts\\Inspection\\runtime.json",
"Line": 1
}
},
{
"From": "type:ShrinkCommand.Integration.ShrinkNetworkCommandRequest",
"To": "M:ShrinkCommand.Integration.ShrinkNetworkCommandBridge.<>c__DisplayClass3_0.<RegisterService>b__0(ShrinkNetwork.ShrinkNetworkContext,ShrinkCommand.Integration.ShrinkNetworkCommandRequest)",
"Kind": "handler [seedskey-network]",
"Evidence": "runtime-bound",
"Location": {
"File": "D:\\UnityBuilds\\justanyproject\\Artifacts\\Inspection\\runtime.json",
"Line": 1
}
}
]
}
@@ -0,0 +1,6 @@
Godot Engine v4.6.3.stable.mono.official.7d41c59c4 - https://godotengine.org
[ShrinkDataSaver] Runtime initialized. Root: C:/Users/im/AppData/Roaming/Godot/app_userdata/ShrinkSDK Godot Sample/
[ShrinkDataSaver] 槽位 0 已保存。(1 个模块)
[ShrinkDataSaver] 槽位 0 已加载。(v1, 1 个模块)
SHRINK_GODOT_SMOKE_PASS CodeGen=0.1.0 DataSaver=42
@@ -0,0 +1 @@
{"success":true,"message":"No compilation errors detected."}
@@ -0,0 +1 @@
{"success":true,"message":"Command executed.","data":{"compiler":"Roslyn","logs":[],"created":[],"modified":[],"destroyed":[],"returnValue":{"root":"D:/UnityBuilds/justanyproject/Assets","packages":[{"name":"com.cneicy.shrink-app-starter-basic","version":"0.3.7","resolvedPath":"D:\\UnityBuilds\\justanyproject\\Library\\PackageCache\\com.cneicy.shrink-app-starter-basic@825861e850fb"},{"name":"com.cneicy.shrink-context-eventbus-adapter","version":"0.2.4","resolvedPath":"D:\\UnityBuilds\\justanyproject\\Library\\PackageCache\\com.cneicy.shrink-context-eventbus-adapter@d40b7bbb3332"},{"name":"com.cneicy.shrink-mod-framework","version":"0.3.6","resolvedPath":"D:\\UnityBuilds\\justanyproject\\Library\\PackageCache\\com.cneicy.shrink-mod-framework@bc48d592447c"},{"name":"com.cneicy.shrink-tutorial","version":"0.2.0","resolvedPath":"D:\\UnityBuilds\\justanyproject\\Library\\PackageCache\\com.cneicy.shrink-tutorial@6a0eb37e7cc8"},{"name":"com.cneicy.shrink-app-core","version":"0.2.3","resolvedPath":"D:\\UnityBuilds\\justanyproject\\Library\\PackageCache\\com.cneicy.shrink-app-core@5daf24a2b6e1"},{"name":"com.cneicy.shrink-command","version":"0.4.2","resolvedPath":"D:\\UnityBuilds\\justanyproject\\Library\\PackageCache\\com.cneicy.shrink-command@1de427034e91"},{"name":"com.cneicy.shrink-command-integration-app","version":"0.2.5","resolvedPath":"D:\\UnityBuilds\\justanyproject\\Library\\PackageCache\\com.cneicy.shrink-command-integration-app@9d3134f4b8d1"},{"name":"com.cneicy.shrink-command-integration-eventbus","version":"0.2.5","resolvedPath":"D:\\UnityBuilds\\justanyproject\\Library\\PackageCache\\com.cneicy.shrink-command-integration-eventbus@d9cc18d67d43"},{"name":"com.cneicy.shrink-command-integration-network","version":"0.2.5","resolvedPath":"D:\\UnityBuilds\\justanyproject\\Library\\PackageCache\\com.cneicy.shrink-command-integration-network@c9fc19bad75e"},{"name":"com.cneicy.shrink-context-app-adapter","version":"0.2.4","resolvedPath":"D:\\UnityBuilds\\justanyproject\\Library\\PackageCache\\com.cneicy.shrink-context-app-adapter@ec1aa00eb681"},{"name":"com.cneicy.shrink-context-core","version":"0.3.0","resolvedPath":"D:\\UnityBuilds\\justanyproject\\Library\\PackageCache\\com.cneicy.shrink-context-core@5fbc0d91d89d"},{"name":"com.cneicy.shrink-datasaver","version":"2.4.0","resolvedPath":"D:\\UnityBuilds\\justanyproject\\Library\\PackageCache\\com.cneicy.shrink-datasaver@d34bd599c3bf"},{"name":"com.cneicy.shrink-datasaver-integration-app","version":"0.2.5","resolvedPath":"D:\\UnityBuilds\\justanyproject\\Library\\PackageCache\\com.cneicy.shrink-datasaver-integration-app@a8252bd56933"},{"name":"com.cneicy.shrink-datasaver-integration-eventbus","version":"2.2.5","resolvedPath":"D:\\UnityBuilds\\justanyproject\\Library\\PackageCache\\com.cneicy.shrink-datasaver-integration-eventbus@580e3f7efbf8"},{"name":"com.cneicy.shrink-eventbus","version":"2.2.2","resolvedPath":"D:\\UnityBuilds\\justanyproject\\Library\\PackageCache\\com.cneicy.shrink-eventbus@d07f074f8df0"},{"name":"com.cneicy.shrink-inspection","version":"0.1.0","resolvedPath":"D:\\UnityBuilds\\justanyproject\\Library\\PackageCache\\com.cneicy.shrink-inspection@149d402d6a43"},{"name":"com.cneicy.shrink-network","version":"0.4.2","resolvedPath":"D:\\UnityBuilds\\justanyproject\\Library\\PackageCache\\com.cneicy.shrink-network@7ed4deb7650f"},{"name":"com.cneicy.shrink-network-integration-app","version":"0.2.5","resolvedPath":"D:\\UnityBuilds\\justanyproject\\Library\\PackageCache\\com.cneicy.shrink-network-integration-app@5988bc288b65"},{"name":"com.cneicy.shrink-network-integration-eventbus","version":"0.2.5","resolvedPath":"D:\\UnityBuilds\\justanyproject\\Library\\PackageCache\\com.cneicy.shrink-network-integration-eventbus@d41d8cd98f00"},{"name":"com.cneicy.shrink-runtime-abstractions","version":"0.1.0","resolvedPath":"D:\\UnityBuilds\\justanyproject\\Library\\PackageCache\\com.cneicy.shrink-runtime-abstractions@380b2a2dc79a"},{"name":"com.cneicy.shrink-shared-codegen","version":"0.2.1","resolvedPath":"D:\\UnityBuilds\\justanyproject\\Library\\PackageCache\\com.cneicy.shrink-shared-codegen@76b281b9f724"},{"name":"com.cneicy.shrink-network-messagepack","version":"0.1.0","resolvedPath":"D:\\UnityBuilds\\justanyproject\\Library\\PackageCache\\com.cneicy.shrink-network-messagepack@b1d0daaa690c"}]}}}
@@ -0,0 +1 @@
{"success":true,"message":"Test job finished.","data":{"jobId":"7b421e25-0cda-4fda-b68e-ad7638a45f84","status":"finished","mode":"PlayMode","startedAt":"2026-09-29 07:04:55","lastActivityAt":"2026-09-29 07:05:03","testsCompleted":1,"hasFilters":true,"finishedAt":"2026-09-29 07:05:03","resultState":"Passed","passCount":1,"failCount":0,"skipCount":0,"inconclusiveCount":0,"totalTests":1,"durationSeconds":0.08,"failures":[]}}
@@ -0,0 +1 @@
{"success":true,"message":"No error entries found in cached logs from the last 120 second(s)"}
@@ -0,0 +1 @@
{"success":true,"message":"Command executed.","data":{"compiler":"Roslyn","logs":[],"created":[],"modified":[],"destroyed":[],"returnValue":{"root":"D:/UnityBuilds/justanyproject/Assets","playing":true,"scene":"Assets/Scenes/MainMenu.unity","fibers":[{"Name":"seedskey.app-services","Status":"Active","Retired":false,"ErrorType":null},{"Name":"seedskey.game-content","Status":"Active","Retired":false,"ErrorType":null},{"Name":"shrink.command","Status":"Active","Retired":false,"ErrorType":null},{"Name":"shrink.datasaver","Status":"Active","Retired":false,"ErrorType":null},{"Name":"shrink.integration.command-eventbus","Status":"Active","Retired":false,"ErrorType":null},{"Name":"shrink.integration.command-network","Status":"Active","Retired":false,"ErrorType":null},{"Name":"shrink.integration.datasaver-eventbus","Status":"Active","Retired":false,"ErrorType":null},{"Name":"shrink.integration.network-eventbus","Status":"Active","Retired":false,"ErrorType":null},{"Name":"shrink.network","Status":"Active","Retired":false,"ErrorType":null}]}}}
@@ -0,0 +1 @@
{"success":true,"message":"Test job finished.","data":{"jobId":"27800c26-885f-4d33-81fe-2f8f79add11b","status":"finished","mode":"EditMode","startedAt":"2026-09-29 06:02:01","lastActivityAt":"2026-09-29 06:02:05","testsCompleted":83,"hasFilters":true,"finishedAt":"2026-09-29 06:02:05","resultState":"Failed(Child)","passCount":80,"failCount":3,"skipCount":0,"inconclusiveCount":0,"totalTests":83,"durationSeconds":1.5,"failures":[{"test":"Tests.EditMode.ModSpellApiEditModeTests.RegisteredCodeModSpellBecomesCatalogItemAndUsesCustomFactory","message":"System.NotSupportedException : 旧法术工厂 API 已停用,请注册组件并调用 SpellModApi.Register(ownerId, definition)。","stackTrace":" at Tests.EditMode.ModSpellApiEditModeTests.RegisteredCodeModSpellBecomesCatalogItemAndUsesCustomFactory () [0x00000] in D:\\UnityBuilds\\justanyproject\\Assets\\Tests\\EditMode\\ModSpellApiEditModeTests.cs:34 \r\n at (wrapper managed-to-native) System.Reflection.RuntimeMethodInfo.InternalInvoke(System.Reflection.RuntimeMethodInfo,object,object[],System.Exception&)\r\n at System.Reflection.RuntimeMethodInfo.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder b... (+127 chars)"},{"test":"Tests.EditMode.ModSpellApiEditModeTests.RegistrationRejectsSpellOutsideOwnerNamespace","message":" Expected: <System.InvalidOperationException>\r\n But was: <System.NotSupportedException: 旧法术工厂 API 已停用,请注册组件并调用 SpellModApi.Register(ownerId, definition)。\r\n at Tests.EditMode.ModSpellApiEditModeTests+<>c.<RegistrationRejectsSpellOutsideOwnerNamespace>b__3_0 () [0x00000] in D:\\UnityBuilds\\justanyproject\\Assets\\Tests\\EditMode\\ModSpellApiEditModeTests.cs:80 \r\n at NUnit.Framework.Assert.Throws (NUnit.Framework.Constraints.IResolveConstraint expression, NUnit.Framework.TestDelegate code, System.S... (+90 chars)","stackTrace":"at Tests.EditMode.ModSpellApiEditModeTests.RegistrationRejectsSpellOutsideOwnerNamespace () [0x00000] in D:\\UnityBuilds\\justanyproject\\Assets\\Tests\\EditMode\\ModSpellApiEditModeTests.cs:79\r\n"},{"test":"Tests.EditMode.RunModuleCatalogEditModeTests.DraftSpellOptionsShouldExposeCompleteSpellTooltips","message":" Spell_AccompliceMark\r\n Expected: String containing \"◆\"\r\n But was: \"目标标记\r\n品质:传说\r\n模块法力:5\r\n命中标记:命中标记时长 4\n当前及后续攻击\r\n命中标记时长:4\"\r\n","stackTrace":"at Tests.EditMode.RunModuleCatalogEditModeTests.DraftSpellOptionsShouldExposeCompleteSpellTooltips () [0x00020] in D:\\UnityBuilds\\justanyproject\\Assets\\Tests\\EditMode\\RunModuleCatalogEditModeTests.cs:167\r\n"}]}}
@@ -0,0 +1 @@
PASS NuGet buildTransitive CodeGen 0.1.0
@@ -0,0 +1,109 @@
{
"catalogPackages": 24,
"installedPackages": 22,
"comparedFiles": 1073,
"identicalFiles": 1053,
"hostImportMetadataDifferences": [
[
"com.cneicy.shrink-app-starter-basic",
"NuGet.Config.meta",
"consumer NuGetForUnity importer labels/platform flags"
],
[
"com.cneicy.shrink-context-eventbus-adapter",
"NuGet.Config.meta",
"consumer NuGetForUnity importer labels/platform flags"
],
[
"com.cneicy.shrink-mod-framework",
"NuGet.Config.meta",
"consumer NuGetForUnity importer labels/platform flags"
],
[
"com.cneicy.shrink-tutorial",
"NuGet.Config.meta",
"consumer NuGetForUnity importer labels/platform flags"
],
[
"com.cneicy.shrink-app-core",
"NuGet.Config.meta",
"consumer NuGetForUnity importer labels/platform flags"
],
[
"com.cneicy.shrink-command",
"NuGet.Config.meta",
"consumer NuGetForUnity importer labels/platform flags"
],
[
"com.cneicy.shrink-command-integration-app",
"NuGet.Config.meta",
"consumer NuGetForUnity importer labels/platform flags"
],
[
"com.cneicy.shrink-command-integration-eventbus",
"NuGet.Config.meta",
"consumer NuGetForUnity importer labels/platform flags"
],
[
"com.cneicy.shrink-command-integration-network",
"NuGet.Config.meta",
"consumer NuGetForUnity importer labels/platform flags"
],
[
"com.cneicy.shrink-context-app-adapter",
"NuGet.Config.meta",
"consumer NuGetForUnity importer labels/platform flags"
],
[
"com.cneicy.shrink-context-core",
"NuGet.Config.meta",
"consumer NuGetForUnity importer labels/platform flags"
],
[
"com.cneicy.shrink-datasaver",
"NuGet.Config.meta",
"consumer NuGetForUnity importer labels/platform flags"
],
[
"com.cneicy.shrink-datasaver-integration-app",
"NuGet.Config.meta",
"consumer NuGetForUnity importer labels/platform flags"
],
[
"com.cneicy.shrink-datasaver-integration-eventbus",
"NuGet.Config.meta",
"consumer NuGetForUnity importer labels/platform flags"
],
[
"com.cneicy.shrink-eventbus",
"NuGet.Config.meta",
"consumer NuGetForUnity importer labels/platform flags"
],
[
"com.cneicy.shrink-network",
"NuGet.Config.meta",
"consumer NuGetForUnity importer labels/platform flags"
],
[
"com.cneicy.shrink-network-integration-app",
"NuGet.Config.meta",
"consumer NuGetForUnity importer labels/platform flags"
],
[
"com.cneicy.shrink-network-integration-eventbus",
"NuGet.Config.meta",
"consumer NuGetForUnity importer labels/platform flags"
],
[
"com.cneicy.shrink-runtime-abstractions",
"NuGet.Config.meta",
"consumer NuGetForUnity importer labels/platform flags"
],
[
"com.cneicy.shrink-shared-codegen",
"NuGet.Config.meta",
"consumer NuGetForUnity importer labels/platform flags"
]
],
"errors": []
}
@@ -0,0 +1,47 @@
PLAYER Context 10000 retirements ms=123.6386
PLAYER EventBus 10000 posts allocationEvents=10000 ms=0.8038
PLAYER EventBus isolated 10000 posts allocationEvents=0
[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 102400 background=False captureMs=11.8073 encodeMs=7.7169 encryptMs=0 writeMs=17.803 bytes=103171
[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 102400 background=True captureMs=0.1186 encodeMs=0.2584 encryptMs=0 writeMs=29.4953 bytes=103171
[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 1048576 background=False captureMs=1.3102 encodeMs=7.8701 encryptMs=0 writeMs=13.9663 bytes=1049347
[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 1048576 background=True captureMs=0.1341 encodeMs=7.7226 encryptMs=0 writeMs=23.1749 bytes=1049347
[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 10485760 background=False captureMs=0.1424 encodeMs=28.173 encryptMs=0 writeMs=32.9821 bytes=10486531
[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 10485760 background=True captureMs=0.162 encodeMs=25.6417 encryptMs=0 writeMs=24.231 bytes=10486531
PLAYER allocation calibration managedCounterDelta=0 profilerEvents=10; use profiler events, not uncalibrated bytes.
PLAYER PERF context-diagnostic/components=10 n=100 ops=71994.24 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=135.00 p50us=13.00 p95us=20.20 p99us=25.60
PLAYER PERF context-diagnostic/components=100 n=100 ops=6276.68 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=1224.00 p50us=118.80 p95us=190.80 p99us=1980.20
PLAYER PERF context-diagnostic/components=1000 n=100 ops=391.93 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=12033.00 p50us=1841.90 p95us=5669.60 p99us=7090.60
PLAYER PERF event-async-completed n=10000 ops=1531534.29 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=3.00 p50us=0.30 p95us=0.60 p99us=1.10
PLAYER PERF event-bindings n=1000 ops=3377237.42 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=2.00 p50us=0.20 p95us=0.60 p99us=1.00
PLAYER PERF event-register-withdraw n=10000 ops=725100.06 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=10.00 p50us=0.80 p95us=1.70 p99us=2.40
PLAYER PERF loopback-rpc/bytes=64/sessions=1 n=128 ops=42139.92 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=100.00 p50us=22.40 p95us=32.20 p99us=35.80
PLAYER PERF loopback-broadcast/bytes=64/sessions=1 n=20 ops=135777.33 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=37.00 p50us=7.20 p95us=9.20 p99us=9.20
PLAYER PERF loopback-rpc/bytes=64/sessions=32 n=128 ops=22296.16 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=100.00 p50us=24.60 p95us=46.10 p99us=96.20
PLAYER PERF loopback-broadcast/bytes=64/sessions=32 n=20 ops=3283.21 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=1060.00 p50us=215.80 p95us=1999.10 p99us=1999.10
PLAYER PERF loopback-rpc/bytes=64/sessions=256 n=128 ops=16764.02 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=100.00 p50us=33.90 p95us=42.50 p99us=115.00
PLAYER PERF loopback-broadcast/bytes=64/sessions=256 n=20 ops=331.02 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=8452.00 p50us=3052.70 p95us=5858.40 p99us=5858.40
PLAYER PERF loopback-rpc/bytes=1024/sessions=1 n=128 ops=13102.67 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=102.00 p50us=27.70 p95us=302.40 p99us=1201.80
PLAYER PERF loopback-broadcast/bytes=1024/sessions=1 n=20 ops=117164.62 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=38.00 p50us=8.40 p95us=10.40 p99us=10.40
PLAYER PERF loopback-rpc/bytes=1024/sessions=32 n=128 ops=15497.49 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=102.00 p50us=27.60 p95us=62.90 p99us=1200.70
PLAYER PERF loopback-broadcast/bytes=1024/sessions=32 n=20 ops=1648.17 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=1092.00 p50us=361.60 p95us=1577.50 p99us=1577.50
PLAYER PERF loopback-rpc/bytes=1024/sessions=256 n=128 ops=12226.92 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=102.00 p50us=29.00 p95us=305.10 p99us=1402.90
PLAYER PERF loopback-broadcast/bytes=1024/sessions=256 n=20 ops=194.15 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=8708.00 p50us=4612.30 p95us=10631.00 p99us=10631.00
PLAYER PERF loopback-rpc/bytes=32768/sessions=1 n=128 ops=828.26 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=112.60 p50us=1123.40 p95us=3500.10 p99us=3837.10
PLAYER PERF loopback-broadcast/bytes=32768/sessions=1 n=20 ops=1815.71 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=43.00 p50us=98.60 p95us=3193.40 p99us=3193.40
PLAYER PERF loopback-rpc/bytes=32768/sessions=32 n=128 ops=842.40 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=112.00 p50us=1163.90 p95us=3475.30 p99us=3500.30
PLAYER PERF loopback-broadcast/bytes=32768/sessions=32 n=20 ops=65.08 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=1252.90 p50us=15096.30 p95us=26400.40 p99us=26400.40
PLAYER PERF loopback-rpc/bytes=32768/sessions=256 n=128 ops=830.36 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=112.60 p50us=1230.40 p95us=3500.80 p99us=3549.90
PLAYER PERF loopback-broadcast/bytes=32768/sessions=256 n=20 ops=8.67 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=9995.60 p50us=114364.50 p95us=124433.00 p99us=124433.00
PLAYER Queue pending=32 bytes=32768 replaced=96 rejected=0
@@ -0,0 +1,69 @@
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\LocalStorageProvider.cs(22,55): warning CS8625: 无法将 null 字面量转换为非 null 的引用类型。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSettings.cs(42,61): warning CS8601: 可能的 null 引用赋值。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(59,85): warning CS8625: 无法将 null 字面量转换为非 null 的引用类型。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(65,122): warning CS8625: 无法将 null 字面量转换为非 null 的引用类型。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(184,88): warning CS8625: 无法将 null 字面量转换为非 null 的引用类型。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(297,89): warning CS8625: 无法将 null 字面量转换为非 null 的引用类型。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkContext.Core\Tests\RetirementRetentionTests.cs(40,28): warning CS8767: “UniTask ChainComponent.ApplyAsync(ShrinkCtx ctx, object config)”的参数“config”类型中引用类型的为 Null 性与隐式实现的成员“UniTask IShrinkComponent.ApplyAsync(ShrinkCtx ctx, object? config)”不匹配(可能是由于为 Null 性特性)。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSettings.cs(37,51): warning CS8604: “JToken JToken.FromObject(object o)”中的形参“o”可能传入 null 引用实参。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSettings.cs(46,30): warning CS8603: 可能返回 null 引用。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSettings.cs(59,34): warning CS8625: 无法将 null 字面量转换为非 null 的引用类型。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSettings.cs(104,28): warning CS8625: 无法将 null 字面量转换为非 null 的引用类型。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSettings.cs(106,25): warning CS8625: 无法将 null 字面量转换为非 null 的引用类型。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\DataSerializer.cs(20,16): warning CS8603: 可能返回 null 引用。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSettings.cs(137,35): warning CS8600: 将 null 文本或可能的 null 值转换为不可为 null 类型。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSettings.cs(22,41): warning CS8618: 在退出构造函数时,不可为 null 的 字段 "_storage" 必须包含非 null 值。请考虑添加 "required" 修饰符或将该 字段 声明为可为 null。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSettings.cs(23,31): warning CS8618: 在退出构造函数时,不可为 null 的 字段 "_filePath" 必须包含非 null 值。请考虑添加 "required" 修饰符或将该 字段 声明为可为 null。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSettings.cs(25,48): warning CS8618: 在退出构造函数时,不可为 null 的 字段 "_debounceCts" 必须包含非 null 值。请考虑添加 "required" 修饰符或将该 字段 声明为可为 null。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSettings.cs(28,52): warning CS8618: 在退出构造函数时,不可为 null 的 事件 "OnChanged" 必须包含非 null 值。请考虑添加 "required" 修饰符或将该 事件 声明为可为 null。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\SaveTypes.cs(16,23): warning CS8618: 在退出构造函数时,不可为 null 的 属性 "ScreenshotBase64" 必须包含非 null 值。请考虑添加 "required" 修饰符或将该 属性 声明为可为 null。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(78,16): warning CS8603: 可能返回 null 引用。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\SaveTypes.cs(26,25): warning CS8618: 在退出构造函数时,不可为 null 的 属性 "Meta" 必须包含非 null 值。请考虑添加 "required" 修饰符或将该 属性 声明为可为 null。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\SaveTypes.cs(28,23): warning CS8618: 在退出构造函数时,不可为 null 的 属性 "EncryptedModules" 必须包含非 null 值。请考虑添加 "required" 修饰符或将该 属性 声明为可为 null。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(86,24): warning CS8603: 可能返回 null 引用。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(97,24): warning CS8603: 可能返回 null 引用。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(101,24): warning CS8603: 可能返回 null 引用。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\SaveTypes.cs(43,46): warning CS8603: 可能返回 null 引用。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\SaveTypes.cs(44,69): warning CS8604: “void ISaveModule<T>.Deserialize(T data)”中的形参“data”可能传入 null 引用实参。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(164,24): warning CS8603: 可能返回 null 引用。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(168,24): warning CS8603: 可能返回 null 引用。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkContext.Core\Tests\RetirementRetentionTests.cs(16,33): warning CS8600: 将 null 文本或可能的 null 值转换为不可为 null 类型。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkContext.Core\Tests\RetirementRetentionTests.cs(22,47): warning CS8604: “UniTask ShrinkContextRuntime.RetireAsync(ShrinkFiber fiber)”中的形参“fiber”可能传入 null 引用实参。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\SaveTypes.cs(85,39): warning CS8625: 无法将 null 字面量转换为非 null 的引用类型。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\SaveTypes.cs(76,33): warning CS8618: 在退出构造函数时,不可为 null 的 属性 "LastTimings" 必须包含非 null 值。请考虑添加 "required" 修饰符或将该 属性 声明为可为 null。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\SaveTypes.cs(82,23): warning CS8618: 在退出构造函数时,不可为 null 的 字段 "Screenshot" 必须包含非 null 值。请考虑添加 "required" 修饰符或将该 字段 声明为可为 null。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\SaveTypes.cs(111,25): warning CS8618: 在退出构造函数时,不可为 null 的 属性 "ModuleNames" 必须包含非 null 值。请考虑添加 "required" 修饰符或将该 属性 声明为可为 null。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\SaveTypes.cs(118,23): warning CS8618: 在退出构造函数时,不可为 null 的 属性 "ErrorMessage" 必须包含非 null 值。请考虑添加 "required" 修饰符或将该 属性 声明为可为 null。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(190,35): warning CS8601: 可能的 null 引用赋值。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\SaveTypes.cs(130,25): warning CS8618: 在退出构造函数时,不可为 null 的 属性 "ModuleNames" 必须包含非 null 值。请考虑添加 "required" 修饰符或将该 属性 声明为可为 null。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\SaveTypes.cs(138,23): warning CS8618: 在退出构造函数时,不可为 null 的 属性 "ErrorMessage" 必须包含非 null 值。请考虑添加 "required" 修饰符或将该 属性 声明为可为 null。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(365,37): warning CS8625: 无法将 null 字面量转换为非 null 的引用类型。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(402,33): warning CS8625: 无法将 null 字面量转换为非 null 的引用类型。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(403,29): warning CS8625: 无法将 null 字面量转换为非 null 的引用类型。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(404,31): warning CS8625: 无法将 null 字面量转换为非 null 的引用类型。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(405,28): warning CS8625: 无法将 null 字面量转换为非 null 的引用类型。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(406,29): warning CS8625: 无法将 null 字面量转换为非 null 的引用类型。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(407,31): warning CS8625: 无法将 null 字面量转换为非 null 的引用类型。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(408,28): warning CS8625: 无法将 null 字面量转换为非 null 的引用类型。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(409,36): warning CS8625: 无法将 null 字面量转换为非 null 的引用类型。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(410,33): warning CS8625: 无法将 null 字面量转换为非 null 的引用类型。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(520,29): warning CS8600: 将 null 文本或可能的 null 值转换为不可为 null 类型。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(545,35): warning CS8600: 将 null 文本或可能的 null 值转换为不可为 null 类型。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(592,35): warning CS8600: 将 null 文本或可能的 null 值转换为不可为 null 类型。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(635,55): warning CS8601: 可能的 null 引用赋值。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(22,41): warning CS8618: 在退出构造函数时,不可为 null 的 字段 "_storage" 必须包含非 null 值。请考虑添加 "required" 修饰符或将该 字段 声明为可为 null。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(23,31): warning CS8618: 在退出构造函数时,不可为 null 的 字段 "_savesDir" 必须包含非 null 值。请考虑添加 "required" 修饰符或将该 字段 声明为可为 null。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(24,31): warning CS8618: 在退出构造函数时,不可为 null 的 字段 "_fileExt" 必须包含非 null 值。请考虑添加 "required" 修饰符或将该 字段 声明为可为 null。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(34,51): warning CS8618: 在退出构造函数时,不可为 null 的 字段 "_loadedModuleData" 必须包含非 null 值。请考虑添加 "required" 修饰符或将该 字段 声明为可为 null。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(36,58): warning CS8618: 在退出构造函数时,不可为 null 的 事件 "OnSaveStarted" 必须包含非 null 值。请考虑添加 "required" 修饰符或将该 事件 声明为可为 null。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(37,60): warning CS8618: 在退出构造函数时,不可为 null 的 事件 "OnSaveCompleted" 必须包含非 null 值。请考虑添加 "required" 修饰符或将该 事件 声明为可为 null。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(38,57): warning CS8618: 在退出构造函数时,不可为 null 的 事件 "OnSaveFailed" 必须包含非 null 值。请考虑添加 "required" 修饰符或将该 事件 声明为可为 null。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(39,58): warning CS8618: 在退出构造函数时,不可为 null 的 事件 "OnLoadStarted" 必须包含非 null 值。请考虑添加 "required" 修饰符或将该 事件 声明为可为 null。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(40,60): warning CS8618: 在退出构造函数时,不可为 null 的 事件 "OnLoadCompleted" 必须包含非 null 值。请考虑添加 "required" 修饰符或将该 事件 声明为可为 null。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(41,57): warning CS8618: 在退出构造函数时,不可为 null 的 事件 "OnLoadFailed" 必须包含非 null 值。请考虑添加 "required" 修饰符或将该 事件 声明为可为 null。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(42,65): warning CS8618: 在退出构造函数时,不可为 null 的 事件 "OnMigrationCompleted" 必须包含非 null 值。请考虑添加 "required" 修饰符或将该 事件 声明为可为 null。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Assets\Modules\ShrinkDataSaver\Runtime\ShrinkSave.cs(43,58): warning CS8618: 在退出构造函数时,不可为 null 的 事件 "OnDeleteCompleted" 必须包含非 null 值。请考虑添加 "required" 修饰符或将该 事件 声明为可为 null。 [D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\RuntimeTests.csproj]
D:\UnityBuilds\ShrinkSDK\Tools\AgentSupport\RuntimeTests\bin\Debug\net8.0\RuntimeTests.dll (.NETCoreApp,Version=v8.0)的测试运行
总共 1 个测试文件与指定模式相匹配。
已通过! - 失败: 0,通过: 64,已跳过: 0,总计: 64,持续时间: 524 ms - RuntimeTests.dll (net8.0)
@@ -0,0 +1,21 @@
{
"benchmark-net8.json": "8744d957712c35f98e761182eb6752c46f36788f1317832e4c15cbcfc2c82726",
"benchmark-net10.json": "54d7692db4c452e000d2418790b6d2a43d1ed9ef16c5b989fcf96e654a979eba",
"tcp-net8.json": "1b976e29eeaa7a1ae47f0a75f0e704425506ff05b7811a8528c8fcb4513d984a",
"tcp-net10.json": "dd92388a8b968ef810af3b73d4aa7a505185ebc7058a71e53cfebb392a29b5f5",
"unity-player-results.xml": "b6c590a299647799765f776a5ebdbfdf49a9a6da22c045ffdc26fd7de0812ff8",
"unity-all-editmode-results.json": "b847214ab6ebbffa03fd8938c3c207067ce599d3f7b258a328a9b9d9247af4e1",
"justany-tests.json": "171c1107fea5d8c7d555770676887098404eaab81ba7f0b9a89cd8c8b7e85112",
"justany-messagepack-results.json": "33c59e11dd0730b52d5c86f0c611649eb4c9c165afbafadeed9149de0a742dc6",
"justany-runtime.json": "d5b1217c46573980d9c8579c123b9899419638a8afa80a22e1e1130cb2ed97a7",
"justany-installed.json": "56f30aee832c2c0c9262ecbe517b0cc728b1de9120a43d5182734d8565424472",
"package-validation.json": "20847ac3e9322970fe8ba01495f5eb822e4467b633d4b5c59d462c6e4b02755d",
"waiting-query.json": "690436e0090247039a22fea002ad59ff5a86a340148bc8f4f80067687757c7f6",
"godot-run-final.log": "c2dab1e7ceadf955ea03cf6b44f7e65492ccf538d94053ac8d67786c743867a9",
"nuget-consumer-final.log": "10c7cb6dffcaa885c951796cda3beb4f33fb73a9f9ea26142c81fa8798743cbb",
"runtime-tests-final.log": "2b938f9c1331e8abb6272b197fd72caa6dc5054ec2b17d8b0f8c07d0c6f024c6",
"cli-tests-final.log": "14470b6b1ab750d073472feb6221ba1d8284b5a329ac131f07f2d3c5446f7482",
"consumer-runtime-query.json": "041ef46324bce87070b2df4dff28ba1416483d0506b88d7aa1169dd72e0454b2",
"justany-play-errors.json": "60353a33b56d949ecf0aa2fe18f0ba09f86e51d4fc21233a236a8030e7da4f2d",
"justany-compilation.json": "4e46d765370580ff07ee8b95ee04e3e6f3c4bf09aba25dfcec7ae3e6dfde0078"
}
@@ -0,0 +1,303 @@
{
"runtime": ".NET 10.0.8",
"host": "Windows loopback TCP; sequential round-trip samples, multiple real connections",
"rows": [
{
"scenario": "tcp/rpc",
"connections": 1,
"bytes": 64,
"operations": 256,
"throughputPerSecond": 2569.8786133898707,
"p50Microseconds": 59.1,
"p95Microseconds": 172,
"p99Microseconds": 302.8,
"processAllocatedBytes": 4181192
},
{
"scenario": "tcp/broadcast",
"connections": 1,
"bytes": 64,
"elapsedMilliseconds": 3.9542,
"delivered": 1
},
{
"scenario": "tcp/rpc",
"connections": 1,
"bytes": 1024,
"operations": 256,
"throughputPerSecond": 9339.622985687758,
"p50Microseconds": 76.8,
"p95Microseconds": 233.8,
"p99Microseconds": 413.7,
"processAllocatedBytes": 9931824
},
{
"scenario": "tcp/broadcast",
"connections": 1,
"bytes": 1024,
"elapsedMilliseconds": 4.1822,
"delivered": 1
},
{
"scenario": "tcp/rpc",
"connections": 1,
"bytes": 32768,
"operations": 256,
"throughputPerSecond": 2077.1380931710028,
"p50Microseconds": 403.3,
"p95Microseconds": 1068.7,
"p99Microseconds": 1287.4,
"processAllocatedBytes": 229642408
},
{
"scenario": "tcp/broadcast",
"connections": 1,
"bytes": 32768,
"elapsedMilliseconds": 0.8935,
"delivered": 1
},
{
"scenario": "tcp/slow-consumer-burst",
"connections": 1,
"attempts": 8,
"beforePump": {
"PendingCount": 2,
"PendingBytes": 2136,
"Rejected": 1,
"Replaced": 0,
"Completed": 0,
"OldestWaitMilliseconds": 108.5865,
"LastWaitMilliseconds": 0
},
"afterPump": {
"PendingCount": 0,
"PendingBytes": 0,
"Rejected": 1,
"Replaced": 0,
"Completed": 2,
"OldestWaitMilliseconds": 0,
"LastWaitMilliseconds": 108.3473
},
"metrics": {
"CurrentSessions": 1,
"SessionsConnected": 1,
"SessionsDisconnected": 0,
"PacketsSent": 771,
"PacketsReceived": 770,
"BytesSent": 8772548,
"BytesReceived": 8703064,
"RpcStarted": 0,
"RpcCompleted": 0,
"RpcTimedOut": 0,
"RpcCanceled": 0,
"RpcFailed": 0,
"ProtocolViolations": 0,
"AuthRejectedCount": 0,
"PermissionDeniedCount": 0,
"HandlerExceptionCount": 0,
"UnknownOpcodeCount": 0,
"DispatchMissCount": 2,
"SerializationErrorCount": 0,
"DispatchQueueRejectedCount": 1
}
},
{
"scenario": "tcp/rpc",
"connections": 32,
"bytes": 64,
"operations": 256,
"throughputPerSecond": 13928.182807399347,
"p50Microseconds": 58.6,
"p95Microseconds": 147.2,
"p99Microseconds": 235,
"processAllocatedBytes": 3788328
},
{
"scenario": "tcp/broadcast",
"connections": 32,
"bytes": 64,
"elapsedMilliseconds": 15.9674,
"delivered": 32
},
{
"scenario": "tcp/rpc",
"connections": 32,
"bytes": 1024,
"operations": 256,
"throughputPerSecond": 9348.968509314276,
"p50Microseconds": 79.3,
"p95Microseconds": 199.6,
"p99Microseconds": 551,
"processAllocatedBytes": 9913976
},
{
"scenario": "tcp/broadcast",
"connections": 32,
"bytes": 1024,
"elapsedMilliseconds": 3.5947,
"delivered": 32
},
{
"scenario": "tcp/rpc",
"connections": 32,
"bytes": 32768,
"operations": 256,
"throughputPerSecond": 1782.1179776023969,
"p50Microseconds": 446.9,
"p95Microseconds": 1466.1,
"p99Microseconds": 1839.8,
"processAllocatedBytes": 229509592
},
{
"scenario": "tcp/broadcast",
"connections": 32,
"bytes": 32768,
"elapsedMilliseconds": 13.9419,
"delivered": 32
},
{
"scenario": "tcp/slow-consumer-burst",
"connections": 32,
"attempts": 256,
"beforePump": {
"PendingCount": 30,
"PendingBytes": 32040,
"Rejected": 32,
"Replaced": 0,
"Completed": 0,
"OldestWaitMilliseconds": 109.5715,
"LastWaitMilliseconds": 0
},
"afterPump": {
"PendingCount": 23,
"PendingBytes": 24564,
"Rejected": 32,
"Replaced": 0,
"Completed": 7,
"OldestWaitMilliseconds": 109.1555,
"LastWaitMilliseconds": 109.1537
},
"metrics": {
"CurrentSessions": 32,
"SessionsConnected": 32,
"SessionsDisconnected": 0,
"PacketsSent": 864,
"PacketsReceived": 775,
"BytesSent": 9826176,
"BytesReceived": 8708404,
"RpcStarted": 0,
"RpcCompleted": 0,
"RpcTimedOut": 0,
"RpcCanceled": 0,
"RpcFailed": 0,
"ProtocolViolations": 0,
"AuthRejectedCount": 0,
"PermissionDeniedCount": 0,
"HandlerExceptionCount": 0,
"UnknownOpcodeCount": 0,
"DispatchMissCount": 7,
"SerializationErrorCount": 0,
"DispatchQueueRejectedCount": 32
}
},
{
"scenario": "tcp/rpc",
"connections": 256,
"bytes": 64,
"operations": 256,
"throughputPerSecond": 8559.783062997996,
"p50Microseconds": 74.8,
"p95Microseconds": 204,
"p99Microseconds": 313.2,
"processAllocatedBytes": 4045992
},
{
"scenario": "tcp/broadcast",
"connections": 256,
"bytes": 64,
"elapsedMilliseconds": 12.374,
"delivered": 256
},
{
"scenario": "tcp/rpc",
"connections": 256,
"bytes": 1024,
"operations": 256,
"throughputPerSecond": 7391.815297015266,
"p50Microseconds": 88.4,
"p95Microseconds": 250.8,
"p99Microseconds": 384.3,
"processAllocatedBytes": 9917520
},
{
"scenario": "tcp/broadcast",
"connections": 256,
"bytes": 1024,
"elapsedMilliseconds": 12.6405,
"delivered": 256
},
{
"scenario": "tcp/rpc",
"connections": 256,
"bytes": 32768,
"operations": 256,
"throughputPerSecond": 1195.502482302127,
"p50Microseconds": 418.6,
"p95Microseconds": 1033.3,
"p99Microseconds": 16401.9,
"processAllocatedBytes": 227807112
},
{
"scenario": "tcp/broadcast",
"connections": 256,
"bytes": 32768,
"elapsedMilliseconds": 47.4633,
"delivered": 256
},
{
"scenario": "tcp/slow-consumer-burst",
"connections": 256,
"attempts": 2048,
"beforePump": {
"PendingCount": 30,
"PendingBytes": 32040,
"Rejected": 256,
"Replaced": 0,
"Completed": 0,
"OldestWaitMilliseconds": 124.5254,
"LastWaitMilliseconds": 0
},
"afterPump": {
"PendingCount": 23,
"PendingBytes": 24564,
"Rejected": 256,
"Replaced": 0,
"Completed": 7,
"OldestWaitMilliseconds": 124.4757,
"LastWaitMilliseconds": 124.5044
},
"metrics": {
"CurrentSessions": 256,
"SessionsConnected": 256,
"SessionsDisconnected": 0,
"PacketsSent": 1536,
"PacketsReceived": 775,
"BytesSent": 17439488,
"BytesReceived": 8708404,
"RpcStarted": 0,
"RpcCompleted": 0,
"RpcTimedOut": 0,
"RpcCanceled": 0,
"RpcFailed": 0,
"ProtocolViolations": 0,
"AuthRejectedCount": 0,
"PermissionDeniedCount": 0,
"HandlerExceptionCount": 0,
"UnknownOpcodeCount": 0,
"DispatchMissCount": 7,
"SerializationErrorCount": 0,
"DispatchQueueRejectedCount": 256
}
}
]
}
@@ -0,0 +1,303 @@
{
"runtime": ".NET 8.0.31",
"host": "Windows loopback TCP; sequential round-trip samples, multiple real connections",
"rows": [
{
"scenario": "tcp/rpc",
"connections": 1,
"bytes": 64,
"operations": 256,
"throughputPerSecond": 2786.3308702603804,
"p50Microseconds": 61.2,
"p95Microseconds": 164.7,
"p99Microseconds": 395.7,
"processAllocatedBytes": 4198840
},
{
"scenario": "tcp/broadcast",
"connections": 1,
"bytes": 64,
"elapsedMilliseconds": 2.3583,
"delivered": 1
},
{
"scenario": "tcp/rpc",
"connections": 1,
"bytes": 1024,
"operations": 256,
"throughputPerSecond": 9602.940900650823,
"p50Microseconds": 75.7,
"p95Microseconds": 193.2,
"p99Microseconds": 496,
"processAllocatedBytes": 9938800
},
{
"scenario": "tcp/broadcast",
"connections": 1,
"bytes": 1024,
"elapsedMilliseconds": 4.7543,
"delivered": 1
},
{
"scenario": "tcp/rpc",
"connections": 1,
"bytes": 32768,
"operations": 256,
"throughputPerSecond": 2206.3658826885603,
"p50Microseconds": 384.2,
"p95Microseconds": 1002.5,
"p99Microseconds": 1126.9,
"processAllocatedBytes": 229867960
},
{
"scenario": "tcp/broadcast",
"connections": 1,
"bytes": 32768,
"elapsedMilliseconds": 10.4461,
"delivered": 1
},
{
"scenario": "tcp/slow-consumer-burst",
"connections": 1,
"attempts": 8,
"beforePump": {
"PendingCount": 2,
"PendingBytes": 2136,
"Rejected": 1,
"Replaced": 0,
"Completed": 0,
"OldestWaitMilliseconds": 109.4399,
"LastWaitMilliseconds": 0
},
"afterPump": {
"PendingCount": 0,
"PendingBytes": 0,
"Rejected": 1,
"Replaced": 0,
"Completed": 2,
"OldestWaitMilliseconds": 0,
"LastWaitMilliseconds": 109.0027
},
"metrics": {
"CurrentSessions": 1,
"SessionsConnected": 1,
"SessionsDisconnected": 0,
"PacketsSent": 771,
"PacketsReceived": 770,
"BytesSent": 8772548,
"BytesReceived": 8703064,
"RpcStarted": 0,
"RpcCompleted": 0,
"RpcTimedOut": 0,
"RpcCanceled": 0,
"RpcFailed": 0,
"ProtocolViolations": 0,
"AuthRejectedCount": 0,
"PermissionDeniedCount": 0,
"HandlerExceptionCount": 0,
"UnknownOpcodeCount": 0,
"DispatchMissCount": 2,
"SerializationErrorCount": 0,
"DispatchQueueRejectedCount": 1
}
},
{
"scenario": "tcp/rpc",
"connections": 32,
"bytes": 64,
"operations": 256,
"throughputPerSecond": 9747.14534288249,
"p50Microseconds": 78.5,
"p95Microseconds": 235.1,
"p99Microseconds": 304.2,
"processAllocatedBytes": 3791256
},
{
"scenario": "tcp/broadcast",
"connections": 32,
"bytes": 64,
"elapsedMilliseconds": 9.6954,
"delivered": 32
},
{
"scenario": "tcp/rpc",
"connections": 32,
"bytes": 1024,
"operations": 256,
"throughputPerSecond": 8234.052955253068,
"p50Microseconds": 86.6,
"p95Microseconds": 247.5,
"p99Microseconds": 494.8,
"processAllocatedBytes": 9908800
},
{
"scenario": "tcp/broadcast",
"connections": 32,
"bytes": 1024,
"elapsedMilliseconds": 15.3001,
"delivered": 32
},
{
"scenario": "tcp/rpc",
"connections": 32,
"bytes": 32768,
"operations": 256,
"throughputPerSecond": 1754.0157368099387,
"p50Microseconds": 419.6,
"p95Microseconds": 1319.5,
"p99Microseconds": 1647.1,
"processAllocatedBytes": 230263696
},
{
"scenario": "tcp/broadcast",
"connections": 32,
"bytes": 32768,
"elapsedMilliseconds": 11.5336,
"delivered": 32
},
{
"scenario": "tcp/slow-consumer-burst",
"connections": 32,
"attempts": 256,
"beforePump": {
"PendingCount": 30,
"PendingBytes": 32040,
"Rejected": 32,
"Replaced": 0,
"Completed": 0,
"OldestWaitMilliseconds": 126.3722,
"LastWaitMilliseconds": 0
},
"afterPump": {
"PendingCount": 23,
"PendingBytes": 24564,
"Rejected": 32,
"Replaced": 0,
"Completed": 7,
"OldestWaitMilliseconds": 126.2021,
"LastWaitMilliseconds": 126.1876
},
"metrics": {
"CurrentSessions": 32,
"SessionsConnected": 32,
"SessionsDisconnected": 0,
"PacketsSent": 864,
"PacketsReceived": 775,
"BytesSent": 9826176,
"BytesReceived": 8708404,
"RpcStarted": 0,
"RpcCompleted": 0,
"RpcTimedOut": 0,
"RpcCanceled": 0,
"RpcFailed": 0,
"ProtocolViolations": 0,
"AuthRejectedCount": 0,
"PermissionDeniedCount": 0,
"HandlerExceptionCount": 0,
"UnknownOpcodeCount": 0,
"DispatchMissCount": 7,
"SerializationErrorCount": 0,
"DispatchQueueRejectedCount": 32
}
},
{
"scenario": "tcp/rpc",
"connections": 256,
"bytes": 64,
"operations": 256,
"throughputPerSecond": 6808.96336192566,
"p50Microseconds": 104.3,
"p95Microseconds": 248.8,
"p99Microseconds": 376.4,
"processAllocatedBytes": 4047528
},
{
"scenario": "tcp/broadcast",
"connections": 256,
"bytes": 64,
"elapsedMilliseconds": 8.4403,
"delivered": 256
},
{
"scenario": "tcp/rpc",
"connections": 256,
"bytes": 1024,
"operations": 256,
"throughputPerSecond": 6911.465743698012,
"p50Microseconds": 99.3,
"p95Microseconds": 258.9,
"p99Microseconds": 355.1,
"processAllocatedBytes": 9916024
},
{
"scenario": "tcp/broadcast",
"connections": 256,
"bytes": 1024,
"elapsedMilliseconds": 9.0517,
"delivered": 256
},
{
"scenario": "tcp/rpc",
"connections": 256,
"bytes": 32768,
"operations": 256,
"throughputPerSecond": 1056.106917624073,
"p50Microseconds": 439.3,
"p95Microseconds": 1988.3,
"p99Microseconds": 14849.1,
"processAllocatedBytes": 228731112
},
{
"scenario": "tcp/broadcast",
"connections": 256,
"bytes": 32768,
"elapsedMilliseconds": 64.9767,
"delivered": 256
},
{
"scenario": "tcp/slow-consumer-burst",
"connections": 256,
"attempts": 2048,
"beforePump": {
"PendingCount": 30,
"PendingBytes": 32040,
"Rejected": 256,
"Replaced": 0,
"Completed": 0,
"OldestWaitMilliseconds": 123.9167,
"LastWaitMilliseconds": 0
},
"afterPump": {
"PendingCount": 23,
"PendingBytes": 24564,
"Rejected": 256,
"Replaced": 0,
"Completed": 7,
"OldestWaitMilliseconds": 123.3004,
"LastWaitMilliseconds": 123.418
},
"metrics": {
"CurrentSessions": 256,
"SessionsConnected": 256,
"SessionsDisconnected": 0,
"PacketsSent": 1536,
"PacketsReceived": 775,
"BytesSent": 17439488,
"BytesReceived": 8708404,
"RpcStarted": 0,
"RpcCompleted": 0,
"RpcTimedOut": 0,
"RpcCanceled": 0,
"RpcFailed": 0,
"ProtocolViolations": 0,
"AuthRejectedCount": 0,
"PermissionDeniedCount": 0,
"HandlerExceptionCount": 0,
"UnknownOpcodeCount": 0,
"DispatchMissCount": 7,
"SerializationErrorCount": 0,
"DispatchQueueRejectedCount": 256
}
}
]
}
@@ -0,0 +1 @@
{"success":true,"message":"Test job finished.","data":{"jobId":"fbffc55a-232f-4e3c-b8bf-c37f45dffb39","status":"finished","mode":"EditMode","startedAt":"2026-09-29 07:04:55","lastActivityAt":"2026-09-29 07:05:19","testsCompleted":226,"hasFilters":false,"totalTests":226,"finishedAt":"2026-09-29 07:05:19","resultState":"Passed","passCount":226,"failCount":0,"skipCount":0,"inconclusiveCount":0,"durationSeconds":18.53,"failures":[],"task":{"task_id":"tests:fbffc55a-232f-4e3c-b8bf-c37f45dffb39","kind":"tests","id":"fbffc55a-232f-4e3c-b8bf-c37f45dffb39","status":"finished","phase":"finished","revision":"e8f3bd9db3325822b1334b053ac352179b5b7cd20a295878c2506105b3c0f9ca","changed":true,"wait_complete":true,"poll_after_ms":0,"wait_reason":"completed","waited_ms":0,"snapshot_at":"2026-09-28T23:06:00.8696005Z"}}}
@@ -0,0 +1,206 @@
<test-suite type="TestSuite" id="1000" name="ShrinkSDK" fullname="ShrinkSDK" runstate="Runnable" testcasecount="19" result="Passed" start-time="2026-09-28 22:58:48Z" end-time="2026-09-28 22:58:57Z" duration="8.553310" total="10" passed="10" failed="0" inconclusive="0" skipped="0" asserts="0">PLAYER Context 10000 retirements ms=123.6386
PLAYER EventBus 10000 posts allocationEvents=10000 ms=0.8038
PLAYER EventBus isolated 10000 posts allocationEvents=0
[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 102400 background=False captureMs=11.8073 encodeMs=7.7169 encryptMs=0 writeMs=17.803 bytes=103171
[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 102400 background=True captureMs=0.1186 encodeMs=0.2584 encryptMs=0 writeMs=29.4953 bytes=103171
[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 1048576 background=False captureMs=1.3102 encodeMs=7.8701 encryptMs=0 writeMs=13.9663 bytes=1049347
[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 1048576 background=True captureMs=0.1341 encodeMs=7.7226 encryptMs=0 writeMs=23.1749 bytes=1049347
[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 10485760 background=False captureMs=0.1424 encodeMs=28.173 encryptMs=0 writeMs=32.9821 bytes=10486531
[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 10485760 background=True captureMs=0.162 encodeMs=25.6417 encryptMs=0 writeMs=24.231 bytes=10486531
PLAYER allocation calibration managedCounterDelta=0 profilerEvents=10; use profiler events, not uncalibrated bytes.
PLAYER PERF context-diagnostic/components=10 n=100 ops=71994.24 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=135.00 p50us=13.00 p95us=20.20 p99us=25.60
PLAYER PERF context-diagnostic/components=100 n=100 ops=6276.68 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=1224.00 p50us=118.80 p95us=190.80 p99us=1980.20
PLAYER PERF context-diagnostic/components=1000 n=100 ops=391.93 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=12033.00 p50us=1841.90 p95us=5669.60 p99us=7090.60
PLAYER PERF event-async-completed n=10000 ops=1531534.29 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=3.00 p50us=0.30 p95us=0.60 p99us=1.10
PLAYER PERF event-bindings n=1000 ops=3377237.42 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=2.00 p50us=0.20 p95us=0.60 p99us=1.00
PLAYER PERF event-register-withdraw n=10000 ops=725100.06 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=10.00 p50us=0.80 p95us=1.70 p99us=2.40
PLAYER PERF loopback-rpc/bytes=64/sessions=1 n=128 ops=42139.92 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=100.00 p50us=22.40 p95us=32.20 p99us=35.80
PLAYER PERF loopback-broadcast/bytes=64/sessions=1 n=20 ops=135777.33 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=37.00 p50us=7.20 p95us=9.20 p99us=9.20
PLAYER PERF loopback-rpc/bytes=64/sessions=32 n=128 ops=22296.16 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=100.00 p50us=24.60 p95us=46.10 p99us=96.20
PLAYER PERF loopback-broadcast/bytes=64/sessions=32 n=20 ops=3283.21 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=1060.00 p50us=215.80 p95us=1999.10 p99us=1999.10
PLAYER PERF loopback-rpc/bytes=64/sessions=256 n=128 ops=16764.02 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=100.00 p50us=33.90 p95us=42.50 p99us=115.00
PLAYER PERF loopback-broadcast/bytes=64/sessions=256 n=20 ops=331.02 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=8452.00 p50us=3052.70 p95us=5858.40 p99us=5858.40
PLAYER PERF loopback-rpc/bytes=1024/sessions=1 n=128 ops=13102.67 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=102.00 p50us=27.70 p95us=302.40 p99us=1201.80
PLAYER PERF loopback-broadcast/bytes=1024/sessions=1 n=20 ops=117164.62 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=38.00 p50us=8.40 p95us=10.40 p99us=10.40
PLAYER PERF loopback-rpc/bytes=1024/sessions=32 n=128 ops=15497.49 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=102.00 p50us=27.60 p95us=62.90 p99us=1200.70
PLAYER PERF loopback-broadcast/bytes=1024/sessions=32 n=20 ops=1648.17 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=1092.00 p50us=361.60 p95us=1577.50 p99us=1577.50
PLAYER PERF loopback-rpc/bytes=1024/sessions=256 n=128 ops=12226.92 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=102.00 p50us=29.00 p95us=305.10 p99us=1402.90
PLAYER PERF loopback-broadcast/bytes=1024/sessions=256 n=20 ops=194.15 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=8708.00 p50us=4612.30 p95us=10631.00 p99us=10631.00
PLAYER PERF loopback-rpc/bytes=32768/sessions=1 n=128 ops=828.26 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=112.60 p50us=1123.40 p95us=3500.10 p99us=3837.10
PLAYER PERF loopback-broadcast/bytes=32768/sessions=1 n=20 ops=1815.71 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=43.00 p50us=98.60 p95us=3193.40 p99us=3193.40
PLAYER PERF loopback-rpc/bytes=32768/sessions=32 n=128 ops=842.40 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=112.00 p50us=1163.90 p95us=3475.30 p99us=3500.30
PLAYER PERF loopback-broadcast/bytes=32768/sessions=32 n=20 ops=65.08 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=1252.90 p50us=15096.30 p95us=26400.40 p99us=26400.40
PLAYER PERF loopback-rpc/bytes=32768/sessions=256 n=128 ops=830.36 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=112.60 p50us=1230.40 p95us=3500.80 p99us=3549.90
PLAYER PERF loopback-broadcast/bytes=32768/sessions=256 n=20 ops=8.67 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=9995.60 p50us=114364.50 p95us=124433.00 p99us=124433.00
PLAYER Queue pending=32 bytes=32768 replaced=96 rejected=0
<properties></properties><test-suite type="Assembly" id="1031" name="ShrinkSDK.AgentSupport.PlayerTests.dll" fullname="D:/UnityBuilds/ShrinkSDK/Temp/UnityTempFile-294282e3fce1c354d807cb1cfc078e88/PlayerWithTests/PlayerWithTests_Data/Managed/ShrinkSDK.AgentSupport.PlayerTests.dll" runstate="Runnable" testcasecount="10" result="Passed" start-time="2026-09-28 22:58:48Z" end-time="2026-09-28 22:58:57Z" duration="8.545408" total="10" passed="10" failed="0" inconclusive="0" skipped="0" asserts="0">PLAYER Context 10000 retirements ms=123.6386
PLAYER EventBus 10000 posts allocationEvents=10000 ms=0.8038
PLAYER EventBus isolated 10000 posts allocationEvents=0
[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 102400 background=False captureMs=11.8073 encodeMs=7.7169 encryptMs=0 writeMs=17.803 bytes=103171
[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 102400 background=True captureMs=0.1186 encodeMs=0.2584 encryptMs=0 writeMs=29.4953 bytes=103171
[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 1048576 background=False captureMs=1.3102 encodeMs=7.8701 encryptMs=0 writeMs=13.9663 bytes=1049347
[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 1048576 background=True captureMs=0.1341 encodeMs=7.7226 encryptMs=0 writeMs=23.1749 bytes=1049347
[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 10485760 background=False captureMs=0.1424 encodeMs=28.173 encryptMs=0 writeMs=32.9821 bytes=10486531
[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 10485760 background=True captureMs=0.162 encodeMs=25.6417 encryptMs=0 writeMs=24.231 bytes=10486531
PLAYER allocation calibration managedCounterDelta=0 profilerEvents=10; use profiler events, not uncalibrated bytes.
PLAYER PERF context-diagnostic/components=10 n=100 ops=71994.24 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=135.00 p50us=13.00 p95us=20.20 p99us=25.60
PLAYER PERF context-diagnostic/components=100 n=100 ops=6276.68 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=1224.00 p50us=118.80 p95us=190.80 p99us=1980.20
PLAYER PERF context-diagnostic/components=1000 n=100 ops=391.93 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=12033.00 p50us=1841.90 p95us=5669.60 p99us=7090.60
PLAYER PERF event-async-completed n=10000 ops=1531534.29 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=3.00 p50us=0.30 p95us=0.60 p99us=1.10
PLAYER PERF event-bindings n=1000 ops=3377237.42 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=2.00 p50us=0.20 p95us=0.60 p99us=1.00
PLAYER PERF event-register-withdraw n=10000 ops=725100.06 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=10.00 p50us=0.80 p95us=1.70 p99us=2.40
PLAYER PERF loopback-rpc/bytes=64/sessions=1 n=128 ops=42139.92 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=100.00 p50us=22.40 p95us=32.20 p99us=35.80
PLAYER PERF loopback-broadcast/bytes=64/sessions=1 n=20 ops=135777.33 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=37.00 p50us=7.20 p95us=9.20 p99us=9.20
PLAYER PERF loopback-rpc/bytes=64/sessions=32 n=128 ops=22296.16 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=100.00 p50us=24.60 p95us=46.10 p99us=96.20
PLAYER PERF loopback-broadcast/bytes=64/sessions=32 n=20 ops=3283.21 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=1060.00 p50us=215.80 p95us=1999.10 p99us=1999.10
PLAYER PERF loopback-rpc/bytes=64/sessions=256 n=128 ops=16764.02 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=100.00 p50us=33.90 p95us=42.50 p99us=115.00
PLAYER PERF loopback-broadcast/bytes=64/sessions=256 n=20 ops=331.02 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=8452.00 p50us=3052.70 p95us=5858.40 p99us=5858.40
PLAYER PERF loopback-rpc/bytes=1024/sessions=1 n=128 ops=13102.67 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=102.00 p50us=27.70 p95us=302.40 p99us=1201.80
PLAYER PERF loopback-broadcast/bytes=1024/sessions=1 n=20 ops=117164.62 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=38.00 p50us=8.40 p95us=10.40 p99us=10.40
PLAYER PERF loopback-rpc/bytes=1024/sessions=32 n=128 ops=15497.49 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=102.00 p50us=27.60 p95us=62.90 p99us=1200.70
PLAYER PERF loopback-broadcast/bytes=1024/sessions=32 n=20 ops=1648.17 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=1092.00 p50us=361.60 p95us=1577.50 p99us=1577.50
PLAYER PERF loopback-rpc/bytes=1024/sessions=256 n=128 ops=12226.92 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=102.00 p50us=29.00 p95us=305.10 p99us=1402.90
PLAYER PERF loopback-broadcast/bytes=1024/sessions=256 n=20 ops=194.15 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=8708.00 p50us=4612.30 p95us=10631.00 p99us=10631.00
PLAYER PERF loopback-rpc/bytes=32768/sessions=1 n=128 ops=828.26 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=112.60 p50us=1123.40 p95us=3500.10 p99us=3837.10
PLAYER PERF loopback-broadcast/bytes=32768/sessions=1 n=20 ops=1815.71 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=43.00 p50us=98.60 p95us=3193.40 p99us=3193.40
PLAYER PERF loopback-rpc/bytes=32768/sessions=32 n=128 ops=842.40 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=112.00 p50us=1163.90 p95us=3475.30 p99us=3500.30
PLAYER PERF loopback-broadcast/bytes=32768/sessions=32 n=20 ops=65.08 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=1252.90 p50us=15096.30 p95us=26400.40 p99us=26400.40
PLAYER PERF loopback-rpc/bytes=32768/sessions=256 n=128 ops=830.36 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=112.60 p50us=1230.40 p95us=3500.80 p99us=3549.90
PLAYER PERF loopback-broadcast/bytes=32768/sessions=256 n=20 ops=8.67 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=9995.60 p50us=114364.50 p95us=124433.00 p99us=124433.00
PLAYER Queue pending=32 bytes=32768 replaced=96 rejected=0
<properties><property name="_PID" value="360820"></property><property name="_APPDOMAIN" value="Unity Root Domain"></property><property name="platform" value="PlayMode"></property></properties><test-suite type="TestFixture" id="1019" name="PlayerContracts" fullname="PlayerContracts" classname="PlayerContracts" runstate="Runnable" testcasecount="6" result="Passed" start-time="2026-09-28 22:58:48Z" end-time="2026-09-28 22:58:48Z" duration="0.509556" total="6" passed="6" failed="0" inconclusive="0" skipped="0" asserts="0">PLAYER Context 10000 retirements ms=123.6386
PLAYER EventBus 10000 posts allocationEvents=10000 ms=0.8038
PLAYER EventBus isolated 10000 posts allocationEvents=0
[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 102400 background=False captureMs=11.8073 encodeMs=7.7169 encryptMs=0 writeMs=17.803 bytes=103171
[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 102400 background=True captureMs=0.1186 encodeMs=0.2584 encryptMs=0 writeMs=29.4953 bytes=103171
[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 1048576 background=False captureMs=1.3102 encodeMs=7.8701 encryptMs=0 writeMs=13.9663 bytes=1049347
[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 1048576 background=True captureMs=0.1341 encodeMs=7.7226 encryptMs=0 writeMs=23.1749 bytes=1049347
[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 10485760 background=False captureMs=0.1424 encodeMs=28.173 encryptMs=0 writeMs=32.9821 bytes=10486531
[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 10485760 background=True captureMs=0.162 encodeMs=25.6417 encryptMs=0 writeMs=24.231 bytes=10486531
<properties></properties><test-case id="1021" name="BinaryEnvelopeAndLegacyRejection" fullname="PlayerContracts.BinaryEnvelopeAndLegacyRejection" methodname="BinaryEnvelopeAndLegacyRejection" classname="PlayerContracts" runstate="Runnable" seed="790253472" result="Passed" start-time="2026-09-28 22:58:48Z" end-time="2026-09-28 22:58:48Z" duration="0.037781" asserts="0"><properties></properties></test-case><test-case id="1022" name="ContextTenThousandRetirements" fullname="PlayerContracts.ContextTenThousandRetirements" methodname="ContextTenThousandRetirements" classname="PlayerContracts" runstate="Runnable" seed="931715960" result="Passed" start-time="2026-09-28 22:58:48Z" end-time="2026-09-28 22:58:48Z" duration="0.135737" asserts="0">PLAYER Context 10000 retirements ms=123.6386
<properties><property name="_JOINTYPE" value="UnityCombinatorial"></property></properties><output>PLAYER Context 10000 retirements ms=123.6386
</output></test-case><test-case id="1020" name="DotNetGoldenFrameIsIdenticalInPlayer" fullname="PlayerContracts.DotNetGoldenFrameIsIdenticalInPlayer" methodname="DotNetGoldenFrameIsIdenticalInPlayer" classname="PlayerContracts" runstate="Runnable" seed="863403175" result="Passed" start-time="2026-09-28 22:58:48Z" end-time="2026-09-28 22:58:48Z" duration="0.001355" asserts="0"><properties></properties></test-case><test-case id="1023" name="EventDispatchAllocations" fullname="PlayerContracts.EventDispatchAllocations" methodname="EventDispatchAllocations" classname="PlayerContracts" runstate="Runnable" seed="840396955" result="Passed" start-time="2026-09-28 22:58:48Z" end-time="2026-09-28 22:58:48Z" duration="0.011583" asserts="0">PLAYER EventBus 10000 posts allocationEvents=10000 ms=0.8038
PLAYER EventBus isolated 10000 posts allocationEvents=0
<properties></properties><output>PLAYER EventBus 10000 posts allocationEvents=10000 ms=0.8038
PLAYER EventBus isolated 10000 posts allocationEvents=0
</output></test-case><test-case id="1024" name="LoopbackRpc" fullname="PlayerContracts.LoopbackRpc" methodname="LoopbackRpc" classname="PlayerContracts" runstate="Runnable" seed="1361464745" result="Passed" start-time="2026-09-28 22:58:48Z" end-time="2026-09-28 22:58:48Z" duration="0.034560" asserts="0"><properties><property name="_JOINTYPE" value="UnityCombinatorial"></property></properties></test-case><test-case id="1025" name="SavePhaseMatrix" fullname="PlayerContracts.SavePhaseMatrix" methodname="SavePhaseMatrix" classname="PlayerContracts" runstate="Runnable" seed="1751938294" result="Passed" start-time="2026-09-28 22:58:48Z" end-time="2026-09-28 22:58:48Z" duration="0.277519" asserts="0">[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 102400 background=False captureMs=11.8073 encodeMs=7.7169 encryptMs=0 writeMs=17.803 bytes=103171
[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 102400 background=True captureMs=0.1186 encodeMs=0.2584 encryptMs=0 writeMs=29.4953 bytes=103171
[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 1048576 background=False captureMs=1.3102 encodeMs=7.8701 encryptMs=0 writeMs=13.9663 bytes=1049347
[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 1048576 background=True captureMs=0.1341 encodeMs=7.7226 encryptMs=0 writeMs=23.1749 bytes=1049347
[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 10485760 background=False captureMs=0.1424 encodeMs=28.173 encryptMs=0 writeMs=32.9821 bytes=10486531
[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 10485760 background=True captureMs=0.162 encodeMs=25.6417 encryptMs=0 writeMs=24.231 bytes=10486531
<properties><property name="_JOINTYPE" value="UnityCombinatorial"></property></properties><output>[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 102400 background=False captureMs=11.8073 encodeMs=7.7169 encryptMs=0 writeMs=17.803 bytes=103171
[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 102400 background=True captureMs=0.1186 encodeMs=0.2584 encryptMs=0 writeMs=29.4953 bytes=103171
[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 1048576 background=False captureMs=1.3102 encodeMs=7.8701 encryptMs=0 writeMs=13.9663 bytes=1049347
[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 1048576 background=True captureMs=0.1341 encodeMs=7.7226 encryptMs=0 writeMs=23.1749 bytes=1049347
[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 10485760 background=False captureMs=0.1424 encodeMs=28.173 encryptMs=0 writeMs=32.9821 bytes=10486531
[ShrinkDataSaver] 槽位 0 已保存。(2 个模块)
PLAYER Save 10485760 background=True captureMs=0.162 encodeMs=25.6417 encryptMs=0 writeMs=24.231 bytes=10486531
</output></test-case></test-suite><test-suite type="TestFixture" id="1026" name="PlayerPerformance" fullname="PlayerPerformance" classname="PlayerPerformance" runstate="Runnable" testcasecount="4" result="Passed" start-time="2026-09-28 22:58:49Z" end-time="2026-09-28 22:58:57Z" duration="8.031346" total="4" passed="4" failed="0" inconclusive="0" skipped="0" asserts="0">PLAYER allocation calibration managedCounterDelta=0 profilerEvents=10; use profiler events, not uncalibrated bytes.
PLAYER PERF context-diagnostic/components=10 n=100 ops=71994.24 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=135.00 p50us=13.00 p95us=20.20 p99us=25.60
PLAYER PERF context-diagnostic/components=100 n=100 ops=6276.68 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=1224.00 p50us=118.80 p95us=190.80 p99us=1980.20
PLAYER PERF context-diagnostic/components=1000 n=100 ops=391.93 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=12033.00 p50us=1841.90 p95us=5669.60 p99us=7090.60
PLAYER PERF event-async-completed n=10000 ops=1531534.29 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=3.00 p50us=0.30 p95us=0.60 p99us=1.10
PLAYER PERF event-bindings n=1000 ops=3377237.42 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=2.00 p50us=0.20 p95us=0.60 p99us=1.00
PLAYER PERF event-register-withdraw n=10000 ops=725100.06 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=10.00 p50us=0.80 p95us=1.70 p99us=2.40
PLAYER PERF loopback-rpc/bytes=64/sessions=1 n=128 ops=42139.92 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=100.00 p50us=22.40 p95us=32.20 p99us=35.80
PLAYER PERF loopback-broadcast/bytes=64/sessions=1 n=20 ops=135777.33 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=37.00 p50us=7.20 p95us=9.20 p99us=9.20
PLAYER PERF loopback-rpc/bytes=64/sessions=32 n=128 ops=22296.16 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=100.00 p50us=24.60 p95us=46.10 p99us=96.20
PLAYER PERF loopback-broadcast/bytes=64/sessions=32 n=20 ops=3283.21 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=1060.00 p50us=215.80 p95us=1999.10 p99us=1999.10
PLAYER PERF loopback-rpc/bytes=64/sessions=256 n=128 ops=16764.02 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=100.00 p50us=33.90 p95us=42.50 p99us=115.00
PLAYER PERF loopback-broadcast/bytes=64/sessions=256 n=20 ops=331.02 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=8452.00 p50us=3052.70 p95us=5858.40 p99us=5858.40
PLAYER PERF loopback-rpc/bytes=1024/sessions=1 n=128 ops=13102.67 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=102.00 p50us=27.70 p95us=302.40 p99us=1201.80
PLAYER PERF loopback-broadcast/bytes=1024/sessions=1 n=20 ops=117164.62 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=38.00 p50us=8.40 p95us=10.40 p99us=10.40
PLAYER PERF loopback-rpc/bytes=1024/sessions=32 n=128 ops=15497.49 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=102.00 p50us=27.60 p95us=62.90 p99us=1200.70
PLAYER PERF loopback-broadcast/bytes=1024/sessions=32 n=20 ops=1648.17 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=1092.00 p50us=361.60 p95us=1577.50 p99us=1577.50
PLAYER PERF loopback-rpc/bytes=1024/sessions=256 n=128 ops=12226.92 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=102.00 p50us=29.00 p95us=305.10 p99us=1402.90
PLAYER PERF loopback-broadcast/bytes=1024/sessions=256 n=20 ops=194.15 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=8708.00 p50us=4612.30 p95us=10631.00 p99us=10631.00
PLAYER PERF loopback-rpc/bytes=32768/sessions=1 n=128 ops=828.26 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=112.60 p50us=1123.40 p95us=3500.10 p99us=3837.10
PLAYER PERF loopback-broadcast/bytes=32768/sessions=1 n=20 ops=1815.71 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=43.00 p50us=98.60 p95us=3193.40 p99us=3193.40
PLAYER PERF loopback-rpc/bytes=32768/sessions=32 n=128 ops=842.40 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=112.00 p50us=1163.90 p95us=3475.30 p99us=3500.30
PLAYER PERF loopback-broadcast/bytes=32768/sessions=32 n=20 ops=65.08 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=1252.90 p50us=15096.30 p95us=26400.40 p99us=26400.40
PLAYER PERF loopback-rpc/bytes=32768/sessions=256 n=128 ops=830.36 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=112.60 p50us=1230.40 p95us=3500.80 p99us=3549.90
PLAYER PERF loopback-broadcast/bytes=32768/sessions=256 n=20 ops=8.67 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=9995.60 p50us=114364.50 p95us=124433.00 p99us=124433.00
PLAYER Queue pending=32 bytes=32768 replaced=96 rejected=0
<properties></properties><test-case id="1027" name="AllocationCounterDetectsKnownAllocation" fullname="PlayerPerformance.AllocationCounterDetectsKnownAllocation" methodname="AllocationCounterDetectsKnownAllocation" classname="PlayerPerformance" runstate="Runnable" seed="1926787849" result="Passed" start-time="2026-09-28 22:58:49Z" end-time="2026-09-28 22:58:49Z" duration="0.001545" asserts="0">PLAYER allocation calibration managedCounterDelta=0 profilerEvents=10; use profiler events, not uncalibrated bytes.
<properties></properties><output>PLAYER allocation calibration managedCounterDelta=0 profilerEvents=10; use profiler events, not uncalibrated bytes.
</output></test-case><test-case id="1029" name="ContextAndEventMatrix" fullname="PlayerPerformance.ContextAndEventMatrix" methodname="ContextAndEventMatrix" classname="PlayerPerformance" runstate="Runnable" seed="361131472" result="Passed" start-time="2026-09-28 22:58:49Z" end-time="2026-09-28 22:58:49Z" duration="0.424377" asserts="0">PLAYER PERF context-diagnostic/components=10 n=100 ops=71994.24 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=135.00 p50us=13.00 p95us=20.20 p99us=25.60
PLAYER PERF context-diagnostic/components=100 n=100 ops=6276.68 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=1224.00 p50us=118.80 p95us=190.80 p99us=1980.20
PLAYER PERF context-diagnostic/components=1000 n=100 ops=391.93 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=12033.00 p50us=1841.90 p95us=5669.60 p99us=7090.60
PLAYER PERF event-async-completed n=10000 ops=1531534.29 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=3.00 p50us=0.30 p95us=0.60 p99us=1.10
PLAYER PERF event-bindings n=1000 ops=3377237.42 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=2.00 p50us=0.20 p95us=0.60 p99us=1.00
PLAYER PERF event-register-withdraw n=10000 ops=725100.06 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=10.00 p50us=0.80 p95us=1.70 p99us=2.40
<properties></properties><output>PLAYER PERF context-diagnostic/components=10 n=100 ops=71994.24 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=135.00 p50us=13.00 p95us=20.20 p99us=25.60
PLAYER PERF context-diagnostic/components=100 n=100 ops=6276.68 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=1224.00 p50us=118.80 p95us=190.80 p99us=1980.20
PLAYER PERF context-diagnostic/components=1000 n=100 ops=391.93 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=12033.00 p50us=1841.90 p95us=5669.60 p99us=7090.60
PLAYER PERF event-async-completed n=10000 ops=1531534.29 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=3.00 p50us=0.30 p95us=0.60 p99us=1.10
PLAYER PERF event-bindings n=1000 ops=3377237.42 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=2.00 p50us=0.20 p95us=0.60 p99us=1.00
PLAYER PERF event-register-withdraw n=10000 ops=725100.06 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=10.00 p50us=0.80 p95us=1.70 p99us=2.40
</output></test-case><test-case id="1028" name="NetworkMatrix" fullname="PlayerPerformance.NetworkMatrix" methodname="NetworkMatrix" classname="PlayerPerformance" runstate="Runnable" seed="1191258313" result="Passed" start-time="2026-09-28 22:58:49Z" end-time="2026-09-28 22:58:57Z" duration="7.587226" asserts="0">PLAYER PERF loopback-rpc/bytes=64/sessions=1 n=128 ops=42139.92 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=100.00 p50us=22.40 p95us=32.20 p99us=35.80
PLAYER PERF loopback-broadcast/bytes=64/sessions=1 n=20 ops=135777.33 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=37.00 p50us=7.20 p95us=9.20 p99us=9.20
PLAYER PERF loopback-rpc/bytes=64/sessions=32 n=128 ops=22296.16 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=100.00 p50us=24.60 p95us=46.10 p99us=96.20
PLAYER PERF loopback-broadcast/bytes=64/sessions=32 n=20 ops=3283.21 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=1060.00 p50us=215.80 p95us=1999.10 p99us=1999.10
PLAYER PERF loopback-rpc/bytes=64/sessions=256 n=128 ops=16764.02 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=100.00 p50us=33.90 p95us=42.50 p99us=115.00
PLAYER PERF loopback-broadcast/bytes=64/sessions=256 n=20 ops=331.02 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=8452.00 p50us=3052.70 p95us=5858.40 p99us=5858.40
PLAYER PERF loopback-rpc/bytes=1024/sessions=1 n=128 ops=13102.67 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=102.00 p50us=27.70 p95us=302.40 p99us=1201.80
PLAYER PERF loopback-broadcast/bytes=1024/sessions=1 n=20 ops=117164.62 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=38.00 p50us=8.40 p95us=10.40 p99us=10.40
PLAYER PERF loopback-rpc/bytes=1024/sessions=32 n=128 ops=15497.49 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=102.00 p50us=27.60 p95us=62.90 p99us=1200.70
PLAYER PERF loopback-broadcast/bytes=1024/sessions=32 n=20 ops=1648.17 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=1092.00 p50us=361.60 p95us=1577.50 p99us=1577.50
PLAYER PERF loopback-rpc/bytes=1024/sessions=256 n=128 ops=12226.92 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=102.00 p50us=29.00 p95us=305.10 p99us=1402.90
PLAYER PERF loopback-broadcast/bytes=1024/sessions=256 n=20 ops=194.15 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=8708.00 p50us=4612.30 p95us=10631.00 p99us=10631.00
PLAYER PERF loopback-rpc/bytes=32768/sessions=1 n=128 ops=828.26 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=112.60 p50us=1123.40 p95us=3500.10 p99us=3837.10
PLAYER PERF loopback-broadcast/bytes=32768/sessions=1 n=20 ops=1815.71 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=43.00 p50us=98.60 p95us=3193.40 p99us=3193.40
PLAYER PERF loopback-rpc/bytes=32768/sessions=32 n=128 ops=842.40 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=112.00 p50us=1163.90 p95us=3475.30 p99us=3500.30
PLAYER PERF loopback-broadcast/bytes=32768/sessions=32 n=20 ops=65.08 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=1252.90 p50us=15096.30 p95us=26400.40 p99us=26400.40
PLAYER PERF loopback-rpc/bytes=32768/sessions=256 n=128 ops=830.36 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=112.60 p50us=1230.40 p95us=3500.80 p99us=3549.90
PLAYER PERF loopback-broadcast/bytes=32768/sessions=256 n=20 ops=8.67 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=9995.60 p50us=114364.50 p95us=124433.00 p99us=124433.00
<properties><property name="_JOINTYPE" value="UnityCombinatorial"></property></properties><output>PLAYER PERF loopback-rpc/bytes=64/sessions=1 n=128 ops=42139.92 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=100.00 p50us=22.40 p95us=32.20 p99us=35.80
PLAYER PERF loopback-broadcast/bytes=64/sessions=1 n=20 ops=135777.33 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=37.00 p50us=7.20 p95us=9.20 p99us=9.20
PLAYER PERF loopback-rpc/bytes=64/sessions=32 n=128 ops=22296.16 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=100.00 p50us=24.60 p95us=46.10 p99us=96.20
PLAYER PERF loopback-broadcast/bytes=64/sessions=32 n=20 ops=3283.21 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=1060.00 p50us=215.80 p95us=1999.10 p99us=1999.10
PLAYER PERF loopback-rpc/bytes=64/sessions=256 n=128 ops=16764.02 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=100.00 p50us=33.90 p95us=42.50 p99us=115.00
PLAYER PERF loopback-broadcast/bytes=64/sessions=256 n=20 ops=331.02 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=8452.00 p50us=3052.70 p95us=5858.40 p99us=5858.40
PLAYER PERF loopback-rpc/bytes=1024/sessions=1 n=128 ops=13102.67 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=102.00 p50us=27.70 p95us=302.40 p99us=1201.80
PLAYER PERF loopback-broadcast/bytes=1024/sessions=1 n=20 ops=117164.62 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=38.00 p50us=8.40 p95us=10.40 p99us=10.40
PLAYER PERF loopback-rpc/bytes=1024/sessions=32 n=128 ops=15497.49 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=102.00 p50us=27.60 p95us=62.90 p99us=1200.70
PLAYER PERF loopback-broadcast/bytes=1024/sessions=32 n=20 ops=1648.17 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=1092.00 p50us=361.60 p95us=1577.50 p99us=1577.50
PLAYER PERF loopback-rpc/bytes=1024/sessions=256 n=128 ops=12226.92 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=102.00 p50us=29.00 p95us=305.10 p99us=1402.90
PLAYER PERF loopback-broadcast/bytes=1024/sessions=256 n=20 ops=194.15 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=8708.00 p50us=4612.30 p95us=10631.00 p99us=10631.00
PLAYER PERF loopback-rpc/bytes=32768/sessions=1 n=128 ops=828.26 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=112.60 p50us=1123.40 p95us=3500.10 p99us=3837.10
PLAYER PERF loopback-broadcast/bytes=32768/sessions=1 n=20 ops=1815.71 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=43.00 p50us=98.60 p95us=3193.40 p99us=3193.40
PLAYER PERF loopback-rpc/bytes=32768/sessions=32 n=128 ops=842.40 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=112.00 p50us=1163.90 p95us=3475.30 p99us=3500.30
PLAYER PERF loopback-broadcast/bytes=32768/sessions=32 n=20 ops=65.08 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=1252.90 p50us=15096.30 p95us=26400.40 p99us=26400.40
PLAYER PERF loopback-rpc/bytes=32768/sessions=256 n=128 ops=830.36 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=112.60 p50us=1230.40 p95us=3500.80 p99us=3549.90
PLAYER PERF loopback-broadcast/bytes=32768/sessions=256 n=20 ops=8.67 allocBytes=unsupported allocationSamples=10 allocEventsPerOp=9995.60 p50us=114364.50 p95us=124433.00 p99us=124433.00
</output></test-case><test-case id="1030" name="SlowConsumerAndBurst" fullname="PlayerPerformance.SlowConsumerAndBurst" methodname="SlowConsumerAndBurst" classname="PlayerPerformance" runstate="Runnable" seed="1818114386" result="Passed" start-time="2026-09-28 22:58:57Z" end-time="2026-09-28 22:58:57Z" duration="0.015841" asserts="0">PLAYER Queue pending=32 bytes=32768 replaced=96 rejected=0
<properties><property name="_JOINTYPE" value="UnityCombinatorial"></property></properties><output>PLAYER Queue pending=32 bytes=32768 replaced=96 rejected=0
</output></test-case></test-suite></test-suite></test-suite>
@@ -0,0 +1,71 @@
{
"success": true,
"formatVersion": 1,
"toolVersion": "0.1.2.0",
"command": "flow",
"query": "key:acceptance.missing",
"buildId": "948c506123180e66b99b27e65945088a722988b7be5c5548faeaa46a58966104",
"offset": 0,
"limit": 20,
"nextOffset": null,
"coverage": [
"Installed ShrinkSDK package sources are included; other external packages are reference-only.",
"Snapshot: Default Context and named EventBus instances only; host-owned instances require CaptureHostState registration."
],
"coverageTruncated": false,
"semanticCoverage": {
"incompleteCount": 10,
"examples": [
"Editor",
"Runtime",
"Core",
"Editor",
"Rules"
]
},
"validation": [],
"total": 2,
"truncated": false,
"items": [
{
"From": "fiber:acceptance-waiting:1",
"To": "key:acceptance.missing",
"Kind": "requires@acceptance.missing [acceptance-waiting]",
"Evidence": "runtime-bound",
"Location": {
"File": "D:\\UnityBuilds\\ShrinkSDK\\Artifacts\\Inspection\\runtime.json",
"Line": 1
}
},
{
"Scope": "acceptance-waiting",
"Name": "Fibers",
"Value": {
"Uid": 1,
"Name": "acceptance-waiter",
"Status": 1,
"Retired": false,
"InTransition": false,
"Inject": [
"acceptance.missing"
],
"Provide": [],
"Dependencies": [
{
"Key": "acceptance.missing",
"Realm": "acceptance.missing",
"CurrentProviderUid": null,
"CommittedProviderUid": null,
"PotentialProviderUids": [],
"IsSatisfied": false
}
],
"ErrorType": null
},
"Location": {
"File": "D:\\UnityBuilds\\ShrinkSDK\\Artifacts\\Inspection\\runtime.json",
"Line": 1
}
}
]
}