@xyo-network/event-kit-testing
事件套件提供程序端口的共享一致性控制。
const report = await runWakeQueueConformance('sqlite', {
create: () => createSqliteWakeQueue({ path }),
reopen: () => createSqliteWakeQueue({ path }),
})
为什么要共用套房
只有在每个实现都同意契约的情况下,端口才可交换。这个
套件是什么? WakeQueue 提供者可互换,而不仅仅是
类似:添加后端意味着实现接口并运行它。
它抛出第一个被违反的子句,其中包含子句名称和它所看到的内容,并且 否则返回完整的报告,因此一个测试显示运行了哪些子句。
声明的能力,而不是假定的
reopen 是可选的,是提供者声明它是持久的方式。它的实例
必须共享独立对象子句的实际持久权限。这个主题
省略了它的耐久性子句报告为 跳过从不沉默
已通过——进程内队列不能满足它不能满足的子句。
这使得报告诚实地描述了供应商证明了什么。
WakeQueue 条款
| 条款 | 财产 |
|---|---|
empty-claim | 空队列产生 undefined 而不是阻塞 |
append-visible | 附加的东西会完好无损地回来吗 |
lease-withholds | 持有的租约对其他消费者是不可见的 |
release-returns | 释放使条目再次可声明 |
ack-removes | 包装可以永久地去除它 |
arrival-order | 条目按到达顺序提供 |
single-claimer | 只有一个人赢得了有争议的参赛作品 |
recover-inflight | 被放弃的租约是可收回的 |
lease-fencing | 旧的ack/release不能改变当前的继承者 |
completion-fencing | 同样成功的完井重复是惰性的;相反的操作失败 |
survives-restart | 条目和ack比实例存活时间更长(仅持久) |
recovers-after-restart | 进程死亡时持有的租约是可回收的(仅限持久)。 |
cross-writer-claimer | 独立对象产生一个获胜声明(仅声明能力) |
恢复使用 recoverInflight({ consumersStopped: true }) 毕竟是消费者
停止。测试还会使故意捕获的租期闭包失效以进行演示
击剑;该断言不授权操作符恢复活动所有者。
共享套件由特定于后端的fault、SIGKILL、custody、
身份冲突和HTTP允许测试。一份通过的报告并不能证明
主机丢失、恢复或多主机资格。