diff --git a/node/src/main/kotlin/com/r3corda/node/driver/Driver.kt b/node/src/main/kotlin/com/r3corda/node/driver/Driver.kt
index 2892a24b54..76a3016e23 100644
--- a/node/src/main/kotlin/com/r3corda/node/driver/Driver.kt
+++ b/node/src/main/kotlin/com/r3corda/node/driver/Driver.kt
@@ -7,10 +7,15 @@ import com.r3corda.core.node.NodeInfo
import com.r3corda.core.node.services.ServiceType
import com.r3corda.node.services.config.NodeConfiguration
import com.r3corda.node.services.messaging.ArtemisMessagingClient
+import com.r3corda.node.services.config.NodeConfigurationFromConfig
+import com.r3corda.node.services.config.copy
import com.r3corda.node.services.network.InMemoryNetworkMapCache
import com.r3corda.node.services.network.NetworkMapService
+import com.typesafe.config.ConfigFactory
+import com.typesafe.config.ConfigParseOptions
import org.slf4j.Logger
import org.slf4j.LoggerFactory
+import java.io.File
import java.net.ServerSocket
import java.net.Socket
import java.net.SocketException
@@ -66,6 +71,7 @@ private val log: Logger = LoggerFactory.getLogger("Driver")
*/
fun driver(
baseDirectory: String = "build/${getTimestampAsDirectoryName()}",
+ nodeConfigurationPath: String = "reference.conf",
quasarJarPath: String = "lib/quasar.jar",
portAllocation: PortAllocation = PortAllocation.Incremental(10000),
debugPortAllocation: PortAllocation = PortAllocation.Incremental(5005),
@@ -75,6 +81,7 @@ fun driver(
portAllocation = portAllocation,
debugPortAllocation = debugPortAllocation,
baseDirectory = baseDirectory,
+ nodeConfigurationPath = nodeConfigurationPath,
quasarJarPath = quasarJarPath
)
driverDsl.start()
@@ -125,6 +132,7 @@ class DriverDSL(
private val portAllocation: PortAllocation,
private val debugPortAllocation: PortAllocation,
val baseDirectory: String,
+ val nodeConfigurationPath: String,
val quasarJarPath: String
) : DriverDSLInterface {
@@ -134,15 +142,19 @@ class DriverDSL(
private lateinit var networkMapNodeInfo: NodeInfo
private val registeredProcesses = LinkedList()
+ val nodeConfiguration =
+ NodeConfigurationFromConfig(
+ ConfigFactory.parseResources(
+ nodeConfigurationPath,
+ ConfigParseOptions.defaults().setAllowMissing(false)
+ )
+ ).copy(
+ myLegalName = "driver-artemis"
+ )
+
val messagingService = ArtemisMessagingClient(
Paths.get(baseDirectory, "driver-artemis"),
- object : NodeConfiguration {
- override val myLegalName = "driver-artemis"
- override val exportJMXto = ""
- override val nearestCity = "Zion"
- override val keyStorePassword = "keypass"
- override val trustStorePassword = "trustpass"
- },
+ nodeConfiguration,
serverHostPort = networkMapAddress,
myHostPort = portAllocation.nextHostAndPort()
)
@@ -178,7 +190,6 @@ class DriverDSL(
val apiAddress = portAllocation.nextHostAndPort()
val debugPort = debugPortAllocation.nextPort()
val name = providedName ?: "${pickA(name)}-${messagingAddress.port}"
- val nearestCity = pickA(city)
val driverCliParams = NodeRunner.CliParams(
services = advertisedServices,
@@ -188,7 +199,7 @@ class DriverDSL(
messagingAddress = messagingAddress,
apiAddress = apiAddress,
baseDirectory = baseDirectory,
- nearestCity = nearestCity,
+ nodeConfigurationPath = nodeConfigurationPath,
legalName = name
)
registerProcess(startNode(driverCliParams, quasarJarPath, debugPort))
@@ -228,6 +239,8 @@ class DriverDSL(
}
}
+
+
private fun startNetworkMapService() {
val apiAddress = portAllocation.nextHostAndPort()
val debugPort = debugPortAllocation.nextPort()
@@ -239,7 +252,7 @@ class DriverDSL(
messagingAddress = networkMapAddress,
apiAddress = apiAddress,
baseDirectory = baseDirectory,
- nearestCity = pickA(city),
+ nodeConfigurationPath = nodeConfigurationPath,
legalName = networkMapName
)
log.info("Starting network-map-service")
@@ -248,12 +261,6 @@ class DriverDSL(
companion object {
- val city = arrayOf(
- "London",
- "Paris",
- "New York",
- "Tokyo"
- )
val name = arrayOf(
"Alice",
"Bob",
diff --git a/node/src/main/kotlin/com/r3corda/node/driver/NodeRunner.kt b/node/src/main/kotlin/com/r3corda/node/driver/NodeRunner.kt
index 2214d40f67..7ea1f777df 100644
--- a/node/src/main/kotlin/com/r3corda/node/driver/NodeRunner.kt
+++ b/node/src/main/kotlin/com/r3corda/node/driver/NodeRunner.kt
@@ -7,9 +7,12 @@ import com.r3corda.core.crypto.toBase58String
import com.r3corda.core.node.NodeInfo
import com.r3corda.core.node.services.ServiceType
import com.r3corda.node.internal.Node
-import com.r3corda.node.services.config.NodeConfiguration
import com.r3corda.node.services.messaging.ArtemisMessagingClient
+import com.r3corda.node.services.config.NodeConfigurationFromConfig
+import com.r3corda.node.services.config.copy
import com.r3corda.node.services.network.NetworkMapService
+import com.typesafe.config.ConfigFactory
+import com.typesafe.config.ConfigParseOptions
import joptsimple.ArgumentAcceptingOptionSpec
import joptsimple.OptionParser
import joptsimple.OptionSet
@@ -45,18 +48,21 @@ class NodeRunner {
} else {
null
}
+ val nodeConfiguration =
+ NodeConfigurationFromConfig(
+ ConfigFactory.parseResources(
+ nodeConfigurationPath,
+ ConfigParseOptions.defaults().setAllowMissing(false)
+ )
+ ).copy(
+ myLegalName = legalName
+ )
val node = Node(
dir = nodeDirectory,
p2pAddr = messagingAddress,
webServerAddr = apiAddress,
- configuration = object : NodeConfiguration {
- override val myLegalName = legalName
- override val exportJMXto = ""
- override val nearestCity = cliParams.nearestCity
- override val keyStorePassword = "keypass"
- override val trustStorePassword = "trustpass"
- },
+ configuration = nodeConfiguration,
networkMapAddress = networkMapNodeInfo,
advertisedServices = services.toSet()
)
@@ -75,8 +81,8 @@ class NodeRunner {
val messagingAddress: HostAndPort,
val apiAddress: HostAndPort,
val baseDirectory: String,
- val legalName: String,
- val nearestCity: String
+ val nodeConfigurationPath: String,
+ val legalName: String
) {
companion object {
@@ -95,8 +101,8 @@ class NodeRunner {
parser.accepts("api-address").withRequiredArg().ofType(String::class.java)
val baseDirectory =
parser.accepts("base-directory").withRequiredArg().ofType(String::class.java)
- val nearestCity =
- parser.accepts("nearest-city").withRequiredArg().ofType(String::class.java)
+ val nodeConfigurationPath =
+ parser.accepts("node-configuration-path").withRequiredArg().ofType(String::class.java)
val legalName =
parser.accepts("legal-name").withRequiredArg().ofType(String::class.java)
@@ -114,7 +120,7 @@ class NodeRunner {
val messagingAddress = requiredArgument(optionSet, messagingAddress)
val apiAddress = requiredArgument(optionSet, apiAddress)
val baseDirectory = requiredArgument(optionSet, baseDirectory)
- val nearestCity = requiredArgument(optionSet, nearestCity)
+ val nodeConfigurationPath = requiredArgument(optionSet, nodeConfigurationPath)
val legalName = requiredArgument(optionSet, legalName)
return CliParams(
@@ -125,8 +131,8 @@ class NodeRunner {
networkMapName = networkMapName,
networkMapPublicKey = networkMapPublicKey,
networkMapAddress = networkMapAddress?.let { HostAndPort.fromString(it) },
- legalName = legalName,
- nearestCity = nearestCity
+ nodeConfigurationPath = nodeConfigurationPath,
+ legalName = legalName
)
}
}
@@ -153,8 +159,8 @@ class NodeRunner {
cliArguments.add(apiAddress.toString())
cliArguments.add("--base-directory")
cliArguments.add(baseDirectory.toString())
- cliArguments.add("--nearest-city")
- cliArguments.add(nearestCity)
+ cliArguments.add("--node-configuration-path")
+ cliArguments.add(nodeConfigurationPath)
cliArguments.add("--legal-name")
cliArguments.add(legalName)
return cliArguments
@@ -162,7 +168,5 @@ class NodeRunner {
}
}
-fun createNodeRunDirectory(directory: Path) {
- directory.toFile().mkdirs()
-}
+fun createNodeRunDirectory(directory: Path) = directory.toFile().mkdirs()
diff --git a/node/src/main/kotlin/com/r3corda/node/services/config/NodeConfiguration.kt b/node/src/main/kotlin/com/r3corda/node/services/config/NodeConfiguration.kt
index 3cefe85e1e..94d536fe48 100644
--- a/node/src/main/kotlin/com/r3corda/node/services/config/NodeConfiguration.kt
+++ b/node/src/main/kotlin/com/r3corda/node/services/config/NodeConfiguration.kt
@@ -96,4 +96,20 @@ class FullNodeConfiguration(conf: Config) : NodeConfiguration {
messagingServerAddress
)
}
-}
\ No newline at end of file
+}
+
+fun NodeConfiguration.copy(
+ myLegalName: String = this.myLegalName,
+ exportJMXto: String = this.exportJMXto,
+ nearestCity: String = this.nearestCity,
+ keyStorePassword: String = this.keyStorePassword,
+ trustStorePassword: String = this.trustStorePassword
+): NodeConfiguration {
+ return object : NodeConfiguration {
+ override val myLegalName: String = myLegalName
+ override val exportJMXto: String = exportJMXto
+ override val nearestCity: String = nearestCity
+ override val keyStorePassword: String = keyStorePassword
+ override val trustStorePassword: String = trustStorePassword
+ }
+}
diff --git a/node/src/test/kotlin/com/r3corda/node/driver/DriverTests.kt b/node/src/test/kotlin/com/r3corda/node/driver/DriverTests.kt
index 8af22c0e43..6763d95b72 100644
--- a/node/src/test/kotlin/com/r3corda/node/driver/DriverTests.kt
+++ b/node/src/test/kotlin/com/r3corda/node/driver/DriverTests.kt
@@ -13,7 +13,7 @@ class DriverTests {
fun simpleNodeStartupShutdownWorks() {
// Start a notary
- val (handle, notaryNodeInfo) = driver(quasarPath = "../lib/quasar.jar") {
+ val (handle, notaryNodeInfo) = driver(quasarJarPath = "../lib/quasar.jar") {
startNode(setOf(NotaryService.Type), "TestNotary")
}
// Check that the node is registered in the network map