mirror of
https://github.com/corda/corda.git
synced 2025-02-03 09:41:10 +00:00
Removed initialiseSerialization param from CordaRPCClient, mirroring change in 1.0 branch
This commit is contained in:
parent
2054827528
commit
0ce0baa235
@ -27,9 +27,9 @@ import net.corda.finance.flows.CashExitFlow
|
|||||||
import net.corda.finance.flows.CashIssueFlow
|
import net.corda.finance.flows.CashIssueFlow
|
||||||
import net.corda.finance.flows.CashPaymentFlow
|
import net.corda.finance.flows.CashPaymentFlow
|
||||||
import net.corda.node.services.FlowPermissions.Companion.startFlowPermission
|
import net.corda.node.services.FlowPermissions.Companion.startFlowPermission
|
||||||
import net.corda.nodeapi.internal.ServiceInfo
|
|
||||||
import net.corda.node.services.transactions.SimpleNotaryService
|
import net.corda.node.services.transactions.SimpleNotaryService
|
||||||
import net.corda.nodeapi.User
|
import net.corda.nodeapi.User
|
||||||
|
import net.corda.nodeapi.internal.ServiceInfo
|
||||||
import net.corda.testing.*
|
import net.corda.testing.*
|
||||||
import net.corda.testing.driver.driver
|
import net.corda.testing.driver.driver
|
||||||
import net.corda.testing.node.DriverBasedTest
|
import net.corda.testing.node.DriverBasedTest
|
||||||
@ -71,7 +71,7 @@ class NodeMonitorModelTest : DriverBasedTest() {
|
|||||||
vaultUpdates = monitor.vaultUpdates.bufferUntilSubscribed()
|
vaultUpdates = monitor.vaultUpdates.bufferUntilSubscribed()
|
||||||
networkMapUpdates = monitor.networkMap.bufferUntilSubscribed()
|
networkMapUpdates = monitor.networkMap.bufferUntilSubscribed()
|
||||||
|
|
||||||
monitor.register(aliceNodeHandle.configuration.rpcAddress!!, cashUser.username, cashUser.password, initialiseSerialization = false)
|
monitor.register(aliceNodeHandle.configuration.rpcAddress!!, cashUser.username, cashUser.password)
|
||||||
rpc = monitor.proxyObservable.value!!
|
rpc = monitor.proxyObservable.value!!
|
||||||
notaryParty = notaryHandle.nodeInfo.legalIdentities[1]
|
notaryParty = notaryHandle.nodeInfo.legalIdentities[1]
|
||||||
|
|
||||||
@ -79,7 +79,7 @@ class NodeMonitorModelTest : DriverBasedTest() {
|
|||||||
bobNode = bobNodeHandle.nodeInfo
|
bobNode = bobNodeHandle.nodeInfo
|
||||||
val monitorBob = NodeMonitorModel()
|
val monitorBob = NodeMonitorModel()
|
||||||
stateMachineUpdatesBob = monitorBob.stateMachineUpdates.bufferUntilSubscribed()
|
stateMachineUpdatesBob = monitorBob.stateMachineUpdates.bufferUntilSubscribed()
|
||||||
monitorBob.register(bobNodeHandle.configuration.rpcAddress!!, cashUser.username, cashUser.password, initialiseSerialization = false)
|
monitorBob.register(bobNodeHandle.configuration.rpcAddress!!, cashUser.username, cashUser.password)
|
||||||
rpcBob = monitorBob.proxyObservable.value!!
|
rpcBob = monitorBob.proxyObservable.value!!
|
||||||
runTest()
|
runTest()
|
||||||
}
|
}
|
||||||
|
@ -55,13 +55,12 @@ class NodeMonitorModel {
|
|||||||
* Register for updates to/from a given vault.
|
* Register for updates to/from a given vault.
|
||||||
* TODO provide an unsubscribe mechanism
|
* TODO provide an unsubscribe mechanism
|
||||||
*/
|
*/
|
||||||
fun register(nodeHostAndPort: NetworkHostAndPort, username: String, password: String, initialiseSerialization: Boolean = true) {
|
fun register(nodeHostAndPort: NetworkHostAndPort, username: String, password: String) {
|
||||||
val client = CordaRPCClient(
|
val client = CordaRPCClient(
|
||||||
hostAndPort = nodeHostAndPort,
|
hostAndPort = nodeHostAndPort,
|
||||||
configuration = CordaRPCClientConfiguration.default.copy(
|
configuration = CordaRPCClientConfiguration.DEFAULT.copy(
|
||||||
connectionMaxRetryInterval = 10.seconds
|
connectionMaxRetryInterval = 10.seconds
|
||||||
),
|
)
|
||||||
initialiseSerialization = initialiseSerialization
|
|
||||||
)
|
)
|
||||||
val connection = client.start(username, password)
|
val connection = client.start(username, password)
|
||||||
val proxy = connection.proxy
|
val proxy = connection.proxy
|
||||||
|
@ -8,12 +8,12 @@ import net.corda.core.utilities.OpaqueBytes;
|
|||||||
import net.corda.finance.flows.AbstractCashFlow;
|
import net.corda.finance.flows.AbstractCashFlow;
|
||||||
import net.corda.finance.flows.CashIssueFlow;
|
import net.corda.finance.flows.CashIssueFlow;
|
||||||
import net.corda.finance.flows.CashPaymentFlow;
|
import net.corda.finance.flows.CashPaymentFlow;
|
||||||
import net.corda.finance.schemas.*;
|
import net.corda.finance.schemas.CashSchemaV1;
|
||||||
import net.corda.node.internal.Node;
|
import net.corda.node.internal.Node;
|
||||||
import net.corda.node.internal.StartedNode;
|
import net.corda.node.internal.StartedNode;
|
||||||
import net.corda.node.services.transactions.ValidatingNotaryService;
|
import net.corda.node.services.transactions.ValidatingNotaryService;
|
||||||
import net.corda.nodeapi.internal.ServiceInfo;
|
|
||||||
import net.corda.nodeapi.User;
|
import net.corda.nodeapi.User;
|
||||||
|
import net.corda.nodeapi.internal.ServiceInfo;
|
||||||
import net.corda.testing.CoreTestUtils;
|
import net.corda.testing.CoreTestUtils;
|
||||||
import net.corda.testing.node.NodeBasedTest;
|
import net.corda.testing.node.NodeBasedTest;
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
@ -24,14 +24,15 @@ import java.io.IOException;
|
|||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
|
|
||||||
import static java.util.Collections.*;
|
import static java.util.Collections.emptyMap;
|
||||||
|
import static java.util.Collections.singletonList;
|
||||||
import static java.util.Objects.requireNonNull;
|
import static java.util.Objects.requireNonNull;
|
||||||
import static kotlin.test.AssertionsKt.assertEquals;
|
import static kotlin.test.AssertionsKt.assertEquals;
|
||||||
import static net.corda.client.rpc.CordaRPCClientConfiguration.getDefault;
|
|
||||||
import static net.corda.finance.Currencies.DOLLARS;
|
import static net.corda.finance.Currencies.DOLLARS;
|
||||||
import static net.corda.finance.contracts.GetBalances.getCashBalance;
|
import static net.corda.finance.contracts.GetBalances.getCashBalance;
|
||||||
import static net.corda.node.services.FlowPermissions.startFlowPermission;
|
import static net.corda.node.services.FlowPermissions.startFlowPermission;
|
||||||
import static net.corda.testing.CoreTestUtils.*;
|
import static net.corda.testing.CoreTestUtils.setCordappPackages;
|
||||||
|
import static net.corda.testing.CoreTestUtils.unsetCordappPackages;
|
||||||
import static net.corda.testing.TestConstants.getALICE;
|
import static net.corda.testing.TestConstants.getALICE;
|
||||||
|
|
||||||
public class CordaRPCJavaClientTest extends NodeBasedTest {
|
public class CordaRPCJavaClientTest extends NodeBasedTest {
|
||||||
@ -56,7 +57,7 @@ public class CordaRPCJavaClientTest extends NodeBasedTest {
|
|||||||
CordaFuture<StartedNode<Node>> nodeFuture = startNode(getALICE().getName(), 1, services, singletonList(rpcUser), emptyMap());
|
CordaFuture<StartedNode<Node>> nodeFuture = startNode(getALICE().getName(), 1, services, singletonList(rpcUser), emptyMap());
|
||||||
node = nodeFuture.get();
|
node = nodeFuture.get();
|
||||||
node.getInternals().registerCustomSchemas(Collections.singleton(CashSchemaV1.INSTANCE));
|
node.getInternals().registerCustomSchemas(Collections.singleton(CashSchemaV1.INSTANCE));
|
||||||
client = new CordaRPCClient(requireNonNull(node.getInternals().getConfiguration().getRpcAddress()), getDefault(), false);
|
client = new CordaRPCClient(requireNonNull(node.getInternals().getConfiguration().getRpcAddress()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
|
@ -19,9 +19,9 @@ import net.corda.finance.schemas.CashSchemaV1
|
|||||||
import net.corda.node.internal.Node
|
import net.corda.node.internal.Node
|
||||||
import net.corda.node.internal.StartedNode
|
import net.corda.node.internal.StartedNode
|
||||||
import net.corda.node.services.FlowPermissions.Companion.startFlowPermission
|
import net.corda.node.services.FlowPermissions.Companion.startFlowPermission
|
||||||
import net.corda.nodeapi.internal.ServiceInfo
|
|
||||||
import net.corda.node.services.transactions.ValidatingNotaryService
|
import net.corda.node.services.transactions.ValidatingNotaryService
|
||||||
import net.corda.nodeapi.User
|
import net.corda.nodeapi.User
|
||||||
|
import net.corda.nodeapi.internal.ServiceInfo
|
||||||
import net.corda.testing.ALICE
|
import net.corda.testing.ALICE
|
||||||
import net.corda.testing.chooseIdentity
|
import net.corda.testing.chooseIdentity
|
||||||
import net.corda.testing.node.NodeBasedTest
|
import net.corda.testing.node.NodeBasedTest
|
||||||
@ -54,7 +54,7 @@ class CordaRPCClientTest : NodeBasedTest() {
|
|||||||
setCordappPackages("net.corda.finance.contracts")
|
setCordappPackages("net.corda.finance.contracts")
|
||||||
node = startNode(ALICE.name, rpcUsers = listOf(rpcUser), advertisedServices = setOf(ServiceInfo(ValidatingNotaryService.type))).getOrThrow()
|
node = startNode(ALICE.name, rpcUsers = listOf(rpcUser), advertisedServices = setOf(ServiceInfo(ValidatingNotaryService.type))).getOrThrow()
|
||||||
node.internals.registerCustomSchemas(setOf(CashSchemaV1))
|
node.internals.registerCustomSchemas(setOf(CashSchemaV1))
|
||||||
client = CordaRPCClient(node.internals.configuration.rpcAddress!!, initialiseSerialization = false)
|
client = CordaRPCClient(node.internals.configuration.rpcAddress!!)
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
|
@ -34,8 +34,8 @@ data class CordaRPCClientConfiguration(val connectionMaxRetryInterval: Duration)
|
|||||||
/**
|
/**
|
||||||
* Returns the default configuration we recommend you use.
|
* Returns the default configuration we recommend you use.
|
||||||
*/
|
*/
|
||||||
@JvmStatic
|
@JvmField
|
||||||
val default = CordaRPCClientConfiguration(connectionMaxRetryInterval = RPCClientConfiguration.default.connectionMaxRetryInterval)
|
val DEFAULT = CordaRPCClientConfiguration(connectionMaxRetryInterval = RPCClientConfiguration.default.connectionMaxRetryInterval)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,16 +67,11 @@ data class CordaRPCClientConfiguration(val connectionMaxRetryInterval: Duration)
|
|||||||
*/
|
*/
|
||||||
class CordaRPCClient @JvmOverloads constructor(
|
class CordaRPCClient @JvmOverloads constructor(
|
||||||
hostAndPort: NetworkHostAndPort,
|
hostAndPort: NetworkHostAndPort,
|
||||||
configuration: CordaRPCClientConfiguration = CordaRPCClientConfiguration.default,
|
configuration: CordaRPCClientConfiguration = CordaRPCClientConfiguration.DEFAULT
|
||||||
initialiseSerialization: Boolean = true
|
|
||||||
) {
|
) {
|
||||||
init {
|
init {
|
||||||
// Init serialization. It's plausible there are multiple clients in a single JVM, so be tolerant of
|
|
||||||
// others having registered first.
|
|
||||||
// TODO: allow clients to have serialization factory etc injected and align with RPC protocol version?
|
// TODO: allow clients to have serialization factory etc injected and align with RPC protocol version?
|
||||||
if (initialiseSerialization) {
|
KryoClientSerializationScheme.initialiseSerialization()
|
||||||
KryoClientSerializationScheme.initialiseSerialization()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private val rpcClient = RPCClient<CordaRPCOps>(
|
private val rpcClient = RPCClient<CordaRPCOps>(
|
||||||
|
@ -5,6 +5,7 @@ import net.corda.core.serialization.SerializationContext
|
|||||||
import net.corda.core.serialization.SerializationDefaults
|
import net.corda.core.serialization.SerializationDefaults
|
||||||
import net.corda.core.utilities.ByteSequence
|
import net.corda.core.utilities.ByteSequence
|
||||||
import net.corda.nodeapi.internal.serialization.*
|
import net.corda.nodeapi.internal.serialization.*
|
||||||
|
import java.util.concurrent.atomic.AtomicBoolean
|
||||||
|
|
||||||
class KryoClientSerializationScheme : AbstractKryoSerializationScheme() {
|
class KryoClientSerializationScheme : AbstractKryoSerializationScheme() {
|
||||||
override fun canDeserializeVersion(byteSequence: ByteSequence, target: SerializationContext.UseCase): Boolean {
|
override fun canDeserializeVersion(byteSequence: ByteSequence, target: SerializationContext.UseCase): Boolean {
|
||||||
@ -23,7 +24,9 @@ class KryoClientSerializationScheme : AbstractKryoSerializationScheme() {
|
|||||||
override fun rpcServerKryoPool(context: SerializationContext): KryoPool = throw UnsupportedOperationException()
|
override fun rpcServerKryoPool(context: SerializationContext): KryoPool = throw UnsupportedOperationException()
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
val isInitialised = AtomicBoolean(false)
|
||||||
fun initialiseSerialization() {
|
fun initialiseSerialization() {
|
||||||
|
if (!isInitialised.compareAndSet(false, true)) return
|
||||||
try {
|
try {
|
||||||
SerializationDefaults.SERIALIZATION_FACTORY = SerializationFactoryImpl().apply {
|
SerializationDefaults.SERIALIZATION_FACTORY = SerializationFactoryImpl().apply {
|
||||||
registerScheme(KryoClientSerializationScheme())
|
registerScheme(KryoClientSerializationScheme())
|
||||||
@ -31,10 +34,14 @@ class KryoClientSerializationScheme : AbstractKryoSerializationScheme() {
|
|||||||
}
|
}
|
||||||
SerializationDefaults.P2P_CONTEXT = KRYO_P2P_CONTEXT
|
SerializationDefaults.P2P_CONTEXT = KRYO_P2P_CONTEXT
|
||||||
SerializationDefaults.RPC_CLIENT_CONTEXT = KRYO_RPC_CLIENT_CONTEXT
|
SerializationDefaults.RPC_CLIENT_CONTEXT = KRYO_RPC_CLIENT_CONTEXT
|
||||||
} catch(e: IllegalStateException) {
|
} catch (e: IllegalStateException) {
|
||||||
// Check that it's registered as we expect
|
// Check that it's registered as we expect
|
||||||
check(SerializationDefaults.SERIALIZATION_FACTORY is SerializationFactoryImpl) { "RPC client encountered conflicting configuration of serialization subsystem." }
|
val factory = SerializationDefaults.SERIALIZATION_FACTORY
|
||||||
check((SerializationDefaults.SERIALIZATION_FACTORY as SerializationFactoryImpl).alreadyRegisteredSchemes.any { it is KryoClientSerializationScheme }) { "RPC client encountered conflicting configuration of serialization subsystem." }
|
val checkedFactory = factory as? SerializationFactoryImpl
|
||||||
|
?: throw IllegalStateException("RPC client encountered conflicting configuration of serialization subsystem: $factory")
|
||||||
|
check(checkedFactory.alreadyRegisteredSchemes.any { it is KryoClientSerializationScheme }) {
|
||||||
|
"RPC client encountered conflicting configuration of serialization subsystem."
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -154,7 +154,7 @@ abstract class MQSecurityTest : NodeBasedTest() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun loginToRPC(target: NetworkHostAndPort, rpcUser: User): CordaRPCOps {
|
fun loginToRPC(target: NetworkHostAndPort, rpcUser: User): CordaRPCOps {
|
||||||
return CordaRPCClient(target, initialiseSerialization = false).start(rpcUser.username, rpcUser.password).proxy
|
return CordaRPCClient(target).start(rpcUser.username, rpcUser.password).proxy
|
||||||
}
|
}
|
||||||
|
|
||||||
fun loginToRPCAndGetClientQueue(): String {
|
fun loginToRPCAndGetClientQueue(): String {
|
||||||
|
@ -98,7 +98,7 @@ class IRSDemoTest : IntegrationTestCategory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun getFixingDateObservable(config: FullNodeConfiguration): Observable<LocalDate?> {
|
private fun getFixingDateObservable(config: FullNodeConfiguration): Observable<LocalDate?> {
|
||||||
val client = CordaRPCClient(config.rpcAddress!!, initialiseSerialization = false)
|
val client = CordaRPCClient(config.rpcAddress!!)
|
||||||
val proxy = client.start("user", "password").proxy
|
val proxy = client.start("user", "password").proxy
|
||||||
val vaultUpdates = proxy.vaultTrackBy<InterestRateSwap.State>().updates
|
val vaultUpdates = proxy.vaultTrackBy<InterestRateSwap.State>().updates
|
||||||
|
|
||||||
|
@ -10,13 +10,11 @@ import net.corda.finance.schemas.CashSchemaV1
|
|||||||
import net.corda.finance.schemas.CommercialPaperSchemaV1
|
import net.corda.finance.schemas.CommercialPaperSchemaV1
|
||||||
import net.corda.node.services.FlowPermissions.Companion.startFlowPermission
|
import net.corda.node.services.FlowPermissions.Companion.startFlowPermission
|
||||||
import net.corda.node.services.transactions.SimpleNotaryService
|
import net.corda.node.services.transactions.SimpleNotaryService
|
||||||
import net.corda.nodeapi.internal.ServiceInfo
|
|
||||||
import net.corda.nodeapi.User
|
import net.corda.nodeapi.User
|
||||||
|
import net.corda.nodeapi.internal.ServiceInfo
|
||||||
import net.corda.testing.*
|
import net.corda.testing.*
|
||||||
import net.corda.testing.driver.poll
|
import net.corda.testing.driver.poll
|
||||||
import net.corda.testing.node.NodeBasedTest
|
import net.corda.testing.node.NodeBasedTest
|
||||||
import net.corda.testing.setCordappPackages
|
|
||||||
import net.corda.testing.unsetCordappPackages
|
|
||||||
import net.corda.traderdemo.flow.BuyerFlow
|
import net.corda.traderdemo.flow.BuyerFlow
|
||||||
import net.corda.traderdemo.flow.CommercialPaperIssueFlow
|
import net.corda.traderdemo.flow.CommercialPaperIssueFlow
|
||||||
import net.corda.traderdemo.flow.SellerFlow
|
import net.corda.traderdemo.flow.SellerFlow
|
||||||
@ -56,11 +54,11 @@ class TraderDemoTest : NodeBasedTest() {
|
|||||||
nodeB.internals.registerCustomSchemas(setOf(CashSchemaV1, CommercialPaperSchemaV1))
|
nodeB.internals.registerCustomSchemas(setOf(CashSchemaV1, CommercialPaperSchemaV1))
|
||||||
|
|
||||||
val (nodeARpc, nodeBRpc) = listOf(nodeA, nodeB).map {
|
val (nodeARpc, nodeBRpc) = listOf(nodeA, nodeB).map {
|
||||||
val client = CordaRPCClient(it.internals.configuration.rpcAddress!!, initialiseSerialization = false)
|
val client = CordaRPCClient(it.internals.configuration.rpcAddress!!)
|
||||||
client.start(demoUser.username, demoUser.password).proxy
|
client.start(demoUser.username, demoUser.password).proxy
|
||||||
}
|
}
|
||||||
val nodeBankRpc = let {
|
val nodeBankRpc = let {
|
||||||
val client = CordaRPCClient(bankNode.internals.configuration.rpcAddress!!, initialiseSerialization = false)
|
val client = CordaRPCClient(bankNode.internals.configuration.rpcAddress!!)
|
||||||
client.start(bankUser.username, bankUser.password).proxy
|
client.start(bankUser.username, bankUser.password).proxy
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -221,7 +221,7 @@ sealed class NodeHandle {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun rpcClientToNode(): CordaRPCClient = CordaRPCClient(configuration.rpcAddress!!, initialiseSerialization = false)
|
fun rpcClientToNode(): CordaRPCClient = CordaRPCClient(configuration.rpcAddress!!)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stops the referenced node.
|
* Stops the referenced node.
|
||||||
@ -635,7 +635,7 @@ class DriverDSL(
|
|||||||
|
|
||||||
private fun establishRpc(config: FullNodeConfiguration, processDeathFuture: CordaFuture<out Process>): CordaFuture<CordaRPCOps> {
|
private fun establishRpc(config: FullNodeConfiguration, processDeathFuture: CordaFuture<out Process>): CordaFuture<CordaRPCOps> {
|
||||||
val rpcAddress = config.rpcAddress!!
|
val rpcAddress = config.rpcAddress!!
|
||||||
val client = CordaRPCClient(rpcAddress, initialiseSerialization = false)
|
val client = CordaRPCClient(rpcAddress)
|
||||||
val connectionFuture = poll(executorService, "RPC connection") {
|
val connectionFuture = poll(executorService, "RPC connection") {
|
||||||
try {
|
try {
|
||||||
client.start(config.rpcUsers[0].username, config.rpcUsers[0].password)
|
client.start(config.rpcUsers[0].username, config.rpcUsers[0].password)
|
||||||
|
@ -17,11 +17,11 @@ inline fun <T> withTestSerialization(block: () -> T): T {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun initialiseTestSerialization() {
|
fun initialiseTestSerialization() {
|
||||||
|
// Stop the CordaRPCClient from trying to setup the defaults as we're about to do it now
|
||||||
|
KryoClientSerializationScheme.isInitialised.set(true)
|
||||||
// Check that everything is configured for testing with mutable delegating instances.
|
// Check that everything is configured for testing with mutable delegating instances.
|
||||||
try {
|
try {
|
||||||
check(SerializationDefaults.SERIALIZATION_FACTORY is TestSerializationFactory) {
|
check(SerializationDefaults.SERIALIZATION_FACTORY is TestSerializationFactory)
|
||||||
"Found non-test serialization configuration: ${SerializationDefaults.SERIALIZATION_FACTORY}"
|
|
||||||
}
|
|
||||||
} catch(e: IllegalStateException) {
|
} catch(e: IllegalStateException) {
|
||||||
SerializationDefaults.SERIALIZATION_FACTORY = TestSerializationFactory()
|
SerializationDefaults.SERIALIZATION_FACTORY = TestSerializationFactory()
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user