mirror of
https://github.com/corda/corda.git
synced 2025-06-23 17:53:31 +00:00
Merge remote-tracking branch 'open/master' into features/ENT-1153/merge_OS2ENT
# Conflicts: # .idea/compiler.xml # docs/source/changelog.rst # node/src/test/kotlin/net/corda/node/services/transactions/DistributedImmutableMapTests.kt # testing/node-driver/src/main/kotlin/net/corda/testing/NodeTestUtils.kt # testing/node-driver/src/main/kotlin/net/corda/testing/node/MockServices.kt
This commit is contained in:
@ -6,24 +6,24 @@ import com.nhaarman.mockito_kotlin.doCallRealMethod
|
||||
import com.nhaarman.mockito_kotlin.doReturn
|
||||
import com.nhaarman.mockito_kotlin.whenever
|
||||
import net.corda.core.context.Actor
|
||||
import net.corda.core.context.AuthServiceId
|
||||
import net.corda.core.context.InvocationContext
|
||||
import net.corda.core.context.Origin
|
||||
import net.corda.core.context.AuthServiceId
|
||||
import net.corda.core.flows.FlowLogic
|
||||
import net.corda.core.identity.CordaX500Name
|
||||
import net.corda.core.internal.FlowStateMachine
|
||||
import net.corda.core.node.ServiceHub
|
||||
import net.corda.core.transactions.TransactionBuilder
|
||||
import net.corda.core.utilities.seconds
|
||||
import net.corda.core.utilities.getOrThrow
|
||||
import net.corda.core.utilities.seconds
|
||||
import net.corda.node.services.api.StartedNodeServices
|
||||
import net.corda.node.services.config.CertChainPolicyConfig
|
||||
import net.corda.node.services.config.DatabaseConfig
|
||||
import net.corda.node.services.config.NodeConfiguration
|
||||
import net.corda.node.services.config.VerifierType
|
||||
import net.corda.nodeapi.User
|
||||
import net.corda.testing.node.MockServices
|
||||
import net.corda.testing.node.MockServices.Companion.makeTestDataSourceProperties
|
||||
import net.corda.testing.node.MockServices.Companion.makeTestDatabaseProperties
|
||||
import java.nio.file.Path
|
||||
|
||||
/**
|
||||
@ -64,7 +64,7 @@ fun testNodeConfiguration(
|
||||
doReturn(emptyList<User>()).whenever(it).rpcUsers
|
||||
doReturn(null).whenever(it).notary
|
||||
doReturn(makeTestDataSourceProperties(myLegalName.organisation)).whenever(it).dataSourceProperties
|
||||
doReturn(makeTestDatabaseProperties(myLegalName.organisation)).whenever(it).database
|
||||
doReturn(DatabaseConfig(myLegalName.organisation)).whenever(it).database
|
||||
doReturn("").whenever(it).emailAddress
|
||||
doReturn("").whenever(it).exportJMXto
|
||||
doReturn(true).whenever(it).devMode
|
||||
|
@ -306,9 +306,11 @@ class MockNetwork(defaultParameters: MockNetworkParameters = MockNetworkParamete
|
||||
override val serializationWhitelists: List<SerializationWhitelist>
|
||||
get() = testSerializationWhitelists
|
||||
private var dbCloser: (() -> Any?)? = null
|
||||
override fun <T> initialiseDatabasePersistence(schemaService: SchemaService, insideTransaction: (CordaPersistence) -> T) = super.initialiseDatabasePersistence(schemaService) { database ->
|
||||
dbCloser = database::close
|
||||
insideTransaction(database)
|
||||
override fun <T> initialiseDatabasePersistence(schemaService: SchemaService, identityService: IdentityService, insideTransaction: (CordaPersistence) -> T): T {
|
||||
return super.initialiseDatabasePersistence(schemaService, identityService) { database ->
|
||||
dbCloser = database::close
|
||||
insideTransaction(database)
|
||||
}
|
||||
}
|
||||
|
||||
fun disableDBCloseOnStop() {
|
||||
|
@ -25,6 +25,7 @@ import net.corda.node.services.api.StateMachineRecordedTransactionMappingStorage
|
||||
import net.corda.node.services.api.VaultServiceInternal
|
||||
import net.corda.node.services.api.WritableTransactionStorage
|
||||
import net.corda.node.services.config.configOf
|
||||
import net.corda.node.services.config.DatabaseConfig
|
||||
import net.corda.node.services.identity.InMemoryIdentityService
|
||||
import net.corda.node.services.keys.freshCertificate
|
||||
import net.corda.node.services.keys.getSigner
|
||||
@ -102,21 +103,6 @@ open class MockServices(
|
||||
return props
|
||||
}
|
||||
|
||||
/**
|
||||
* Make properties appropriate for creating a Database for unit tests.
|
||||
*
|
||||
* @param nodeName Reflects the "instance" of the in-memory database or database username/schema.
|
||||
*/
|
||||
@JvmStatic
|
||||
fun makeTestDatabaseProperties(nodeName: String? = null): Properties {
|
||||
val props = Properties()
|
||||
props.setProperty("transactionIsolationLevel", "repeatableRead") //for other possible values see net.corda.node.utilities.CordaPeristence.parserTransactionIsolationLevel(String)
|
||||
if (nodeName != null) {
|
||||
props.setProperty("nodeOrganizationName", nodeName)
|
||||
}
|
||||
return props
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an instance of [InMemoryIdentityService] with [MOCK_IDENTITIES].
|
||||
*/
|
||||
@ -132,9 +118,9 @@ open class MockServices(
|
||||
*/
|
||||
@JvmStatic
|
||||
fun makeTestDatabaseAndMockServices(keys: List<KeyPair> = listOf(MEGA_CORP_KEY),
|
||||
createIdentityService: () -> IdentityService = { makeTestIdentityService() },
|
||||
identityService: IdentityService = makeTestIdentityService(),
|
||||
cordappPackages: List<String> = emptyList()): Pair<CordaPersistence, MockServices>
|
||||
= makeTestDatabaseAndMockServices(keys, createIdentityService, cordappPackages, MEGA_CORP.name)
|
||||
= makeTestDatabaseAndMockServices(keys, identityService, cordappPackages, MEGA_CORP.name)
|
||||
|
||||
/**
|
||||
* Makes database and mock services appropriate for unit tests.
|
||||
@ -145,17 +131,15 @@ open class MockServices(
|
||||
*/
|
||||
@JvmStatic
|
||||
fun makeTestDatabaseAndMockServices(keys: List<KeyPair> = listOf(MEGA_CORP_KEY),
|
||||
createIdentityService: () -> IdentityService = { makeTestIdentityService() },
|
||||
identityService: IdentityService = makeTestIdentityService(),
|
||||
cordappPackages: List<String> = emptyList(),
|
||||
initialIdentityName: CordaX500Name): Pair<CordaPersistence, MockServices> {
|
||||
val cordappLoader = CordappLoader.createWithTestPackages(cordappPackages)
|
||||
val dataSourceProps = makeTestDataSourceProperties()
|
||||
val databaseProperties = makeTestDatabaseProperties()
|
||||
val identityServiceRef: IdentityService by lazy { createIdentityService() }
|
||||
val database = configureDatabase(dataSourceProps, databaseProperties, { identityServiceRef }, NodeSchemaService(cordappLoader))
|
||||
val database = configureDatabase(dataSourceProps, DatabaseConfig(), identityService, NodeSchemaService(cordappLoader))
|
||||
val mockService = database.transaction {
|
||||
object : MockServices(cordappLoader, initialIdentityName = initialIdentityName, keys = *(keys.toTypedArray())) {
|
||||
override val identityService: IdentityService = database.transaction { identityServiceRef }
|
||||
override val identityService get() = identityService
|
||||
override val vaultService: VaultServiceInternal = makeVaultService(database.hibernateConfig)
|
||||
|
||||
override fun recordTransactions(statesToRecord: StatesToRecord, txs: Iterable<SignedTransaction>) {
|
||||
|
Reference in New Issue
Block a user