@xyo-network / event-kit-vitest-config
一个可选择的Vitest预设 真实的,测试拥有的本地事件堆栈一辆XL1 dev-chain子进程,散列寻址REST数据库,常驻事件发布者, 和经过认证的HTTPS接收器。需要Node.js 26或更新版本;这个 存储库pin为Node 26.9.0。
pnpm add -D @xyo-network/event-kit-vitest-config vitest
// vitest.config.ts
import { defineEventKitVitestConfig } from '@xyo-network/event-kit-vitest-config'
export default defineEventKitVitestConfig({
installers: { localEventStack: true },
})
加入集成规范 src/**/spec/local-event-stack/**/*.spec.ts (或
packages/*/src/**/spec/local-event-stack/**/*.spec.ts 在工作空间中):
import { getLocalEventStack } from '@xyo-network/event-kit-vitest-config'
import { expect, it } from 'vitest'
it('receives finalized heads', async () => {
const stack = getLocalEventStack()
const subscription = await stack.subscribe({
deploymentId: 'my-indexer',
queueId: 'heads', // optional
fromPosition: 0, // explicit historical floor; default is the source head at creation
maxPositionsPerWake: 16,
})
const active = await subscription.waitForActive()
const wake = await subscription.waitForWake()
expect(wake.publisher).toBe(stack.publisher)
expect(active.activeFromBlock).toBeGreaterThan(0)
expect(wake.fromPosition).toBe(0)
expect(wake.event.source).toEqual({ kind: 'xl1-finalized', chainId: stack.chainId })
await subscription.revoke()
})
pnpm vitest run --project local-event-stack
平原 vitest run 不引导堆栈。它的规格是不普通的
节点/浏览器项目,即使在禁用安装程序时也是如此。集
localEventStack: { optInOnly: false } 将其包含在普通运行中。
defineEventKitVitestProjects 和 defineEventKitInstallerProjects 支持
与其他预设合成。仅组合安装程序项目时,也
应用 LOCAL_EVENT_STACK_EXCLUDE 到您的基本项目。
运行什么
每个规范文件都有一个新的链ID、临时环回端口和临时环回端口
目录中。该文件中的测试共享堆栈;不要停止,直到
文件的最终测试。设置发布发布者的服务和专用HPKE
加密密钥。 subscribe() 创建并资助独立开发者身份;
启动TLS接收器,并通过发布加密的订阅和授权
高屋建瓴的、有主题的主张。
后台发布者通过语句图发现最终的元组
重放,解密端点,执行其HTTPS所有权挑战,发布
接受,并在授权块时成为合格的 验收块+ 1.
每个尾流使用规范的未版本的源感知信封,并从
独立申报的 fromPosition成批地 maxPositionsPerWake.
每个订阅者都有一个持久的游标和发件箱。接收机独立重放
并执行真正的JWT、授权、生命周期和原子收件箱检查
持久的排队。没有HTTP处理程序运行reducer。
waitForWake() 声明并确认一个排队唤醒。明确租赁或
减速机试验使用 subscription.queue.claim() 和它的 ack() / release()
方法。 dropNextDeliveryResponses() 模拟丢失的响应 后 耐用
入学;重试在新的JWT下保持相同的唤醒ID/散列。 stats() 公开
仅测试交付证据。将其jwt和夹具帐户/密钥状态视为
敏感测试数据;不要在实际网络中记录或重用它们。
生命周期和低级访问
- 安装/拆除包含启动失败,发布者停止,网关,接收器,
数据库、子进程和临时目录。
stop()是等幂的。 getLocalEventStack()在测试/钩子中可用,而不是在模块范围内。 或者进口@xyo-network/event-kit-vitest-config/globals作为一种类型 键入安装程序拥有的eventStack全球。startLocalEventStack({ pollIntervalMs?, readyTimeoutMs? })支持手动 所有权。总是await stack.stop()在一个finally块。publisherClient,createSubscriber().client,viewer,rpcUrl,dataLakeUrl和advertisement为自定义测试公开真正的公共api。- 你自己的接收器,请拨
registerEndpoint(exactHttpsUrl, certificatePem)之前 通过资助的createSubscriber()客户端。返回 Value注销它。你拥有自定义服务器的清理和挑战, 允许和队列实现。
边界
这是一个本地集成工具,而不是基于模拟的单元测试夹具
生产 event-kit publisher run 命令。就像dApp Kit的fixture一样
启动已发布的XL1 CLI;它还禁用共享运行状况/指标
侦听器使并发堆栈不会发生冲突。否 apiLocal 安装程序
必需的。没有连锁证书,
需要公共数据库、序列或主网访问。所有 XL1_* 环境
覆盖和 NODE_TLS_REJECT_UNAUTHORIZED=0 必须取消设置以防止环境
钱包/网络配置泄漏到子进程。
只有准确的,显式注册的HTTPS url上的文字 127.0.0.1 可调用的。
TLS验证仍然启用每个端点证书信任。DNS名称,
重定向和隐式局域网访问被拒绝。这个仅限测试的津贴可以
不更改生产端点规则。每个挑战一次允许一次出站
尝试。失败或有歧义的HTTP尝试会在稍后的发布者通行证上重试
迎接新的挑战;收到的证明将被保留以备再次接受。
该链使用简化的开发共识和内存链状态;出版商, 数据库和收件箱文件只存在到拆除。这不符合 生产监控,重启恢复,SQLite,多虚拟机,序列或 Mainnet。托管生产资格仍然是独立的。
存储库api本地限定
这个存储库保留了选择 api-local 项目名称和现有协议
规格,拥有一个存储库 setupFiles 在root Vitest配置中重写。
每个文件启动事件堆栈使用的相同的公共XL1 CLI开发链,
然后提供实际观察到的 rpcUrl 和 chainId 全局变量。配置
解析相对于其自身URL的设置源,因此运行包范围的测试
使用相同的设置。测试钱包使用公共开发助记符;没有内部定位器
提供全局或提供者id修改。
pnpm test:api-local
pnpm test:api-local-statements
pnpm test:live
发布的 xl1-vitest-config/chain-test 5.5.0进程内生产者导入
SimpleBlockRunner 没有XL1 SDK 5.8.0所需的稳定提供商ID。
支持的设置覆盖将链运行时更改为公共CLI;它
不修补依赖关系,降级应用程序SDK或恢复构造函数
名称提供程序标识。这扇门的结果是气候变化中心支持的本地链证据,
不同于历史进程内 apiLocal 证据和托管资格。
存储库的 pnpm test:packed-event-stack Gate从本地安装
具有严格对等检查的PNPM缓存,对一个单独的消费者进行类型检查,然后运行
两个规范文件通过打包的设置项。填充依赖项缓存
运行前;此门不是注册表发布检查。
许可:lgpl - 3.0。