使用带有Corda DriverDSL的测试时钟

使用带有Corda DriverDSL的测试时钟,corda,Corda,我正在尝试使用Corda(OS4.3)在JVM内运行集成测试。它通常工作正常,但我现在需要测试一个计划流,并且需要向前移动网络时钟。有一种方法可以通过DriverParameters.withUseTestClock()将驱动程序配置为使用测试时钟,但我似乎找不到一个API来在所有节点运行后提前时钟。我只有NodeHandle和DriverDSL对象的实例 需要明确的是,必须是整个网络的时钟提前,因为我们使用TimeWindow约束,如果只有一个节点的时钟提前,公证人将拒绝交易 Corda IR

我正在尝试使用Corda(OS4.3)在JVM内运行集成测试。它通常工作正常,但我现在需要测试一个计划流,并且需要向前移动网络时钟。有一种方法可以通过
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
    }
}
我认为这将允许您自定义时钟时间。然而,我不确定是否仍然有效。它可能会被弃用