CORDA-2128: Removed SerializationEnvironmentRule.run (#4334)

It exposed the internal SerializationEnvironment class. It previously documented that the SerializationEnvironmentRule JUnit rule should be used instead.
This commit is contained in:
Shams Asari
2018-12-06 15:14:38 +00:00
committed by GitHub
parent e2ea97bae7
commit 92b5900bfa
6 changed files with 24 additions and 34 deletions

View File

@ -6867,7 +6867,6 @@ public final class net.corda.testing.core.SerializationEnvironmentRule extends j
public static final net.corda.testing.core.SerializationEnvironmentRule$Companion Companion public static final net.corda.testing.core.SerializationEnvironmentRule$Companion Companion
## ##
public static final class net.corda.testing.core.SerializationEnvironmentRule$Companion extends java.lang.Object public static final class net.corda.testing.core.SerializationEnvironmentRule$Companion extends java.lang.Object
public final T run(String, kotlin.jvm.functions.Function1<? super net.corda.core.serialization.internal.SerializationEnvironment, ? extends T>)
## ##
public final class net.corda.testing.core.TestConstants extends java.lang.Object public final class net.corda.testing.core.TestConstants extends java.lang.Object
@NotNull @NotNull

View File

@ -33,7 +33,7 @@ fun ServiceHub.ledger(
(networkParametersStorage as MockNetworkParametersStorage).setCurrentParametersUnverified(newParameters) (networkParametersStorage as MockNetworkParametersStorage).setCurrentParametersUnverified(newParameters)
} }
return withTestSerializationEnvIfNotSet("ledgerDSL") { return withTestSerializationEnvIfNotSet {
val interpreter = TestLedgerDSLInterpreter(this) val interpreter = TestLedgerDSLInterpreter(this)
LedgerDSL(interpreter, notary).apply { LedgerDSL(interpreter, notary).apply {
script() script()

View File

@ -32,7 +32,7 @@ class MockNetworkParametersStorage(private var currentParameters: NetworkParamet
override val currentHash: SecureHash override val currentHash: SecureHash
get() { get() {
return withTestSerializationEnvIfNotSet("networkParameters") { return withTestSerializationEnvIfNotSet {
currentParameters.serialize().hash currentParameters.serialize().hash
} }
} }
@ -47,12 +47,14 @@ class MockNetworkParametersStorage(private var currentParameters: NetworkParamet
override fun getHistoricNotary(party: Party): NotaryInfo? { override fun getHistoricNotary(party: Party): NotaryInfo? {
val inCurrentParams = currentParameters.notaries.singleOrNull { it.identity == party } val inCurrentParams = currentParameters.notaries.singleOrNull { it.identity == party }
if (inCurrentParams == null) { return if (inCurrentParams == null) {
val inOldParams = hashToParametersMap.flatMap { (_, parameters) -> val inOldParams = hashToParametersMap.flatMap { (_, parameters) ->
parameters.notaries parameters.notaries
}.firstOrNull { it.identity == party } }.firstOrNull { it.identity == party }
return inOldParams inOldParams
} else return inCurrentParams } else {
inCurrentParams
}
} }
private fun storeCurrentParameters() { private fun storeCurrentParameters() {

View File

@ -4,13 +4,10 @@ import com.nhaarman.mockito_kotlin.any
import com.nhaarman.mockito_kotlin.doAnswer import com.nhaarman.mockito_kotlin.doAnswer
import com.nhaarman.mockito_kotlin.whenever import com.nhaarman.mockito_kotlin.whenever
import net.corda.core.internal.staticField import net.corda.core.internal.staticField
import net.corda.core.serialization.SerializationFactory
import net.corda.core.serialization.internal.SerializationEnvironment import net.corda.core.serialization.internal.SerializationEnvironment
import net.corda.core.serialization.internal.effectiveSerializationEnv import net.corda.core.serialization.internal.effectiveSerializationEnv
import net.corda.testing.common.internal.asContextEnv import net.corda.testing.internal.*
import net.corda.testing.internal.createTestSerializationEnv
import net.corda.testing.internal.inVMExecutors
import net.corda.testing.internal.rigorousMock
import net.corda.testing.internal.testThreadFactory
import org.apache.activemq.artemis.core.remoting.impl.invm.InVMConnector import org.apache.activemq.artemis.core.remoting.impl.invm.InVMConnector
import org.junit.rules.TestRule import org.junit.rules.TestRule
import org.junit.runner.Description import org.junit.runner.Description
@ -35,32 +32,16 @@ class SerializationEnvironmentRule(private val inheritable: Boolean = false) : T
}.whenever(it).execute(any()) }.whenever(it).execute(any())
} }
} }
/** Do not call, instead use [SerializationEnvironmentRule] as a [org.junit.Rule]. */
fun <T> run(taskLabel: String, task: (SerializationEnvironment) -> T): T {
return SerializationEnvironmentRule().apply { init() }.runTask(task)
}
} }
private lateinit var env: SerializationEnvironment private lateinit var env: SerializationEnvironment
val serializationFactory get() = env.serializationFactory
val serializationFactory: SerializationFactory get() = env.serializationFactory
override fun apply(base: Statement, description: Description): Statement { override fun apply(base: Statement, description: Description): Statement {
init()
return object : Statement() {
override fun evaluate() = runTask { base.evaluate() }
}
}
private fun init() {
env = createTestSerializationEnv() env = createTestSerializationEnv()
} return object : Statement() {
override fun evaluate() = env.asTestContextEnv(inheritable) { base.evaluate() }
private fun <T> runTask(task: (SerializationEnvironment) -> T): T {
try {
return env.asContextEnv(inheritable, task)
} finally {
inVMExecutors.remove(env)
} }
} }
} }

