@crvouga/mockingbird-service-docker (英语)
本地模拟器。 真正的API合同. 部分 嘲笑鸟。 。 。 .
工作在建多克引擎 API 1.52模拟器. 它执行GET/HEAD /_ping, (中文(简体) ),
获取 /version, (中文(简体) ), /info, (中文(简体) ), /containers/json,以及 /containers/{id}/json附加时
鸟类共享运行时间控制. 邮政 /containers/create 持续停止
集装箱。 开始、等待、停止、杀死和清除使用明确的模拟完成.
节点条目支持非TTY附加和脚本双通流. 合同是
被钉住 API 证据.md· ; 支助 列出操作.
安装
bun add @crvouga/mockingbird-service-docker
使用量
import { DockerClient } from "@docker/node-sdk"
import { createServer } from "@crvouga/mockingbird-service-docker/server"
// Docker's Node SDK, as your application uses it (run with Node; its transport does not
// work under Bun). Only the Docker host changes.
const server = await createServer({ seed: 42 })
const docker = await DockerClient.fromDockerHost(`tcp://${server.host}:${server.port}`)
console.log(await docker.systemPing()) // 1.52
await docker.close()
await server.close()
使用 DockerAPI 仅供供应商获取表面,或 createRuntime 卫生,
管理控制,命名空间,断层,度量,以及请求日记. 无条目
导入节点服务器。 节点条目提供 createServer() 以白昼盟誓
默认回回转端口; 用 await server.close() 测试后.
mockingbird-docker serve --port 8826
HTTP 客户端可以瞄准 http://127.0.0.1:8826。使用 DOCKER_HOST
能够选择 tcp://127.0.0.1:8826未转录和 /v1.52 供应商的路线工作.
1.52以上或低于模拟引擎最低1.44接收供应商的版本
400个错误(在1.24下说明案文,JSON除外)。 1.44-1.51版本收到
明确仿真器只501:其线条格式没有被执行. 模拟报告
合成引擎 29.1.0 身份; 这不是本地的多克版本.
API 1.52 选取的情景比对引擎 29.8.0; 完整的客户端和引擎
兼容性不主张 。 见 核查边界。 。 。 .
节点 HTTP 示例
用节点对已建软件包运行此操作 。 服务器使用麻黄素 回回端口和合成状态;不需要多克安装.
import { DockerClient } from "@docker/node-sdk"
import { createServer } from "@crvouga/mockingbird-service-docker/server"
const server = await createServer({ seed: 42 })
const docker = await DockerClient.fromDockerHost(`tcp://${server.host}:${server.port}`)
try {
console.log(await docker.systemVersion())
} finally {
await docker.close()
await server.close()
}
对于 Unix 套接字, 通过一个绝对的, 缺席 socketPath 在测试目录中
,并使用节点HTTP请求如下: CLI 使用共享 TCP
适配器; 使用 createServer 为多克的附着物和Unix-socket运输.
合成观测
POST /__admin/docker/seed 在选中的图像和容器中进行解析
名称空间。 它从不下载图像或启动进程. 例如:
import { DockerClient } from "@docker/node-sdk"
import { createServer } from "@crvouga/mockingbird-service-docker/server"
const server = await createServer({ seed: 42 })
// Test setup: seed synthetic observations.
await fetch(`${server.url}/__admin/docker/seed`, {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({
images: [{ id: `sha256:${"a".repeat(64)}`, tags: ["synthetic:latest"] }],
containers: [{
id: "b".repeat(64), name: "worker", image: "synthetic:latest",
status: "running", labels: { suite: "example" }, cmd: ["synthetic-worker"],
}],
daemon: { rootless: true },
}),
})
// The application sees them through Docker's SDK.
const docker = await DockerClient.fromDockerHost(`tcp://${server.host}:${server.port}`)
const [worker] = await docker.containerList({ all: true })
console.log(worker?.Names, worker?.State) // [ '/worker' ] running
await docker.close()
await server.close()
图像标识是不可改变的 SHA-256 字符串; 容器标识是独立的 64 字符
小写十六进制字符串。 集装箱 image 解决已存在的图像 ID
或精确标记。 复制ID、名称和图像标签冲突;未知图像返回
404. 无效的种子场返回400个,然后将整个种子倒回. 集装箱
字段还接受 exitCode, (中文(简体) ), entrypoint, (中文(简体) ), env, (中文(简体) ), workingDir, (中文(简体) ), user, (中文(简体) ),
hostConfig, (中文(简体) ), networkSettings, (中文(简体) ), sizeRw,以及 sizeRootFs状态是
created, (中文(简体) ), running, (中文(简体) ), paused, (中文(简体) ), restarting, (中文(简体) ), removing, (中文(简体) ), exited,或 dead。 。 。 .
时间戳使用仿真器时钟;报告的PID为零,从不主机进程.
GET /__admin/docker/daemon 报告 { available, rootless, simulated: true }。 。 。 .
POST 改为相同的路由变化 . available: false 丢弃提供者
在共享的保健/管理路线仍然无障碍和集装箱状态的情况下提出请求
保留。 无根、安全、操作系统、构建、大小和资源元数据
合成观测,不是主机证明或执行.
列出运行容器的默认值,包括已暂停/重新启动的容器. all, (中文(简体) ),
正数 limit,或一个 status 过滤器包括已停止的容器. limit 选择
最新结果; size 包括种子字节数。 就像被钉住一样
引擎的布尔分解器, 空/0/ 否/ 假/ 无( 对大小写不敏感) 表示错误和
其他价值观意味着真实。 透视解决了完整的ID,独特的前缀,和名.
filters 接受 JSON 字符串阵列或布尔键集 id, (中文(简体) ), name, (中文(简体) ),
status, (中文(简体) ), label,以及 exited与和;a
类别与 OR 合并,但标签必须全部匹配。 名称匹配
支持文字、点、锚,最多一个 .*; 其他正则构造
和其他过滤类返回明确的模拟器只返回501个错误。 错误
过滤形状、状态和退出代码返回400。 种子状态和守护进程
设置参与共享重设和时间线检查站.
集装箱的创建
调用前种子图像 POST /containers/create。图像种子可能包括
platform (默认) linux/amd64和 config 包含支持的图像默认值.
创建可解析图像ID或精确标记, 添加 :latest 到一个未标记的引用.
它从不拉动或执行图像. 缺少图像和请求的平台
不匹配返回404;一个隐含的主机-平面不匹配产生警告.
支持的身体领域是: Image, (中文(简体) ), Cmd, (中文(简体) ), Entrypoint, (中文(简体) ), Env, (中文(简体) ), Labels, (中文(简体) ),
WorkingDir, (中文(简体) ), User, (中文(简体) ), Hostname, (中文(简体) ), Domainname, (中文(简体) ), AttachStdin, (中文(简体) ), AttachStdout, (中文(简体) ),
AttachStderr, (中文(简体) ), OpenStdin, (中文(简体) ), StdinOnce, (中文(简体) ), Tty, (中文(简体) ), NetworkDisabled, (中文(简体) ), StopSignal, (中文(简体) ),
StopTimeout, (中文(简体) ), HostConfig,以及 NetworkingConfig返回不支持的字段
明确仿真器只出501个错误。 不良的字段类型, 相对的工作目录,
无效的停止信号,无效的名称,和缺失的命令返回400.
图像默认供应命令/入口点、环境、标签和所选
字符串。 请求环境密钥和标签优先. Entrypoint: [""]
清除图像条目; 提供替换命令.
使用 ?name=... 为稳定的名字。 相互冲突的名称返回409个,包括同时
创建请求。 通用名称的使用 mockingbird_<id-prefix>答复中载有
Id 财务报告和审定财务报表 Warnings身份证是确定性合成64个特征的六分弦,
无法在存储的记录中变相,并使用共享的ID序列恢复
时行取出. 新记录检查为 created 与 Running: false。 。 。 .
支助 HostConfig 元数据包括 NetworkMode, (中文(简体) ), IpcMode, (中文(简体) ), PidMode, (中文(简体) ),
CgroupnsMode, (中文(简体) ), Runtime, (中文(简体) ), AutoRemove, (中文(简体) ), ReadonlyRootfs, (中文(简体) ), Privileged, (中文(简体) ), Init, (中文(简体) ),
Memory, (中文(简体) ), MemorySwap, (中文(简体) ), NanoCpus, (中文(简体) ), CpuShares, (中文(简体) ), PidsLimit, (中文(简体) ), Binds, (中文(简体) ), CapDrop, (中文(简体) ),
CapAdd, (中文(简体) ), SecurityOpt, (中文(简体) ), Dns, (中文(简体) ), ExtraHosts, (中文(简体) ), Mounts, (中文(简体) ), Tmpfs, (中文(简体) ), PortBindings, (中文(简体) ),
RestartPolicy,以及 LogConfig。 。 。 . NetworkingConfig.EndpointsConfig 保留
接受检查 NetworkSettings.Networks组合
不强制使用资源、挂载、安全控制或网络设置.
内嵌主机元数据按提供时保留;完整守护进程专用资源及
网络验证不是模拟的。 没有任何主机隔离的说法.
开始、 等待和脚本完成
POST /containers/<id>/start 标记正在运行的已创建/已退出的容器(204个),
返回已运行/ 重新启动时的 304, 返回暂停时的 409, 已死亡 ,
或删除记录。 没有执行图像 。 钟表供应 StartedAt· ;
重新开始清除退出代码但保留前一个 FinishedAt 直至完成为止.
检查点、 检查点目录和解开Keys 选项只返回 501 明确模拟器.
和被钉住的引擎路线一样 尸体长于7字节 尸体被打碎
返回 400; 使用空体.
POST /containers/<id>/wait?condition=... 接受 not-running (亦为默认)
对省略/空值, next-exit,或 removed信头立即到达;
jSON机构 { "StatusCode": 7 } 只有在条件成熟时才能到达.
不运行返回已停止/ 创建的容器 。 下一个出局等待
即使已经停止了 未来出口 已删除的
普通出口 。 无效条件返回400个,未知容器返回404个
在打开溪流之前.
使用 POST /__admin/docker/containers/<id>/complete 与 { "exitCode": 7 } 改为
明确完成运行中的合成容器。 继续完成 exited, (中文(简体) ),
FinishedAt,以及所提供的整数代码,唤醒相关的服务员,并抓取
a 共用时光线检查站。 若为 HostConfig.AutoRemove 是真的, 也完成
删除合成记录并满足被删除的等待。 没有主机资源
触动。 在停止返回时重复完成 409 。 这些控制在
; 提供者操作可以使用共享分支.
GET /__admin/docker/waits 报告命名空间等待 和终止操作.
中止请求或取消其响应机构释放其等待手柄.
重置取消在重置名称空间中等待; runtime.close(), (中文(简体) ), DockerAPI.close()
财务报告和审定财务报表 createServer().close() 取消自有等待 。 取消的机构拒绝
而不是编造一个退出代码。 等待手柄是短暂的,从未被序列化.
检查和快照在恢复实例之前恢复已取消的控件
替换状态;后续的完成不能满足旧的等待.
生成的等值排除了屏蔽等; 确定获取和真实的 HTTP 测试
包括完成/取消行为。 单独的真正的引擎预告
检查选定的等待和终止结果;取消范围是合成的.
停止、信号和清除
POST /containers/<id>/stop 记录一个已接受的停止请求而无需更改
Running. HTTP 请求尚待明确完成控制
完成执行,然后返回204。 已经停放的集装箱返回304.
signal 选择请求的信号(默认配置)。 停止信号或TERM); t
选择超时(默认配置)。 停止时断或10秒; 负表示否
升级暂停)。 模拟器记录这些参数,用于情景检查.
它不安排实时计时器, 也不在超时时自动宣布退出
过期: 脚本优雅地完成或强制完成, 包括退出代码,
结束 /__admin/docker/containers/<id>/complete。允许控制延迟
终止时不编造早期 Docker 成功响应 .
POST /containers/<id>/kill 默认为SIGKILLL, 并保留其204个答复待决
; 明确的 KILL/9 行为相同。 其他支持的 Linux
信号名称/数字确认交付204份,同时保留执行
状态。 固定决定了随后的流程响应. 没有主机信号
发送。 杀死一个被停止的容器返回409。 无效的杀害信号返回400;
被绑定的引擎停止信号错误和错误 t 返回500块。 外部超时
JavaScript 的安全整数范围返回明确模拟器-只返回 501.
DELETE /containers/<id> 删除已停止的记录并公布其名称(204).
运行或暂停的记录需要 force=true; 否则去除返回 409 .
强制删除记录意图和等待明确完成,然后删除
记录和唤醒 既退出和被移除的服务员。 强制驱逐时第二次驱逐
正在等待返回409。 种子状态 removing 以模拟已有去除
冲突。 失踪记录还回了404分. v 被接受,但没有主机卷;
link=true 位于此子集之外,返回模拟器仅501.
GET /__admin/docker/containers/<id>/termination 返回最后接受的请求
(操作、数字信号、可选超时和请求时间), removalPending, (中文(简体) ),
财务报告和审定财务报表 simulated: true这些诊断领域不是多克电线领域.
取消停止/杀/取回回复只释放回复手柄。 接受意图
和运行状态幸存套接字丢失;仍然适用明确的完成,包括
等待强制驱离。 重新设置清除命名空间并取消其待决回复 .
关闭运行时间/ 服务器取消答复而不要求退出 。 接受-更改
如所述,通过共享的时线检查站,历史通过应对损失得以幸存
在下文的失败设想中.
控件
GET /__admin/health报告准备情况和服务身份.- 选择独立状态
x-mockingbird-namespace或者说/__admin/ns/<name>/…。 。 。 . POST /__admin/reset重新设置选定命名空间的记录和时间线;?all=1重新设置所有命名空间 。 它保存了时钟,故障配置和日记.POST /__admin/clock接受共享set, (中文(简体) ),advance,以及freeze控制系统.POST /__admin/faults按操作、路径或方法配置断层.DELETE /__admin/faults清除他们。 道克断层预设说明如下.GET /__admin/requests披露元数据,从不要求机构或查询值;DELETE /__admin/requests清除选定的日记.POST /__admin/checkpoints, (中文(简体) ),POST /__admin/branches/<name>,以及POST /__admin/branches/<name>/checkout使用共享的时间线协调器. 没有Docker本地历史管理器。 过{ "checkpoint": "cp_…" }准备离职.
共享 adminKey 选项门管理路径。 多克证书命名空间
选择、网络选择和提供者证书没有配置.
API 密码
便携 @crvouga/mockingbird-service-docker 条目导出 :
DockerAPI: 提供者获取处理器fetch, (中文(简体) ),reset,以及close。 。 。 .DOCKER_NAMESPACE: 默认存储命名空间( s)docker) (中文(简体) ).createRuntime:提供商外加标准的相扑鸟控制和时光线.document:附加说明的OpenAPI合同.operationIds:所有清点的操作ID,包括不支持的路线.supportedOperationIds:目前已执行操作ID.
只有节点 @crvouga/mockingbird-service-docker/server 条目导出 :
createServer: HTTP 服务器runtime, (中文(简体) ),url, (中文(简体) ),port, (中文(简体) ),host, (中文(简体) ),server, (中文(简体) ),close, (中文(简体) ),attachments()和可选 UnixsocketPath。 。 。 .DEFAULT_PORT: CLI默认端口,8826 (程序默认为ephemeral).serveTarget: 共享 CLI 服务器配置.
出口类型包括: DockerAPIOptions, (中文(简体) ), DockerRuntime, (中文(简体) ), DockerRuntimeOptions, (中文(简体) ),
OperationId, (中文(简体) ), SupportedOperationId,而节点条目的 DockerServer 财务报告和审定财务报表
DockerServerOptions, (中文(简体) ), AttachStreamOptions,以及 DockerAttachment执行文件 mockingbird-docker 提供 serve。 。 。 .
故意不模拟
获取附加和不支持的选项返回 Mockingbird 特定 501 JSON 错误 ; 未知路线回404路. 模拟器从不启动真实的容器或执行 命令。 节点服务器支持所记录的非TTY附加握手和 脚本双层流; 获取响应不能代表该升级 .
图像构建/推出,注册访问,执行,TTY流,日志重放,真实网络, 挂载、量、资源执行、同行证书和主机隔离 在这个包裹之外。 报告无根/ 安全设置和主机配置字段 是合成元数据。 逻辑重启控制不复制真正的守护进程 重启或恢复直播 。 没有核实倡议的协调和恢复政策.
失败情景和逻辑重启
每次行动 create, (中文(简体) ), start, (中文(简体) ), stop, (中文(简体) ), kill,以及 remove,安装
一用预设通过 POST /__admin/faults 与
{"preset":"docker_<operation>_pre_failure"} 或者说
{"preset":"docker_<operation>_accepted_drop"}。第一个返回前 503
变相. 第二个让验证和变异运行,捕捉接受的
在共享时间线中状态,然后删除回复。 验证失败, 无变化
操作不会变成可接受的突变。 失信后检查状态;
单凭接受并不能确定集装箱的退出或去除.
共享日记记录丢失了0级回复, accepted: true,则
接受 checkpoint集装箱身份证和故障身份证 普通拒绝的操作
不得设立验收检查站。 在终止合同之前,对终止合同的意图进行检查站检查
在等待完成之前,包括当呼叫者后来断开时.
POST /__admin/docker/restart 需要明确 containers 选择 :
"preserve" 保留执行状态和接受意图; "terminate" 完成
运行容器 exitCode (违约137),适用待移送和
自动移动 。 取消已有的等/ 复制处理, 设置守护进程可用性到
,并检查选中的名称空间主分支。 无效的输入更改
没什么 守护进程可用性也会在独立执行的情况下更改检查点.
这些是合成假想控制,不是声称一个真正的守护进程重启
策略或活存储配置。 没有重新启动守护进程或主机进程 .
节点Unix-socket 传输
方案节点条目支持 createServer({ socketPath }) 在乌尼克斯.
在一个测试拥有的目录中提供绝对的,没有的路径(最多103个UTF-8字节).
它拒绝现有的文件, 并联和套接字, 包括 stale 套接字; 它永远不会
解开锁以腾出来. 不要使用主机引擎路径 。 操作系统
节点当 await server.close() 完成 。 关闭也
取消运行时间等待并销毁自有连接; 重复关闭调用共享
一个关闭操作。 测试必须关闭他们的服务器 在最后块.
使用节点 HTTP request({ socketPath, path: "/_ping" }) 用于Unix请求。 这个
已返回 socketPath 确定终点; url 是合成的 HTTP 来源
http://docker.mock 财务报告和审定财务报表 port 为 0。对于 TCP,省略 socketPath 和使用情况 host编号 :port
和以前一样 合并 Unix 和 TCP 选项拒绝 。 连续保留 HTTP/1.1
要求进行两起运输。 每次连接都允许一次主动请求;
在回复结束之前将另一项请求排入管道
在发送额外请求之前。 故意下降会关闭连接
运输不重新连接客户端.
createServer 将身体绑定为 maxBodyBytes (默认 1 MiB,包括块
页:1 bodyTimeoutMs 收到截止日期(默认为30秒)。 拒绝
返回运输专用的413或408,并关闭连接而不援引
供应商操作。 回应等没有人为执行期限. 页眉
大小限制为 16 KiB, 信头/ 请求获得时间至 30 秒, 闲置
保持活动到5秒,同时连接到 maxConnections (默认)
页:1 这些限制是Mockingbird控制,而不是多克引擎等价索赔.
现有的CLI/共享机队目标仍然使用共享的TCP适配器; Unix
目前需要套接字和这些多克运输限制 createServer。 。 。 .
没有同行证书、 proffs 出处、 主机隔离或真正的引擎访问
权利主张。 附录框架和寿命控制说明如下.
节点附加握手
发送 /v1.52/containers/<id>/attach?stream=1&stdout=1&stderr=1 与
Connection: Upgrade 财务报告和审定财务报表 Upgrade: tcp 改为 createServer未转换附件
使用相同的固定合同。 反应是 101 UPGRADED 与
Content-Type: application/vnd.docker.multiplexed-stream, (中文(简体) ), Connection: Upgrade, (中文(简体) ),
财务报告和审定财务报表 Upgrade: tcp。通过第一个 CRLFCRLF 读取并保留以下所有内容
字节。 此双复式升级不能用“ 获取” 响应来表示; 普通
获取和非升级请求继续返回明确501.
stream=true, (中文(简体) ), logs=false,并接受 stdin/stdout/stder 选择
握手谈判。 TTY, 重放, 拆分 Keys, 未知的查询模式和非 TCP
升级不支持。 缺少容器和暂停/重新开始使用冲突
带有原始流内容类型的被标注的预升级纯文本错误信封.
共享命名空间,分支,断层,守护进程可用性和请求日志应用.
随附录入被记为101,本身不检查为突变.
对于协议固定装置, attachHandshake: { chunkBytes, initialStreamBytes }
分页头写入合成的1至4096字节块和附件,最多1个米B
已刻入到最后一个片段的字节 。 这不能保证OS包
边框。 字节是呼叫者拥有的电线固定装置,不是生成的容器
输出。 使用下面的活附件控件来构建、频道路由和脚本
斯丁语. 没有命令解释输入,有效载荷字节从不输入日记. 连接丢失不会停止容器 .
服务器关闭时拥有套接字 。 模拟器从不连接到真正的引擎;
单独引用的甲骨文执行授权提供者的比较.
脚本附件流
server.attachments() 返回当前节点拥有的控点。 每个都暴露出一个 id, (中文(简体) ),
containerId公开 namespace 财务报告和审定财务报表 branch附加时 closed, (中文(简体) ), stdinClosed 财务报告和审定财务报表
queuedBytes。只保留该附件的手柄;它不能处理
恢复容器或在其寿命结束后重新执行.
import type { DockerServer } from "@crvouga/mockingbird-service-docker/server"
// Call after a client attaches to a running container on this server.
export async function writeAttachedOutput(server: DockerServer) {
const [attachment] = server.attachments()
if (attachment) {
await attachment.write("stdout", new TextEncoder().encode("synthetic output"))
const rawInput = attachment.takeStdin()
await attachment.end()
return rawInput
}
}
write("stdout" | "stderr", bytes) 以 8 字节发布选定频道
多克头 (1/2道, 三条保留了零字节, uint32大端长)
然后是确切的有效载荷。 空帧工作; 同步写入序列化
没有框相接。 未选中的输出被忽略 。 等待每次写入
后压. attachStreams.frameChunkBytes 协议测试的拆分框架
(default 64 KiB); OS包边界仍然不受控制.
Incoming stdin是原始的,包括HTTP升级前读取的字节. 投入
需求 stdin=1 和容器 OpenStdin=true;否则会被忽略.
takeStdin() 排出受限合成输入缓冲器。 没有执行程序 .
与 StdinOnce=true,输入 EOF 关闭型号集装箱 Stdin和检查站
该状态不宣布退出;输出可持续到明确完成.
没有StdinOnce,有效的 stdin EOF 结束附件并离开容器
输入可重复使用。 启动新执行重开模型输入 。 运输损失
单凭一己之力,就绝不是集装箱的完成.
end() 队列框后脚本输出 EOF 。 对于非TTY StdinOnce容器,
它保留连接直到明确的进程完成,匹配被绑定的
处理者等待. cancel() 立即断开这个附件。 进程
完成在队列输出后结束附件。 重设,快照恢复,
退出、合成重启和关闭 立即使受影响者失效
物理实例的手柄; 其他命名空间/空格仍然隔离。 队列
stale写着拒绝。 套接字柄和缓冲有效载荷从未被快照.
attachStreams.maxQueuedBytes 财务报告和审定财务报表 maxStdinBytes 默认为 1 MiB. 排队输出
包括帧头; 超过输出限制拒绝写入。 超过
未读 stdin 容量取消该附件 。 流限必须是正数
整数不大于16 MiB。 这些界限是模拟资源控制.
核查边界
bun run build && bun test 使用无发动机的模型合同或
证书。 生成的 OpenAPI 自平称,所有8个符合条件
计划和执行操作:列表、创建、检查、启动、信息、版本、,
继续前进,继续前进 生成的行包括出错路径; 已生效的计数
单靠它并不能成功创建或实现国家过渡。 一个种子
非空列表比较法( 非空列表比较法) 此外, 拒绝故意错误、 计程验证
执行状态。 独立的电线方案涵盖成功的突变.
test/node-consumer.mjs 运行在本地节点下对已建服务器条目,
一次通过回回转 TCP 一次通过测试拥有的 Unix 套接字。 它使用节点HTTP
请求保留连接和原始附件字节。 它验证丢失的创造
并启动响应、按名称查找、重复名称冲突、框架二进制
stdout/stder,生 stdin,附件丢失后继续执行,并丢失
停止/杀死/撤销反应,然后完成和重新检查。 设置和
补全使用公共仿真器管理控件; 附件控件只输出脚本
并观察合成Stdin。 公共请求元数据确认每个丢弃的变异
被接受并检查。 没有客户声称进口供应商的处理者或
内部状态。 固定器从不自动重试突变.
等待/停止/杀死/转移有确定性生命周期和电线测试,而不是 无限制的生成行走。 附加使用专用的生线测试, 因为获取 无法代表双倍的 HTTP 升级 。 被宣布的多克消费者是活口, 因此,没有SDK兼容性主张或取代了有线覆盖。 自我均等 合成消费者测试与真正的引擎差分证据是分开的 并且不核查举措的回收政策或东道方的执行.
选入 真正的引擎预告 需要明确授权 当前引擎端点和永久图像。 记录的引擎 29.8.0 运行 通过了29项选定的API 1.52比较;范围见证据记录和 限制。 引擎身份字段和完整的API 1.56相容性不主张.