Overriding network parameters if they are specified in the deployment… (#136)

* Overriding network parameters if they are specified in the deployment configuration

* Addressing review comments

* Addressing review comments

* Changing the getCurrentNetworkMap return type to be nullable
This commit is contained in:
mkit
2017-11-29 16:46:36 +00:00
committed by GitHub
parent f264b62823
commit c40e8e4518
17 changed files with 102 additions and 104 deletions

View File

@ -11,13 +11,11 @@ import java.time.Instant
class NetworkParametersConfigurationTest {
private val validInitialNetworkConfigPath = File(javaClass.getResource("/initial-network-parameters.conf").toURI())
private val validOverrideNetworkConfigPath = File("network-parameters.conf").toPath()
@Test
fun `reads an existing file`() {
val confFile = validInitialNetworkConfigPath.toPath()
val networkParameters = parseNetworkParametersFrom(confFile)
val networkParameters = parseNetworkParametersFrom(validOverrideNetworkConfigPath)
assertThat(networkParameters.minimumPlatformVersion).isEqualTo(1)
assertThat(networkParameters.eventHorizon).isEqualTo(100.days)
val notaries = networkParameters.notaries

View File

@ -118,7 +118,7 @@ class DBNetworkMapStorageTest : TestBase() {
val result = networkMapStorage.getCurrentNetworkParameters()
// then
assertEquals(1, result.minimumPlatformVersion)
assertEquals(1, result?.minimumPlatformVersion)
}
@Test

View File

@ -73,4 +73,29 @@ class NetworkMapSignerTest : TestBase() {
// Verify networkMapStorage is not called
verify(networkMapStorage, never()).saveNetworkMap(any())
}
@Test
fun `signNetworkMap creates a new network map if there is no current network map`() {
// given
val networkMapParameters = createNetworkParameters()
whenever(networkMapStorage.getCurrentNetworkMap()).thenReturn(null)
whenever(networkMapStorage.getCurrentNetworkMapNodeInfoHashes(any())).thenReturn(emptyList())
whenever(networkMapStorage.getDetachedAndValidNodeInfoHashes()).thenReturn(emptyList())
whenever(networkMapStorage.getLatestNetworkParameters()).thenReturn(networkMapParameters)
whenever(signer.sign(any())).thenReturn(mock())
// when
networkMapSigner.signNetworkMap()
// then
// Verify networkMapStorage calls
verify(networkMapStorage).getCurrentNetworkMapNodeInfoHashes(any())
verify(networkMapStorage).getDetachedAndValidNodeInfoHashes()
verify(networkMapStorage).getLatestNetworkParameters()
argumentCaptor<SignedNetworkMap>().apply {
verify(networkMapStorage).saveNetworkMap(capture())
val networkMap = firstValue.networkMap
assertEquals(networkMapParameters.serialize().hash.toString(), networkMap.parametersHash)
}
}
}

View File

@ -9,23 +9,23 @@ import kotlin.test.assertEquals
import kotlin.test.assertFailsWith
class DoormanParametersTest {
private val validInitialNetworkConfigPath = File(javaClass.getResource("/initial-network-parameters.conf").toURI()).absolutePath
private val validConfigPath = File(javaClass.getResource("/doorman.conf").toURI()).absolutePath
private val validOverrideNetworkConfigPath = File("network-parameters.conf").absolutePath
private val validConfigPath = File("doorman.conf").absolutePath
private val invalidConfigPath = File(javaClass.getResource("/doorman_fail.conf").toURI()).absolutePath
private val validArgs = arrayOf("--config-file", validConfigPath, "--initial-network-parameters", validInitialNetworkConfigPath)
private val validArgs = arrayOf("--config-file", validConfigPath, "--update-network-parameters", validOverrideNetworkConfigPath)
@Test
fun `should fail when initial network parameters file is missing`() {
val message = assertFailsWith<IllegalStateException> {
parseCommandLine("--config-file", validConfigPath, "--initial-network-parameters", "not-here")
parseCommandLine("--config-file", validConfigPath, "--update-network-parameters", "not-here")
}.message
assertThat(message).contains("Initial network parameters file ")
assertThat(message).contains("Update network parameters file ")
}
@Test
fun `should fail when config file is missing`() {
val message = assertFailsWith<IllegalStateException> {
parseCommandLine("--config-file", "not-existing-file", "--initial-network-parameters", validInitialNetworkConfigPath)
parseCommandLine("--config-file", "not-existing-file")
}.message
assertThat(message).contains("Config file ")
}
@ -40,7 +40,7 @@ class DoormanParametersTest {
@Test
fun `should fail when config missing`() {
assertFailsWith<ConfigException.Missing> {
parseParameters(parseCommandLine("--config-file", invalidConfigPath, "--initial-network-parameters", validInitialNetworkConfigPath).configFile)
parseParameters(parseCommandLine("--config-file", invalidConfigPath).configFile)
}
}

View File

@ -1,22 +0,0 @@
basedir="."
keystorePath = "/opt/doorman/certificates/caKeystore.jks"
keyStorePassword = "password"
caPrivateKeyPassword = "password"
host = "localhost"
port = 8080
h2port = 0
dataSourceProperties {
"dataSourceClassName" = org.h2.jdbcx.JdbcDataSource
"dataSource.url" = "jdbc:h2:file:"${basedir}"/persistence;DB_CLOSE_ON_EXIT=FALSE;LOCK_TIMEOUT=10000;WRITE_DELAY=0;AUTO_SERVER_PORT="${h2port}
"dataSource.user" = sa
"dataSource.password" = ""
}
jiraConfig{
address = "https://doorman-jira-host.com/"
projectCode = "TD"
username = "username"
password = "password"
doneTransitionCode = 41
}

View File

@ -1,13 +0,0 @@
notaries : [{
name: "O=Notary A, L=Port Louis, C=MU, OU=Org Unit, CN=Service Name"
key: "GfHq2tTVk9z4eXgyWmExBB3JfHpeuYrk9jUc4zaVVSXpnW8FdCUNDhw6GRGN"
validating: true
}, {
name: "O=Notary B, L=Bali, C=ID, OU=Org Unit, CN=Service Name"
key: "GfHq2tTVk9z4eXgyEshv6vtBDjp7n76QZH5hk6VXLhk3vRTAmKcP9F9tRfPj"
validating: false
}]
eventHorizonDays = 100
minimumPlatformVersion = 1
maxMessageSize = 100
maxTransactionSize = 100