View File

@ -8,6 +8,7 @@ import net.corda.node.serialization.amqp.AMQPServerSerializationScheme
import net.corda.node.serialization.kryo.KRYO_CHECKPOINT_CONTEXT import net.corda.node.serialization.kryo.KRYO_CHECKPOINT_CONTEXT
import net.corda.node.serialization.kryo.KryoCheckpointSerializer import net.corda.node.serialization.kryo.KryoCheckpointSerializer
import net.corda.serialization.internal.* import net.corda.serialization.internal.*
import net.corda.testing.common.internal.asContextEnv
import net.corda.testing.core.SerializationEnvironmentRule import net.corda.testing.core.SerializationEnvironmentRule
import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.ConcurrentHashMap
import java.util.concurrent.ExecutorService import java.util.concurrent.ExecutorService
@ -44,3 +45,10 @@ fun createTestSerializationEnv(): SerializationEnvironment {
) )
} }
fun <T> SerializationEnvironment.asTestContextEnv(inheritable: Boolean = false, callable: (SerializationEnvironment) -> T): T {
try {
return asContextEnv(inheritable, callable)
} finally {
inVMExecutors.remove(this)
}
}

View File

@ -198,7 +198,7 @@ fun fakeAttachment(filePath: String, content: String, manifestAttributes: Map<St
} }
/** If [effectiveSerializationEnv] is not set, runs the block with a new [SerializationEnvironmentRule]. */ /** If [effectiveSerializationEnv] is not set, runs the block with a new [SerializationEnvironmentRule]. */
fun <R> withTestSerializationEnvIfNotSet(taskName: String, block: () -> R): R { fun <R> withTestSerializationEnvIfNotSet(block: () -> R): R {
val serializationExists = try { val serializationExists = try {
effectiveSerializationEnv effectiveSerializationEnv
true true
@ -207,7 +207,7 @@ fun <R> withTestSerializationEnvIfNotSet(taskName: String, block: () -> R): R {
} }
return if (serializationExists) { return if (serializationExists) {
block() block()
} else SerializationEnvironmentRule.run(taskName) { } else {
block() createTestSerializationEnv().asTestContextEnv { block() }
} }
} }