From e216b7715e05695db298c0bb2207a4ffee83c6ee Mon Sep 17 00:00:00 2001
From: Adel El-Beik <48713346+adelel1@users.noreply.github.com>
Date: Fri, 3 Mar 2023 17:54:52 +0000
Subject: [PATCH 1/2] ENT-9476: Notary handle timeout can now be passed to
driver. (#7302)
* ENT-9476: Notary handle timeout can now be passed to driver.
---
.../kotlin/net/corda/testing/driver/Driver.kt | 55 ++++++++++++++++++-
.../testing/node/internal/DriverDSLImpl.kt | 11 ++--
2 files changed, 60 insertions(+), 6 deletions(-)
diff --git a/testing/node-driver/src/main/kotlin/net/corda/testing/driver/Driver.kt b/testing/node-driver/src/main/kotlin/net/corda/testing/driver/Driver.kt
index cfd06a585b..c17b8c3076 100644
--- a/testing/node-driver/src/main/kotlin/net/corda/testing/driver/Driver.kt
+++ b/testing/node-driver/src/main/kotlin/net/corda/testing/driver/Driver.kt
@@ -29,6 +29,7 @@ import rx.Observable
import java.io.File
import java.nio.file.Path
import java.nio.file.Paths
+import java.time.Duration
import java.util.concurrent.atomic.AtomicInteger
/**
@@ -216,7 +217,8 @@ fun driver(defaultParameters: DriverParameters = DriverParameters(), dsl: Dr
djvmCordaSource = defaultParameters.djvmCordaSource,
environmentVariables = defaultParameters.environmentVariables,
allowHibernateToManageAppSchema = defaultParameters.allowHibernateToManageAppSchema,
- premigrateH2Database = defaultParameters.premigrateH2Database
+ premigrateH2Database = defaultParameters.premigrateH2Database,
+ notaryHandleTimeout = defaultParameters.notaryHandleTimeout
),
coerce = { it },
dsl = dsl
@@ -256,6 +258,8 @@ fun driver(defaultParameters: DriverParameters = DriverParameters(), dsl: Dr
* @property djvmBootstrapSource Location of a JAR containing the Java APIs for the DJVM to use.
* @property djvmCordaSource Locations of JARs of user-supplied classes to execute within the DJVM sandbox.
* @property premigrateH2Database Whether to use a prebuilt H2 database schema or start from an empty schema.
+ * @property notaryHandleTimeout Specifies how long to wait to receive a notary handle. This waiting includes waiting for
+ * the notary to start.
* This can save time for tests which do not need to migrate from a blank schema.
*/
@Suppress("unused")
@@ -281,7 +285,8 @@ data class DriverParameters(
val djvmCordaSource: List = emptyList(),
val environmentVariables: Map = emptyMap(),
val allowHibernateToManageAppSchema: Boolean = true,
- val premigrateH2Database: Boolean = true
+ val premigrateH2Database: Boolean = true,
+ val notaryHandleTimeout: Duration = Duration.ofMinutes(1)
) {
constructor(cordappsForAllNodes: Collection) : this(isDebug = false, cordappsForAllNodes = cordappsForAllNodes)
@@ -464,6 +469,51 @@ data class DriverParameters(
cordappsForAllNodes = null
)
+ constructor(
+ isDebug: Boolean,
+ driverDirectory: Path,
+ portAllocation: PortAllocation,
+ debugPortAllocation: PortAllocation,
+ systemProperties: Map,
+ useTestClock: Boolean,
+ startNodesInProcess: Boolean,
+ waitForAllNodesToFinish: Boolean,
+ notarySpecs: List,
+ extraCordappPackagesToScan: List,
+ jmxPolicy: JmxPolicy,
+ networkParameters: NetworkParameters,
+ notaryCustomOverrides: Map,
+ inMemoryDB: Boolean,
+ cordappsForAllNodes: Collection?,
+ djvmBootstrapSource: Path?,
+ djvmCordaSource: List,
+ environmentVariables: Map,
+ allowHibernateToManageAppSchema: Boolean,
+ premigrateH2Database: Boolean
+ ) : this(
+ isDebug,
+ driverDirectory,
+ portAllocation,
+ debugPortAllocation,
+ systemProperties,
+ useTestClock,
+ startNodesInProcess,
+ waitForAllNodesToFinish,
+ notarySpecs,
+ extraCordappPackagesToScan,
+ jmxPolicy,
+ networkParameters,
+ notaryCustomOverrides,
+ inMemoryDB,
+ cordappsForAllNodes,
+ djvmBootstrapSource,
+ djvmCordaSource,
+ environmentVariables,
+ allowHibernateToManageAppSchema,
+ premigrateH2Database,
+ notaryHandleTimeout = Duration.ofMinutes(1)
+ )
+
fun withIsDebug(isDebug: Boolean): DriverParameters = copy(isDebug = isDebug)
fun withDriverDirectory(driverDirectory: Path): DriverParameters = copy(driverDirectory = driverDirectory)
fun withPortAllocation(portAllocation: PortAllocation): DriverParameters = copy(portAllocation = portAllocation)
@@ -487,6 +537,7 @@ data class DriverParameters(
fun withDjvmCordaSource(djvmCordaSource: List): DriverParameters = copy(djvmCordaSource = djvmCordaSource)
fun withEnvironmentVariables(variables: Map): DriverParameters = copy(environmentVariables = variables)
fun withAllowHibernateToManageAppSchema(value: Boolean): DriverParameters = copy(allowHibernateToManageAppSchema = value)
+ fun withNotaryHandleTimeout(value: Duration): DriverParameters = copy(notaryHandleTimeout = value)
fun copy(
isDebug: Boolean,
diff --git a/testing/node-driver/src/main/kotlin/net/corda/testing/node/internal/DriverDSLImpl.kt b/testing/node-driver/src/main/kotlin/net/corda/testing/node/internal/DriverDSLImpl.kt
index 8f1c33c953..5dc744d1bf 100644
--- a/testing/node-driver/src/main/kotlin/net/corda/testing/node/internal/DriverDSLImpl.kt
+++ b/testing/node-driver/src/main/kotlin/net/corda/testing/node/internal/DriverDSLImpl.kt
@@ -154,7 +154,8 @@ class DriverDSLImpl(
val djvmCordaSource: List,
val environmentVariables: Map,
val allowHibernateToManageAppSchema: Boolean = true,
- val premigrateH2Database: Boolean = true
+ val premigrateH2Database: Boolean = true,
+ val notaryHandleTimeout: Duration = Duration.ofMinutes(1)
) : InternalDriverDSL {
private var _executorService: ScheduledExecutorService? = null
@@ -854,7 +855,6 @@ class DriverDSLImpl(
// While starting with inProcess mode, we need to have different names to avoid clashes
private val inMemoryCounter = AtomicInteger()
- private val notaryHandleTimeout = Duration.ofMinutes(1)
private val defaultRpcUserList = listOf(InternalUser("default", "default", setOf("ALL")).toConfig().root().unwrapped())
private val names = arrayOf(ALICE_NAME, BOB_NAME, DUMMY_BANK_A_NAME)
@@ -1332,7 +1332,8 @@ fun genericDriver(
djvmCordaSource = defaultParameters.djvmCordaSource,
environmentVariables = defaultParameters.environmentVariables,
allowHibernateToManageAppSchema = defaultParameters.allowHibernateToManageAppSchema,
- premigrateH2Database = defaultParameters.premigrateH2Database
+ premigrateH2Database = defaultParameters.premigrateH2Database,
+ notaryHandleTimeout = defaultParameters.notaryHandleTimeout
)
)
val shutdownHook = addShutdownHook(driverDsl::shutdown)
@@ -1432,6 +1433,7 @@ fun internalDriver(
environmentVariables: Map = emptyMap(),
allowHibernateToManageAppSchema: Boolean = true,
premigrateH2Database: Boolean = true,
+ notaryHandleTimeout: Duration = Duration.ofMinutes(1),
dsl: DriverDSLImpl.() -> A
): A {
return genericDriver(
@@ -1456,7 +1458,8 @@ fun internalDriver(
djvmCordaSource = djvmCordaSource,
environmentVariables = environmentVariables,
allowHibernateToManageAppSchema = allowHibernateToManageAppSchema,
- premigrateH2Database = premigrateH2Database
+ premigrateH2Database = premigrateH2Database,
+ notaryHandleTimeout = notaryHandleTimeout
),
coerce = { it },
dsl = dsl
From f7c654bc65d104b40e3edc456f0f6ca67be51861 Mon Sep 17 00:00:00 2001
From: Adel El-Beik
Date: Tue, 7 Mar 2023 13:30:10 +0000
Subject: [PATCH 2/2] NOTICK: Resolved Kotlin api change.
---
.../kotlin/net/corda/testing/driver/Driver.kt | 48 ++++++++++++++++++-
1 file changed, 47 insertions(+), 1 deletion(-)
diff --git a/testing/node-driver/src/main/kotlin/net/corda/testing/driver/Driver.kt b/testing/node-driver/src/main/kotlin/net/corda/testing/driver/Driver.kt
index c17b8c3076..c0f0e6a120 100644
--- a/testing/node-driver/src/main/kotlin/net/corda/testing/driver/Driver.kt
+++ b/testing/node-driver/src/main/kotlin/net/corda/testing/driver/Driver.kt
@@ -489,7 +489,7 @@ data class DriverParameters(
djvmCordaSource: List,
environmentVariables: Map,
allowHibernateToManageAppSchema: Boolean,
- premigrateH2Database: Boolean
+ premigrateH2Database: Boolean = true
) : this(
isDebug,
driverDirectory,
@@ -682,4 +682,50 @@ data class DriverParameters(
allowHibernateToManageAppSchema = allowHibernateToManageAppSchema,
premigrateH2Database = true
)
+
+ @Suppress("LongParameterList")
+ fun copy(
+ isDebug: Boolean,
+ driverDirectory: Path,
+ portAllocation: PortAllocation,
+ debugPortAllocation: PortAllocation,
+ systemProperties: Map,
+ useTestClock: Boolean,
+ startNodesInProcess: Boolean,
+ waitForAllNodesToFinish: Boolean,
+ notarySpecs: List,
+ extraCordappPackagesToScan: List,
+ jmxPolicy: JmxPolicy,
+ networkParameters: NetworkParameters,
+ notaryCustomOverrides: Map,
+ inMemoryDB: Boolean,
+ cordappsForAllNodes: Collection?,
+ djvmBootstrapSource: Path?,
+ djvmCordaSource: List,
+ environmentVariables: Map,
+ allowHibernateToManageAppSchema: Boolean,
+ premigrateH2Database: Boolean
+ ) = this.copy(
+ isDebug = isDebug,
+ driverDirectory = driverDirectory,
+ portAllocation = portAllocation,
+ debugPortAllocation = debugPortAllocation,
+ systemProperties = systemProperties,
+ useTestClock = useTestClock,
+ startNodesInProcess = startNodesInProcess,
+ waitForAllNodesToFinish = waitForAllNodesToFinish,
+ notarySpecs = notarySpecs,
+ extraCordappPackagesToScan = extraCordappPackagesToScan,
+ jmxPolicy = jmxPolicy,
+ networkParameters = networkParameters,
+ notaryCustomOverrides = notaryCustomOverrides,
+ inMemoryDB = inMemoryDB,
+ cordappsForAllNodes = cordappsForAllNodes,
+ djvmBootstrapSource = djvmBootstrapSource,
+ djvmCordaSource = djvmCordaSource,
+ environmentVariables = environmentVariables,
+ allowHibernateToManageAppSchema = allowHibernateToManageAppSchema,
+ premigrateH2Database = premigrateH2Database,
+ notaryHandleTimeout = Duration.ofMinutes(1)
+ )
}
\ No newline at end of file