Использование тестовых часов с Corda DriverDSL - PullRequest
0 голосов
/ 19 февраля 2020

Я пытаюсь использовать Corda DriverDSL API (OS 4.3) для запуска интеграционных тестов внутри JVM. Обычно он работает нормально, но теперь мне нужно протестировать запланированный поток и перевести сетевые часы вперед. Есть способ настроить драйвер на использование тестовых часов через DriverParameters.withUseTestClock(), но я не могу найти API для повышения тактовой частоты после того, как все узлы заработали. Все, что у меня есть, это экземпляры NodeHandle и DriverDSL объекта.

Просто, чтобы быть понятным, должны быть усовершенствованы часы всей сети, потому что мы используем ограничения TimeWindow, а нотариус отклонит расширенные транзакции, если это только часы одного узла.

Похоже, что интеграционный тест в примере Corda IRS настраивает драйвер с тестовыми часами, но, похоже, фактически не использует его, по крайней мере насколько я могу судить.

Чего мне не хватает?

1 Ответ

0 голосов
/ 08 апреля 2020

Похоже, что в настоящее время мы не поддерживаем эту функцию открыто, поскольку у нее нет документации по этому вопросу.

Тем не менее, я прошел образец 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://github.com/corda/corda-nexus-test/blob/c1909722f606fc64174e17afad8ccf864a105bcf/samples/irs-demo/cordapp/workflows-irs/src/main/kotlin/net.corda.irs/flows/UpdateBusinessDayFlow.kt#L22

...