@crvouga/嘲笑鸟-服务-哨兵
本地模拟器。 真正的API合同. 部分 嘲笑鸟。 。 。 .
一个状态良好的哨兵SDK运输和事件/问题断言模拟器。 此初始软件包是 阴道数字 : 其受限表面遵循官方信封协议和中继响应,而不是整个 哨兵产品. 测试不需要供应商账户、集装箱、秘密或外出电话.
安装
bun add -d @crvouga/mockingbird-service-sentry
使用量
import * as Sentry from "@sentry/node"
import { DEFAULT_PROJECT } from "@crvouga/mockingbird-service-sentry"
import { createServer } from "@crvouga/mockingbird-service-sentry/server"
// Test setup: the emulator, and a DSN that points the Sentry SDK at it.
const server = await createServer()
const dsn = `${server.url.replace("://", `://${DEFAULT_PROJECT.publicKey}@`)}/1`
// The app's own Sentry calls.
Sentry.init({ dsn })
Sentry.captureMessage("Fixture failure", { fingerprint: ["fixture-group"] })
await Sentry.flush(2000)
// The test asserts on what the emulator captured.
const captured = await (await fetch(`${server.url}/__admin/events?project=1`)).json()
console.log(captured.events.length) // 1
await Sentry.close()
await server.close()
官员 @sentry/nextjs 财务报告和审定财务报表 @sentry/node SDKs都采用 DSN: 开始 createServer() 从
页:1 /server 条目和设置 SENTRY_DSN 改为 http://<DEFAULT_PROJECT.publicKey>@127.0.0.1:<port>/1,或
给它 init编号 :NodeClient。两个SDK在 11.4.0 (中文(简体) ) (报告未提供标注版).
使用 SDK flush() 完成提交,然后 POST /__admin/flush {"eventIds": […], "count": n}
即时声明: flushed: false 意味着条件没有得到满足;它永远不会入睡.
REST请求的使用 Authorization: Bearer fixture-rest-token。 。 。 . projects 财务报告和审定财务报表 restTokens 选项
替换这些构造器固定装置。 每个项目包括组织、数字字符串、,
子弹,名字和32赫克的公用钥匙。 默认显然是合成的. 每个名称空间都收到
它自己的构造器固定装置,在重置时返回它们.
mockingbird-sentry serve --port 8810
路线和行为
POST /api/{project}/envelope/:字节精确的信封解析,隐含或明确长度, UTF-8 JSON 标题, 二进制附件, 未知项保留, 事件/ 交易/会话/ 届会/客户-报告项目。 Gzip/deflate请求压缩支持. 答复是:200 {"id": "<event ID>"}当ID适用时,或200 {}用于会话/只报告信封.POST /api/{project}/store/: JSON 事件摄取; 生成一个确定性的 32- hex 事件 ID 当缺席时。 遗产message: false被接受并被忽略,匹配中继日志 Entry; 原始 输入属性不能覆盖已规范的 REST 字段。 事件 ID 调试每个项目, 包括同时重试: 重播返回 同一ID,没有第二次抓取,发出计数或附件.POST /api/{project}/minidump/: 原生小型水泵或多部分upload_file_minidump选项sentryJSON和额外的文件. 返回连字符事件 UUID 作为纯文本, 如 Relay . 验证 MDMP/PMDM 魔法并保留字节;原生崩溃符号不模拟.GET /api/0/projects/{organization}/{project}/events/: 最新错误事件, 赤出数组,full=true封顶一页为 10。 交易在细节和管理员搜索中仍然可用.GET /api/0/projects/{organization}/{project}/events/{event}/:事件ID,消息/标题, 例外/套接字条目、上下文、面包屑、标签和固定用户身份.GET /api/0/projects/{organization}/{project}/issues/: 光阵列组;默认为is:unresolved, (中文(简体) ),query=包括所有状态。 明确指纹优先;倒计时 分组是基于例外标题/框架,或配置时的信息.GET编号 :PUT /api/0/issues/{issue}/财务报告和审定财务报表/api/0/organizations/{organization}/issues/{issue}/数字 : 读取或设定status改为unresolved, (中文(简体) ),resolved,或ignored解决一直持续到 明文状态更新; 自动回归检测在此初始模拟器之外.GET /api/0/projects/{organization}/{project}/events/{event}/attachments/财务报告和审定财务报表/{attachment}/数字 : 附件元数据;?download=1细节中将原字节返回给已认证的呼叫者.
读取页标使用 limit (1-100), (中文(简体) ), cursor=0:<offset>:<previous flag> 还有哨兵 Link
双向页眉 rel="previous" 财务报告和审定财务报表 rel="next",其光标,以及 results="true|false"。 。 。 .
在走固定结果集时,稳定插入令可避免重复. 链接保存过滤器
和选定的命名空间,包括自定义管理员前缀。 模拟器支持发布/tag/跟踪
和状态过滤器;生产搜索语法、取样、趋势/排序和统计
没有默默表示为已执行的特征(见下文边界).
Ingest 认证接受 X-Sentry-Auth: Sentry sentry_key=…, sentry_version=7,查询 sentry_key
可选 sentry_version或自认证的 DSN 信封 相冲突页眉/平间
证书、 缺少认证、 密钥、 不兼容的协议版本、 错误的信封和
未知的项目密钥收到中继形状 {"detail": "…"} 错误。 没有发明的通用
API 错误代码或请求 ID: 摄取响应的 id 是供应商事件标识符。 准确
生产配额、过滤理由细节和REST 错误文本,超出文件记录的情况范围
约相相相. 默认有效载荷上限为20 MiB,可配置为 maxPayloadBytes。 。 。 .
测试控制
所有内部端点一起移动 adminPrefix (默认) /__admin) (中文(简体) ). 命名空间载体:
x-mockingbird-namespace, (中文(简体) ), /__admin/ns/<suite>/…,或者 DSN 查询/标题证书和 REST 令牌
映射为 PUT /__admin/credentials。自认证的仅信封DSN使用信头/路径
命名空间; 证书映射无法在共享运行时间选择命名空间之前检查一个正文 .
时钟、重置、时间线检查站/检查站和快照别名、请求日记、计量、管理员
UI,收集回溯和通用缺陷是共享服务合同.
GET /__admin/events?project=1&release=…&tag=key:value&trace=…: 正常捕获错误和 交易。 所有列出的字段、时间戳、指纹、标记、上下文和面包屑都能活下来 须作修改;user只保留假的固定符id。 。 。 .GET /__admin/issues: 将组与当前分辨率状态相匹配,使用相同的过滤器.GET /__admin/envelopes?project=1: 项/标题元数据和拒绝标记; 永远不要生字节.GET编号 :PUT /__admin/settings数字 :grouping: "exception"|"message", (中文(简体) ),sensitivePaths(点路径; 默认request.data, (中文(简体) ),request.cookies和rejectItems(接受时丢弃的类型) 其他项目,含200个)。 这些是合成控制,而不是公共的哨兵设置 API.POST /__admin/flush {eventIds?, count?, project?}:即时捕捉条件/结果.POST /__admin/issues/{id}/status {status}: 解析/重新打开/空白.POST /__admin/projects/{id}/clear: 清除项目的遥测,同时保留它的固定.
预设 : rate_limited (429个), Retry-After: 60, (中文(简体) ), X-Sentry-Rate-Limits: 60:error:organization, (中文(简体) ),
server_error (503个), network_reset (口袋滴出)和 item_rejected (合成403过滤器).
每种都属于摄入范围,在写作前操作。 一般断层可以强迫其他5xx/429
回应。 官方的 SDK 测试证明错误类别配额在不阻断的情况下进一步降低错误
交易。 它立即验证行为,不重复睡眠.
原始抓取和编辑
授权/cookie和证书名字段进行回转过滤,包括页眉
双人 配置的敏感正体路径在正常数据进入存储之前被过滤或
供应商/管理人员诊断。 个人电子邮件,姓名和IP属性被删除. 日记/日志汇
仅包含请求的元数据和资源ID,从不包含正文,信头或附件字节.
保留原始线体和附件字节 用 AES- GCM 加密 在普通收藏中,
因此重置/时间线覆盖它们,而不通过一般的状态诊断披露平话.
runtime.instance(namespace).rawEnvelope(id) 明确方案所有者获取原件
有线字节;它没有被管理员HTTP路由所暴露. 供应a captureKey 从 createCaptureKey()
当重开持久 SQLite 存储时; 默认密钥只活在那段运行时间的一生中 .
将这种明确的原始准入视为敏感的测试所有人准入。 正常事件/细节/搜索路径
返回已编辑的数据,而认证附件下载是一个明确的字节检索.
甲骨文证据
- 官方信封语法和项目规则。 。 。 .
- 官方运输费率限额。 。 。 .
- 正式页眉和光标示例。 。 。 .
- 项目活动清单, (中文(简体) ), 项目问题清单 财务报告和审定财务报表 问题细节。 。 。 .
- 中继信封响应, (中文(简体) ), 认证状态/消息, (中文(简体) ), 最大误差、配额头和小型泵反应。 。 。 .
- 转发遗留信息正常化 明确忽略
message: false;其CI所发现的种子被保留在回归登记册中. - 官方 npm SDK 源代码
@sentry/node, (中文(简体) ),@sentry/core财务报告和审定财务报表@sentry/nextjs11.4.0;已服务 测试使用实际客户端和运输,而不是SDK配额处理的再实施.
bun run parity:service -- sentry 需求 SENTRY_API_URL, (中文(简体) ), SENTRY_AUTH_TOKEN, (中文(简体) ),
SENTRY_ORGANIZATION_SLUG, (中文(简体) ), SENTRY_PROJECT_ID 财务报告和审定财务报表 SENTRY_PROJECT_SLUG。跑者只比较
安全读取,永远不向现场销售商屈服。 测试不需要这些钥匙。 生活平等没有
; 文档和 SDK 源是初始预言.
故意不模拟
供应商仪表板/帐单、完整的组织/项目/释放管理、生产配额、, 完整搜索 DSL 和搜索时间窗口, 排序模式, 而非最新/ 最后查看, 统计 系列/样本、源图/原生符号、会话汇总分析、剖析/重放, 完全崩溃堆放验证 遗留的压缩基质64 商店摄取 自动发行回归, 警告规则评价或可选问题提醒网点。 保留未知的信封项, 不 作为无支持产品特性处理。 组后退规则和强制过滤行为 明确的确定性测试政策,而不是哨兵的生产分组算法。 问题是: 由控制或供应商PUT明确解决/重新打开,绝不发明同步工人.
API 密码
主要输入运行时间出口 : SentryAPI (单位:千美元)fetch, (中文(简体) ), reset, (中文(简体) ), rawEnvelope, (中文(简体) ), captured, (中文(简体) ), issueWire, (中文(简体) ),
sqlite, (中文(简体) ), state, (中文(简体) ), app, (中文(简体) ), createRuntime, (中文(简体) ), SENTRY_NAMESPACE, (中文(简体) ), SENTRY_PRESETS, (中文(简体) ), DEFAULT_PROJECT, (中文(简体) ),
createCaptureKey, (中文(简体) ), sentryCredential, (中文(简体) ), document 财务报告和审定财务报表 supportedOperationIds。 。 。 .
类型包括: SentryAPIOptions, (中文(简体) ), SentryRuntime, (中文(简体) ), SentryRuntimeOptions, (中文(简体) ), ProjectFixture, (中文(简体) ),
SentrySettings, (中文(简体) ), CapturedEvent, (中文(简体) ), CapturedEnvelope,以及 IssueRecord。 。 。 .
服务器条目运行时间导出 : createServer, (中文(简体) ), DEFAULT_PORT, (中文(简体) ), serveTarget。服务器类型 :
SentryServer, (中文(简体) ), SentryServerOptions。 。 。 . createServer 返回时 {url, runtime, close, …}; 关闭
每次测试后服务器。 CLI 条目运行 serve 带有常见的主机/端口/admin前置选项.