From 92b5900bfa22bca33c640064a681c567dcdf6951 Mon Sep 17 00:00:00 2001 From: Shams Asari Date: Thu, 6 Dec 2018 15:14:38 +0000 Subject: [PATCH] CORDA-2128: Removed SerializationEnvironmentRule.run (#4334) It exposed the internal SerializationEnvironment class. It previously documented that the SerializationEnvironmentRule JUnit rule should be used instead. --- .ci/api-current.txt | 1 - .../net/corda/testing/node/NodeTestUtils.kt | 2 +- .../internal/MockNetworkParametersStorage.kt | 10 +++--- ...ers.kt => SerializationEnvironmentRule.kt} | 31 ++++--------------- .../InternalSerializationTestHelpers.kt | 8 +++++ .../testing/internal/InternalTestUtils.kt | 6 ++-- 6 files changed, 24 insertions(+), 34 deletions(-) rename testing/test-utils/src/main/kotlin/net/corda/testing/core/{SerializationTestHelpers.kt => SerializationEnvironmentRule.kt} (65%) diff --git a/.ci/api-current.txt b/.ci/api-current.txt index c773f2cc9a..8fd222b418 100644 --- a/.ci/api-current.txt +++ b/.ci/api-current.txt @@ -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 class net.corda.testing.core.SerializationEnvironmentRule$Companion extends java.lang.Object - public final T run(String, kotlin.jvm.functions.Function1) ## public final class net.corda.testing.core.TestConstants extends java.lang.Object @NotNull diff --git a/testing/node-driver/src/main/kotlin/net/corda/testing/node/NodeTestUtils.kt b/testing/node-driver/src/main/kotlin/net/corda/testing/node/NodeTestUtils.kt index efac6fd13a..0e5b10f4ef 100644 --- a/testing/node-driver/src/main/kotlin/net/corda/testing/node/NodeTestUtils.kt +++ b/testing/node-driver/src/main/kotlin/net/corda/testing/node/NodeTestUtils.kt @@ -33,7 +33,7 @@ fun ServiceHub.ledger( (networkParametersStorage as MockNetworkParametersStorage).setCurrentParametersUnverified(newParameters) } - return withTestSerializationEnvIfNotSet("ledgerDSL") { + return withTestSerializationEnvIfNotSet { val interpreter = TestLedgerDSLInterpreter(this) LedgerDSL(interpreter, notary).apply { script() diff --git a/testing/node-driver/src/main/kotlin/net/corda/testing/node/internal/MockNetworkParametersStorage.kt b/testing/node-driver/src/main/kotlin/net/corda/testing/node/internal/MockNetworkParametersStorage.kt index 96e61c5fb1..f5a502f80d 100644 --- a/testing/node-driver/src/main/kotlin/net/corda/testing/node/internal/MockNetworkParametersStorage.kt +++ b/testing/node-driver/src/main/kotlin/net/corda/testing/node/internal/MockNetworkParametersStorage.kt @@ -32,7 +32,7 @@ class MockNetworkParametersStorage(private var currentParameters: NetworkParamet override val currentHash: SecureHash get() { - return withTestSerializationEnvIfNotSet("networkParameters") { + return withTestSerializationEnvIfNotSet { currentParameters.serialize().hash } } @@ -47,12 +47,14 @@ class MockNetworkParametersStorage(private var currentParameters: NetworkParamet override fun getHistoricNotary(party: Party): NotaryInfo? { val inCurrentParams = currentParameters.notaries.singleOrNull { it.identity == party } - if (inCurrentParams == null) { + return if (inCurrentParams == null) { val inOldParams = hashToParametersMap.flatMap { (_, parameters) -> parameters.notaries }.firstOrNull { it.identity == party } - return inOldParams - } else return inCurrentParams + inOldParams + } else { + inCurrentParams + } } private fun storeCurrentParameters() { diff --git a/testing/test-utils/src/main/kotlin/net/corda/testing/core/SerializationTestHelpers.kt b/testing/test-utils/src/main/kotlin/net/corda/testing/core/SerializationEnvironmentRule.kt similarity index 65% rename from testing/test-utils/src/main/kotlin/net/corda/testing/core/SerializationTestHelpers.kt rename to testing/test-utils/src/main/kotlin/net/corda/testing/core/SerializationEnvironmentRule.kt index 526f1251b6..2a32225876 100644 --- a/testing/test-utils/src/main/kotlin/net/corda/testing/core/SerializationTestHelpers.kt +++ b/testing/test-utils/src/main/kotlin/net/corda/testing/core/SerializationEnvironmentRule.kt @@ -4,13 +4,10 @@ import com.nhaarman.mockito_kotlin.any import com.nhaarman.mockito_kotlin.doAnswer import com.nhaarman.mockito_kotlin.whenever 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.effectiveSerializationEnv -import net.corda.testing.common.internal.asContextEnv -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 net.corda.testing.internal.* import org.apache.activemq.artemis.core.remoting.impl.invm.InVMConnector import org.junit.rules.TestRule import org.junit.runner.Description @@ -35,32 +32,16 @@ class SerializationEnvironmentRule(private val inheritable: Boolean = false) : T }.whenever(it).execute(any()) } } - - /** Do not call, instead use [SerializationEnvironmentRule] as a [org.junit.Rule]. */ - fun run(taskLabel: String, task: (SerializationEnvironment) -> T): T { - return SerializationEnvironmentRule().apply { init() }.runTask(task) - } } private lateinit var env: SerializationEnvironment - val serializationFactory get() = env.serializationFactory + + val serializationFactory: SerializationFactory get() = env.serializationFactory override fun apply(base: Statement, description: Description): Statement { - init() - return object : Statement() { - override fun evaluate() = runTask { base.evaluate() } - } - } - - private fun init() { env = createTestSerializationEnv() - } - - private fun runTask(task: (SerializationEnvironment) -> T): T { - try { - return env.asContextEnv(inheritable, task) - } finally { - inVMExecutors.remove(env) + return object : Statement() { + override fun evaluate() = env.asTestContextEnv(inheritable) { base.evaluate() } } } } diff --git a/testing/test-utils/src/main/kotlin/net/corda/testing/internal/InternalSerializationTestHelpers.kt b/testing/test-utils/src/main/kotlin/net/corda/testing/internal/InternalSerializationTestHelpers.kt index 9ed3da7fd1..5fe08e5f4a 100644 --- a/testing/test-utils/src/main/kotlin/net/corda/testing/internal/InternalSerializationTestHelpers.kt +++ b/testing/test-utils/src/main/kotlin/net/corda/testing/internal/InternalSerializationTestHelpers.kt @@ -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.KryoCheckpointSerializer import net.corda.serialization.internal.* +import net.corda.testing.common.internal.asContextEnv import net.corda.testing.core.SerializationEnvironmentRule import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.ExecutorService @@ -44,3 +45,10 @@ fun createTestSerializationEnv(): SerializationEnvironment { ) } +fun SerializationEnvironment.asTestContextEnv(inheritable: Boolean = false, callable: (SerializationEnvironment) -> T): T { + try { + return asContextEnv(inheritable, callable) + } finally { + inVMExecutors.remove(this) + } +} diff --git a/testing/test-utils/src/main/kotlin/net/corda/testing/internal/InternalTestUtils.kt b/testing/test-utils/src/main/kotlin/net/corda/testing/internal/InternalTestUtils.kt index 84ccf022f5..d72cdaaff0 100644 --- a/testing/test-utils/src/main/kotlin/net/corda/testing/internal/InternalTestUtils.kt +++ b/testing/test-utils/src/main/kotlin/net/corda/testing/internal/InternalTestUtils.kt @@ -198,7 +198,7 @@ fun fakeAttachment(filePath: String, content: String, manifestAttributes: Map withTestSerializationEnvIfNotSet(taskName: String, block: () -> R): R { +fun withTestSerializationEnvIfNotSet(block: () -> R): R { val serializationExists = try { effectiveSerializationEnv true @@ -207,7 +207,7 @@ fun withTestSerializationEnvIfNotSet(taskName: String, block: () -> R): R { } return if (serializationExists) { block() - } else SerializationEnvironmentRule.run(taskName) { - block() + } else { + createTestSerializationEnv().asTestContextEnv { block() } } } \ No newline at end of file