我正在尝试使用Corda (OS4.3)在DriverDSL API内部运行集成测试。它通常工作得很好,但我现在需要测试一个预定的流,并且我需要将网络时钟向前移动。有一种方法可以配置驱动程序通过DriverParameters.withUseTestClock()使用测试时钟,但在所有节点开始运行后,我似乎找不到一个应用程序接口来提前时钟。我所拥有的只有NodeHandle和一个DriverDSL对象的实例。
为了清楚起见,必须是整个网络的时钟提前,因为我们使用TimeWindow约束,如果只有一个节点的时钟提前,公证人将拒绝交易。
Corda IRS示例中的集成测试似乎使用测试时钟配置了驱动程序,但它似乎并没有实际使用它,至少据我所知。
我遗漏了什么?
发布于 2020-04-08 23:31:40
看起来我们目前还没有公开支持这个特性,因为它没有任何相关的文档。
然而,我确实浏览了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
}
}我认为这将允许您自定义时钟时间。然而,我真的不确定是否仍然有效。它可能已被弃用。
https://stackoverflow.com/questions/60302068
复制相似问题