使用带有Corda DriverDSL的测试时钟
我正在尝试使用Corda(OS4.3)在JVM内运行集成测试。它通常工作正常,但我现在需要测试一个计划流,并且需要向前移动网络时钟。有一种方法可以通过使用带有Corda DriverDSL的测试时钟,corda,Corda,我正在尝试使用Corda(OS4.3)在JVM内运行集成测试。它通常工作正常,但我现在需要测试一个计划流,并且需要向前移动网络时钟。有一种方法可以通过DriverParameters.withUseTestClock()将驱动程序配置为使用测试时钟,但我似乎找不到一个API来在所有节点运行后提前时钟。我只有NodeHandle和DriverDSL对象的实例 需要明确的是,必须是整个网络的时钟提前,因为我们使用TimeWindow约束,如果只有一个节点的时钟提前,公证人将拒绝交易 Corda IR
DriverParameters.withUseTestClock()
将驱动程序配置为使用测试时钟,但我似乎找不到一个API来在所有节点运行后提前时钟。我只有NodeHandle
和DriverDSL
对象的实例
需要明确的是,必须是整个网络的时钟提前,因为我们使用TimeWindow
约束,如果只有一个节点的时钟提前,公证人将拒绝交易
Corda IRS示例中的集成测试似乎用测试时钟配置驱动程序,但它似乎没有实际使用它,至少据我所知
我遗漏了什么?看起来我们目前还没有公开支持此功能,因为它没有关于此功能的任何文档 然而,我确实检查了美国国税局的样本,发现:
@ThreadSafe
class DemoClock(delegateClock: Clock) : MutableClock(delegateClock) {
@Synchronized
fun updateDate(date: LocalDate): Boolean {
val currentDate = LocalDate.now(this)
if (currentDate.isBefore(date)) {
// It's ok to increment
delegateClock = Clock.offset(delegateClock, currentDate.atStartOfDay() until date.atStartOfDay())
notifyMutationObservers()
return true
}
return false
}
}
我认为这将允许您自定义时钟时间。然而,我不确定是否仍然有效。它可能会被弃用