mirror of
https://github.com/corda/corda.git
synced 2025-06-06 09:21:47 +00:00
CORDA-939 Modify Api Scanner to check api for internal exposures (#2510)
* Update check api changes to look for internals * Update several more uses of internal * Make check-api-changes script filter out internal class usages * Make CordaClock part of API * Update api-current.txt * Remove exclusion of nodeapi.internal * Remove access to CordaPersistence from public api * Don't expose DB Connection from StartedMockNode and remove unnecessary transaction from CustomVaultQueryTest * Make internal tests that use need db access use InternalMockNetwork * Make test certificates internal * Address further review comments * Revert some accidental changes to api-current.txt * Address Shams' review comments * Update Api Scanner to filter out CordaInternal attribute * Update api-current.txt * Remove superfluous brackets * Add transaction to StartedMockNode * More leaky transaction fixes
This commit is contained in:
parent
174ed3c64b
commit
3e8d76334e
@ -1233,7 +1233,6 @@ public abstract class net.corda.core.flows.FlowLogic extends java.lang.Object
|
|||||||
@org.jetbrains.annotations.Nullable public net.corda.core.utilities.ProgressTracker getProgressTracker()
|
@org.jetbrains.annotations.Nullable public net.corda.core.utilities.ProgressTracker getProgressTracker()
|
||||||
@org.jetbrains.annotations.NotNull public final net.corda.core.flows.StateMachineRunId getRunId()
|
@org.jetbrains.annotations.NotNull public final net.corda.core.flows.StateMachineRunId getRunId()
|
||||||
@org.jetbrains.annotations.NotNull public final net.corda.core.node.ServiceHub getServiceHub()
|
@org.jetbrains.annotations.NotNull public final net.corda.core.node.ServiceHub getServiceHub()
|
||||||
@net.corda.core.CordaInternal @org.jetbrains.annotations.NotNull public final net.corda.core.internal.FlowStateMachine getStateMachine()
|
|
||||||
@co.paralleluniverse.fibers.Suspendable @org.jetbrains.annotations.NotNull public final net.corda.core.flows.FlowSession initiateFlow(net.corda.core.identity.Party)
|
@co.paralleluniverse.fibers.Suspendable @org.jetbrains.annotations.NotNull public final net.corda.core.flows.FlowSession initiateFlow(net.corda.core.identity.Party)
|
||||||
@co.paralleluniverse.fibers.Suspendable public final void persistFlowStackSnapshot()
|
@co.paralleluniverse.fibers.Suspendable public final void persistFlowStackSnapshot()
|
||||||
@kotlin.Deprecated @co.paralleluniverse.fibers.Suspendable @org.jetbrains.annotations.NotNull public net.corda.core.utilities.UntrustworthyData receive(Class, net.corda.core.identity.Party)
|
@kotlin.Deprecated @co.paralleluniverse.fibers.Suspendable @org.jetbrains.annotations.NotNull public net.corda.core.utilities.UntrustworthyData receive(Class, net.corda.core.identity.Party)
|
||||||
@ -1242,7 +1241,6 @@ public abstract class net.corda.core.flows.FlowLogic extends java.lang.Object
|
|||||||
public final void recordAuditEvent(String, String, Map)
|
public final void recordAuditEvent(String, String, Map)
|
||||||
@kotlin.Deprecated @co.paralleluniverse.fibers.Suspendable public void send(net.corda.core.identity.Party, Object)
|
@kotlin.Deprecated @co.paralleluniverse.fibers.Suspendable public void send(net.corda.core.identity.Party, Object)
|
||||||
@kotlin.Deprecated @co.paralleluniverse.fibers.Suspendable @org.jetbrains.annotations.NotNull public net.corda.core.utilities.UntrustworthyData sendAndReceive(Class, net.corda.core.identity.Party, Object)
|
@kotlin.Deprecated @co.paralleluniverse.fibers.Suspendable @org.jetbrains.annotations.NotNull public net.corda.core.utilities.UntrustworthyData sendAndReceive(Class, net.corda.core.identity.Party, Object)
|
||||||
@net.corda.core.CordaInternal public final void setStateMachine(net.corda.core.internal.FlowStateMachine)
|
|
||||||
@co.paralleluniverse.fibers.Suspendable @kotlin.jvm.JvmStatic public static final void sleep(java.time.Duration)
|
@co.paralleluniverse.fibers.Suspendable @kotlin.jvm.JvmStatic public static final void sleep(java.time.Duration)
|
||||||
@co.paralleluniverse.fibers.Suspendable public Object subFlow(net.corda.core.flows.FlowLogic)
|
@co.paralleluniverse.fibers.Suspendable public Object subFlow(net.corda.core.flows.FlowLogic)
|
||||||
@org.jetbrains.annotations.Nullable public final net.corda.core.messaging.DataFeed track()
|
@org.jetbrains.annotations.Nullable public final net.corda.core.messaging.DataFeed track()
|
||||||
@ -3700,7 +3698,6 @@ public final class net.corda.testing.driver.DriverParameters extends java.lang.O
|
|||||||
public String toString()
|
public String toString()
|
||||||
##
|
##
|
||||||
@net.corda.core.DoNotImplement public interface net.corda.testing.driver.InProcess extends net.corda.testing.driver.NodeHandle
|
@net.corda.core.DoNotImplement public interface net.corda.testing.driver.InProcess extends net.corda.testing.driver.NodeHandle
|
||||||
@org.jetbrains.annotations.NotNull public abstract net.corda.nodeapi.internal.persistence.CordaPersistence getDatabase()
|
|
||||||
@org.jetbrains.annotations.NotNull public abstract net.corda.node.services.api.StartedNodeServices getServices()
|
@org.jetbrains.annotations.NotNull public abstract net.corda.node.services.api.StartedNodeServices getServices()
|
||||||
@org.jetbrains.annotations.NotNull public abstract rx.Observable registerInitiatedFlow(Class)
|
@org.jetbrains.annotations.NotNull public abstract rx.Observable registerInitiatedFlow(Class)
|
||||||
##
|
##
|
||||||
@ -3805,7 +3802,6 @@ public static final class net.corda.testing.node.ClusterSpec$Raft extends net.co
|
|||||||
public String toString()
|
public String toString()
|
||||||
##
|
##
|
||||||
@javax.annotation.concurrent.ThreadSafe public final class net.corda.testing.node.InMemoryMessagingNetwork extends net.corda.core.serialization.SingletonSerializeAsToken
|
@javax.annotation.concurrent.ThreadSafe public final class net.corda.testing.node.InMemoryMessagingNetwork extends net.corda.core.serialization.SingletonSerializeAsToken
|
||||||
public <init>(boolean, net.corda.testing.node.InMemoryMessagingNetwork$ServicePeerAllocationStrategy, org.apache.activemq.artemis.utils.ReusableLatch)
|
|
||||||
@org.jetbrains.annotations.NotNull public synchronized final List getEndpoints()
|
@org.jetbrains.annotations.NotNull public synchronized final List getEndpoints()
|
||||||
@org.jetbrains.annotations.NotNull public final rx.Observable getReceivedMessages()
|
@org.jetbrains.annotations.NotNull public final rx.Observable getReceivedMessages()
|
||||||
@org.jetbrains.annotations.NotNull public final rx.Observable getSentMessages()
|
@org.jetbrains.annotations.NotNull public final rx.Observable getSentMessages()
|
||||||
@ -3888,10 +3884,6 @@ public static final class net.corda.testing.node.InMemoryMessagingNetwork$Servic
|
|||||||
@org.jetbrains.annotations.Nullable public abstract net.corda.testing.node.InMemoryMessagingNetwork$MessageTransfer pumpReceive(boolean)
|
@org.jetbrains.annotations.Nullable public abstract net.corda.testing.node.InMemoryMessagingNetwork$MessageTransfer pumpReceive(boolean)
|
||||||
public abstract void stop()
|
public abstract void stop()
|
||||||
##
|
##
|
||||||
public static final class net.corda.testing.node.InMemoryMessagingNetwork$pumpSend$$inlined$schedule$1 extends java.util.TimerTask
|
|
||||||
public <init>(net.corda.testing.node.InMemoryMessagingNetwork, net.corda.testing.node.InMemoryMessagingNetwork$MessageTransfer, net.corda.core.internal.concurrent.OpenFuture)
|
|
||||||
public void run()
|
|
||||||
##
|
|
||||||
public class net.corda.testing.node.MessagingServiceSpy extends java.lang.Object implements net.corda.node.services.messaging.MessagingService
|
public class net.corda.testing.node.MessagingServiceSpy extends java.lang.Object implements net.corda.node.services.messaging.MessagingService
|
||||||
public <init>(net.corda.node.services.messaging.MessagingService)
|
public <init>(net.corda.node.services.messaging.MessagingService)
|
||||||
@org.jetbrains.annotations.NotNull public net.corda.node.services.messaging.MessageHandlerRegistration addMessageHandler(String, kotlin.jvm.functions.Function2)
|
@org.jetbrains.annotations.NotNull public net.corda.node.services.messaging.MessageHandlerRegistration addMessageHandler(String, kotlin.jvm.functions.Function2)
|
||||||
@ -4018,6 +4010,7 @@ public class net.corda.testing.node.MockServices extends java.lang.Object implem
|
|||||||
public <init>(List, net.corda.core.identity.CordaX500Name, net.corda.core.node.services.IdentityService)
|
public <init>(List, net.corda.core.identity.CordaX500Name, net.corda.core.node.services.IdentityService)
|
||||||
public <init>(net.corda.core.identity.CordaX500Name)
|
public <init>(net.corda.core.identity.CordaX500Name)
|
||||||
public <init>(net.corda.core.identity.CordaX500Name, net.corda.core.node.services.IdentityService)
|
public <init>(net.corda.core.identity.CordaX500Name, net.corda.core.node.services.IdentityService)
|
||||||
|
public final void addMockCordapp(String)
|
||||||
@org.jetbrains.annotations.NotNull public net.corda.core.transactions.SignedTransaction addSignature(net.corda.core.transactions.SignedTransaction)
|
@org.jetbrains.annotations.NotNull public net.corda.core.transactions.SignedTransaction addSignature(net.corda.core.transactions.SignedTransaction)
|
||||||
@org.jetbrains.annotations.NotNull public net.corda.core.transactions.SignedTransaction addSignature(net.corda.core.transactions.SignedTransaction, java.security.PublicKey)
|
@org.jetbrains.annotations.NotNull public net.corda.core.transactions.SignedTransaction addSignature(net.corda.core.transactions.SignedTransaction, java.security.PublicKey)
|
||||||
@org.jetbrains.annotations.NotNull public net.corda.core.serialization.SerializeAsToken cordaService(Class)
|
@org.jetbrains.annotations.NotNull public net.corda.core.serialization.SerializeAsToken cordaService(Class)
|
||||||
@ -4033,7 +4026,6 @@ public class net.corda.testing.node.MockServices extends java.lang.Object implem
|
|||||||
@org.jetbrains.annotations.NotNull public net.corda.core.node.services.IdentityService getIdentityService()
|
@org.jetbrains.annotations.NotNull public net.corda.core.node.services.IdentityService getIdentityService()
|
||||||
@org.jetbrains.annotations.NotNull public net.corda.core.node.services.KeyManagementService getKeyManagementService()
|
@org.jetbrains.annotations.NotNull public net.corda.core.node.services.KeyManagementService getKeyManagementService()
|
||||||
@org.jetbrains.annotations.NotNull public static final net.corda.node.VersionInfo getMOCK_VERSION_INFO()
|
@org.jetbrains.annotations.NotNull public static final net.corda.node.VersionInfo getMOCK_VERSION_INFO()
|
||||||
@org.jetbrains.annotations.NotNull public final net.corda.testing.services.MockCordappProvider getMockCordappProvider()
|
|
||||||
@org.jetbrains.annotations.NotNull public net.corda.core.node.NodeInfo getMyInfo()
|
@org.jetbrains.annotations.NotNull public net.corda.core.node.NodeInfo getMyInfo()
|
||||||
@org.jetbrains.annotations.NotNull public net.corda.core.node.services.NetworkMapCache getNetworkMapCache()
|
@org.jetbrains.annotations.NotNull public net.corda.core.node.services.NetworkMapCache getNetworkMapCache()
|
||||||
@org.jetbrains.annotations.NotNull public net.corda.core.node.services.TransactionVerifierService getTransactionVerifierService()
|
@org.jetbrains.annotations.NotNull public net.corda.core.node.services.TransactionVerifierService getTransactionVerifierService()
|
||||||
@ -4139,7 +4131,6 @@ public final class net.corda.testing.node.NotarySpec extends java.lang.Object
|
|||||||
##
|
##
|
||||||
public final class net.corda.testing.node.StartedMockNode extends java.lang.Object
|
public final class net.corda.testing.node.StartedMockNode extends java.lang.Object
|
||||||
@org.jetbrains.annotations.NotNull public final List findStateMachines(Class)
|
@org.jetbrains.annotations.NotNull public final List findStateMachines(Class)
|
||||||
@org.jetbrains.annotations.NotNull public final net.corda.nodeapi.internal.persistence.CordaPersistence getDatabase()
|
|
||||||
public final int getId()
|
public final int getId()
|
||||||
@org.jetbrains.annotations.NotNull public final net.corda.core.node.NodeInfo getInfo()
|
@org.jetbrains.annotations.NotNull public final net.corda.core.node.NodeInfo getInfo()
|
||||||
@org.jetbrains.annotations.NotNull public final net.corda.node.services.messaging.MessagingService getNetwork()
|
@org.jetbrains.annotations.NotNull public final net.corda.node.services.messaging.MessagingService getNetwork()
|
||||||
@ -4152,7 +4143,7 @@ public final class net.corda.testing.node.StartedMockNode extends java.lang.Obje
|
|||||||
##
|
##
|
||||||
public static final class net.corda.testing.node.StartedMockNode$Companion extends java.lang.Object
|
public static final class net.corda.testing.node.StartedMockNode$Companion extends java.lang.Object
|
||||||
##
|
##
|
||||||
@javax.annotation.concurrent.ThreadSafe public final class net.corda.testing.node.TestClock extends net.corda.node.internal.MutableClock
|
@javax.annotation.concurrent.ThreadSafe public final class net.corda.testing.node.TestClock extends net.corda.node.MutableClock
|
||||||
public <init>(java.time.Clock)
|
public <init>(java.time.Clock)
|
||||||
public synchronized final void advanceBy(java.time.Duration)
|
public synchronized final void advanceBy(java.time.Duration)
|
||||||
public synchronized final void setTo(java.time.Instant)
|
public synchronized final void setTo(java.time.Instant)
|
||||||
@ -4411,24 +4402,7 @@ public static final class net.corda.testing.core.SerializationEnvironmentRule$Co
|
|||||||
public static final class net.corda.testing.core.SerializationEnvironmentRule$apply$1 extends org.junit.runners.model.Statement
|
public static final class net.corda.testing.core.SerializationEnvironmentRule$apply$1 extends org.junit.runners.model.Statement
|
||||||
public void evaluate()
|
public void evaluate()
|
||||||
##
|
##
|
||||||
public final class net.corda.testing.core.SerializationTestHelpersKt extends java.lang.Object
|
|
||||||
@org.jetbrains.annotations.NotNull public static final net.corda.testing.core.GlobalSerializationEnvironment setGlobalSerialization(boolean)
|
|
||||||
##
|
|
||||||
public static final class net.corda.testing.core.SerializationTestHelpersKt$createTestSerializationEnv$1 extends net.corda.core.serialization.internal.SerializationEnvironmentImpl
|
|
||||||
@org.jetbrains.annotations.NotNull public String toString()
|
|
||||||
##
|
|
||||||
public static final class net.corda.testing.core.SerializationTestHelpersKt$setGlobalSerialization$1 extends java.lang.Object implements net.corda.testing.core.GlobalSerializationEnvironment, net.corda.core.serialization.internal.SerializationEnvironment
|
|
||||||
@org.jetbrains.annotations.NotNull public net.corda.core.serialization.SerializationContext getCheckpointContext()
|
|
||||||
@org.jetbrains.annotations.NotNull public net.corda.core.serialization.SerializationContext getP2pContext()
|
|
||||||
@org.jetbrains.annotations.NotNull public net.corda.core.serialization.SerializationContext getRpcClientContext()
|
|
||||||
@org.jetbrains.annotations.NotNull public net.corda.core.serialization.SerializationContext getRpcServerContext()
|
|
||||||
@org.jetbrains.annotations.NotNull public net.corda.core.serialization.SerializationFactory getSerializationFactory()
|
|
||||||
@org.jetbrains.annotations.NotNull public net.corda.core.serialization.SerializationContext getStorageContext()
|
|
||||||
public void unset()
|
|
||||||
##
|
|
||||||
public final class net.corda.testing.core.TestConstants extends java.lang.Object
|
public final class net.corda.testing.core.TestConstants extends java.lang.Object
|
||||||
@org.jetbrains.annotations.NotNull public static final net.corda.nodeapi.internal.crypto.CertificateAndKeyPair getDEV_INTERMEDIATE_CA()
|
|
||||||
@org.jetbrains.annotations.NotNull public static final net.corda.nodeapi.internal.crypto.CertificateAndKeyPair getDEV_ROOT_CA()
|
|
||||||
@kotlin.jvm.JvmField @org.jetbrains.annotations.NotNull public static final net.corda.core.identity.CordaX500Name ALICE_NAME
|
@kotlin.jvm.JvmField @org.jetbrains.annotations.NotNull public static final net.corda.core.identity.CordaX500Name ALICE_NAME
|
||||||
@kotlin.jvm.JvmField @org.jetbrains.annotations.NotNull public static final net.corda.core.identity.CordaX500Name BOB_NAME
|
@kotlin.jvm.JvmField @org.jetbrains.annotations.NotNull public static final net.corda.core.identity.CordaX500Name BOB_NAME
|
||||||
@kotlin.jvm.JvmField @org.jetbrains.annotations.NotNull public static final net.corda.core.identity.CordaX500Name BOC_NAME
|
@kotlin.jvm.JvmField @org.jetbrains.annotations.NotNull public static final net.corda.core.identity.CordaX500Name BOC_NAME
|
||||||
@ -4681,9 +4655,3 @@ public static final class net.corda.testing.services.MockAttachmentStorage$Compa
|
|||||||
public static final class net.corda.testing.services.MockAttachmentStorage$openAttachment$1 extends net.corda.core.internal.AbstractAttachment
|
public static final class net.corda.testing.services.MockAttachmentStorage$openAttachment$1 extends net.corda.core.internal.AbstractAttachment
|
||||||
@org.jetbrains.annotations.NotNull public net.corda.core.crypto.SecureHash getId()
|
@org.jetbrains.annotations.NotNull public net.corda.core.crypto.SecureHash getId()
|
||||||
##
|
##
|
||||||
public final class net.corda.testing.services.MockCordappProvider extends net.corda.node.internal.cordapp.CordappProviderImpl
|
|
||||||
public <init>(net.corda.node.internal.cordapp.CordappLoader, net.corda.core.node.services.AttachmentStorage)
|
|
||||||
public final void addMockCordapp(String, net.corda.testing.services.MockAttachmentStorage)
|
|
||||||
@org.jetbrains.annotations.Nullable public net.corda.core.crypto.SecureHash getContractAttachmentID(String)
|
|
||||||
@org.jetbrains.annotations.NotNull public final List getCordappRegistry()
|
|
||||||
##
|
|
||||||
|
@ -31,8 +31,7 @@ if [ $removalCount -gt 0 ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Adding new abstract methods could also break the API.
|
# Adding new abstract methods could also break the API.
|
||||||
# However, first exclude anything with the @DoNotImplement annotation.
|
# However, first exclude classes marked with the @DoNotImplement annotation
|
||||||
|
|
||||||
function forUserImpl() {
|
function forUserImpl() {
|
||||||
awk '/DoNotImplement/,/^##/{ next }{ print }' $1
|
awk '/DoNotImplement/,/^##/{ next }{ print }' $1
|
||||||
}
|
}
|
||||||
@ -45,13 +44,28 @@ $newAbstracts
|
|||||||
EOF
|
EOF
|
||||||
`
|
`
|
||||||
|
|
||||||
|
#Get a list of any methods that expose classes in .internal. namespaces, and any classes which extend/implement
|
||||||
|
#an internal class
|
||||||
|
newInternalExposures=$(echo "$userDiffContents" | grep "^+" | grep "\.internal\." )
|
||||||
|
|
||||||
|
internalCount=`grep -v "^$" <<EOF | wc -l
|
||||||
|
$newInternalExposures
|
||||||
|
EOF
|
||||||
|
`
|
||||||
|
|
||||||
|
echo "Number of new internal class exposures: "$internalCount
|
||||||
|
if [ $internalCount -gt 0 ]; then
|
||||||
|
echo "$newInternalExposures"
|
||||||
|
echo
|
||||||
|
fi
|
||||||
|
|
||||||
echo "Number of new abstract APIs: "$abstractCount
|
echo "Number of new abstract APIs: "$abstractCount
|
||||||
if [ $abstractCount -gt 0 ]; then
|
if [ $abstractCount -gt 0 ]; then
|
||||||
echo "$newAbstracts"
|
echo "$newAbstracts"
|
||||||
echo
|
echo
|
||||||
fi
|
fi
|
||||||
|
|
||||||
badChanges=$(($removalCount + $abstractCount))
|
badChanges=$(($removalCount + $abstractCount + $internalCount))
|
||||||
if [ $badChanges -gt 255 ]; then
|
if [ $badChanges -gt 255 ]; then
|
||||||
echo "OVERFLOW! Number of bad API changes: $badChanges"
|
echo "OVERFLOW! Number of bad API changes: $badChanges"
|
||||||
badChanges=255
|
badChanges=255
|
||||||
|
@ -19,6 +19,7 @@ import net.corda.testing.core.BOB_NAME
|
|||||||
import net.corda.testing.core.CHARLIE_NAME
|
import net.corda.testing.core.CHARLIE_NAME
|
||||||
import net.corda.testing.core.singleIdentity
|
import net.corda.testing.core.singleIdentity
|
||||||
import net.corda.testing.node.MockNetwork
|
import net.corda.testing.node.MockNetwork
|
||||||
|
import net.corda.testing.node.internal.InternalMockNetwork
|
||||||
import net.corda.testing.node.startFlow
|
import net.corda.testing.node.startFlow
|
||||||
import org.junit.After
|
import org.junit.After
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
@ -28,12 +29,12 @@ import kotlin.test.assertNotNull
|
|||||||
import kotlin.test.assertNull
|
import kotlin.test.assertNull
|
||||||
|
|
||||||
class IdentitySyncFlowTests {
|
class IdentitySyncFlowTests {
|
||||||
private lateinit var mockNet: MockNetwork
|
private lateinit var mockNet: InternalMockNetwork
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun before() {
|
fun before() {
|
||||||
// We run this in parallel threads to help catch any race conditions that may exist.
|
// We run this in parallel threads to help catch any race conditions that may exist.
|
||||||
mockNet = MockNetwork(
|
mockNet = InternalMockNetwork(
|
||||||
networkSendManuallyPumped = false,
|
networkSendManuallyPumped = false,
|
||||||
threadPerNode = true,
|
threadPerNode = true,
|
||||||
cordappPackages = listOf("net.corda.finance.contracts.asset")
|
cordappPackages = listOf("net.corda.finance.contracts.asset")
|
||||||
|
@ -4,18 +4,19 @@ import net.corda.core.identity.*
|
|||||||
import net.corda.core.utilities.getOrThrow
|
import net.corda.core.utilities.getOrThrow
|
||||||
import net.corda.testing.core.*
|
import net.corda.testing.core.*
|
||||||
import net.corda.testing.node.MockNetwork
|
import net.corda.testing.node.MockNetwork
|
||||||
|
import net.corda.testing.node.internal.InternalMockNetwork
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import net.corda.testing.node.startFlow
|
import net.corda.testing.node.startFlow
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import kotlin.test.*
|
import kotlin.test.*
|
||||||
|
|
||||||
class SwapIdentitiesFlowTests {
|
class SwapIdentitiesFlowTests {
|
||||||
private lateinit var mockNet: MockNetwork
|
private lateinit var mockNet: InternalMockNetwork
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setup() {
|
fun setup() {
|
||||||
// We run this in parallel threads to help catch any race conditions that may exist.
|
// We run this in parallel threads to help catch any race conditions that may exist.
|
||||||
mockNet = MockNetwork(emptyList(), networkSendManuallyPumped = false, threadPerNode = true)
|
mockNet = InternalMockNetwork(emptyList(), networkSendManuallyPumped = false, threadPerNode = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -11,12 +11,13 @@ import net.corda.core.identity.groupAbstractPartyByWellKnownParty
|
|||||||
import net.corda.core.transactions.SignedTransaction
|
import net.corda.core.transactions.SignedTransaction
|
||||||
import net.corda.core.transactions.TransactionBuilder
|
import net.corda.core.transactions.TransactionBuilder
|
||||||
import net.corda.core.utilities.getOrThrow
|
import net.corda.core.utilities.getOrThrow
|
||||||
|
import net.corda.node.internal.StartedNode
|
||||||
import net.corda.testing.contracts.DummyContract
|
import net.corda.testing.contracts.DummyContract
|
||||||
import net.corda.testing.core.*
|
import net.corda.testing.core.*
|
||||||
import net.corda.testing.internal.rigorousMock
|
import net.corda.testing.internal.rigorousMock
|
||||||
import net.corda.testing.node.MockNetwork
|
|
||||||
import net.corda.testing.node.StartedMockNode
|
|
||||||
import net.corda.testing.node.MockServices
|
import net.corda.testing.node.MockServices
|
||||||
|
import net.corda.testing.node.internal.InternalMockNetwork
|
||||||
|
import net.corda.testing.node.internal.InternalMockNetwork.MockNode
|
||||||
import net.corda.testing.node.startFlow
|
import net.corda.testing.node.startFlow
|
||||||
import org.junit.After
|
import org.junit.After
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
@ -29,10 +30,10 @@ class CollectSignaturesFlowTests {
|
|||||||
private val miniCorp = TestIdentity(CordaX500Name("MiniCorp", "London", "GB"))
|
private val miniCorp = TestIdentity(CordaX500Name("MiniCorp", "London", "GB"))
|
||||||
}
|
}
|
||||||
|
|
||||||
private lateinit var mockNet: MockNetwork
|
private lateinit var mockNet: InternalMockNetwork
|
||||||
private lateinit var aliceNode: StartedMockNode
|
private lateinit var aliceNode: StartedNode<MockNode>
|
||||||
private lateinit var bobNode: StartedMockNode
|
private lateinit var bobNode: StartedNode<MockNode>
|
||||||
private lateinit var charlieNode: StartedMockNode
|
private lateinit var charlieNode: StartedNode<MockNode>
|
||||||
private lateinit var alice: Party
|
private lateinit var alice: Party
|
||||||
private lateinit var bob: Party
|
private lateinit var bob: Party
|
||||||
private lateinit var charlie: Party
|
private lateinit var charlie: Party
|
||||||
@ -40,7 +41,7 @@ class CollectSignaturesFlowTests {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setup() {
|
fun setup() {
|
||||||
mockNet = MockNetwork(cordappPackages = listOf("net.corda.testing.contracts"))
|
mockNet = InternalMockNetwork(cordappPackages = listOf("net.corda.testing.contracts"))
|
||||||
aliceNode = mockNet.createPartyNode(ALICE_NAME)
|
aliceNode = mockNet.createPartyNode(ALICE_NAME)
|
||||||
bobNode = mockNet.createPartyNode(BOB_NAME)
|
bobNode = mockNet.createPartyNode(BOB_NAME)
|
||||||
charlieNode = mockNet.createPartyNode(CHARLIE_NAME)
|
charlieNode = mockNet.createPartyNode(CHARLIE_NAME)
|
||||||
|
@ -7,9 +7,9 @@ import net.corda.core.serialization.deserialize
|
|||||||
import net.corda.core.serialization.serialize
|
import net.corda.core.serialization.serialize
|
||||||
import net.corda.nodeapi.internal.crypto.X509KeyStore
|
import net.corda.nodeapi.internal.crypto.X509KeyStore
|
||||||
import net.corda.nodeapi.internal.crypto.X509Utilities
|
import net.corda.nodeapi.internal.crypto.X509Utilities
|
||||||
import net.corda.testing.core.DEV_ROOT_CA
|
|
||||||
import net.corda.testing.core.SerializationEnvironmentRule
|
import net.corda.testing.core.SerializationEnvironmentRule
|
||||||
import net.corda.testing.core.getTestPartyAndCertificate
|
import net.corda.testing.core.getTestPartyAndCertificate
|
||||||
|
import net.corda.testing.internal.DEV_ROOT_CA
|
||||||
import org.assertj.core.api.Assertions.assertThat
|
import org.assertj.core.api.Assertions.assertThat
|
||||||
import org.junit.Rule
|
import org.junit.Rule
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
@ -8,10 +8,11 @@ import net.corda.core.identity.Party
|
|||||||
import net.corda.core.transactions.SignedTransaction
|
import net.corda.core.transactions.SignedTransaction
|
||||||
import net.corda.core.utilities.getOrThrow
|
import net.corda.core.utilities.getOrThrow
|
||||||
import net.corda.core.utilities.sequence
|
import net.corda.core.utilities.sequence
|
||||||
|
import net.corda.node.internal.StartedNode
|
||||||
import net.corda.testing.contracts.DummyContract
|
import net.corda.testing.contracts.DummyContract
|
||||||
import net.corda.testing.node.MockNetwork
|
|
||||||
import net.corda.testing.core.singleIdentity
|
import net.corda.testing.core.singleIdentity
|
||||||
import net.corda.testing.node.StartedMockNode
|
import net.corda.testing.node.internal.InternalMockNetwork
|
||||||
|
import net.corda.testing.node.internal.InternalMockNetwork.MockNode
|
||||||
import net.corda.testing.node.startFlow
|
import net.corda.testing.node.startFlow
|
||||||
import org.junit.After
|
import org.junit.After
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
@ -27,17 +28,17 @@ import kotlin.test.assertNull
|
|||||||
|
|
||||||
// DOCSTART 3
|
// DOCSTART 3
|
||||||
class ResolveTransactionsFlowTest {
|
class ResolveTransactionsFlowTest {
|
||||||
private lateinit var mockNet: MockNetwork
|
private lateinit var mockNet: InternalMockNetwork
|
||||||
private lateinit var notaryNode: StartedMockNode
|
private lateinit var notaryNode: StartedNode<MockNode>
|
||||||
private lateinit var megaCorpNode: StartedMockNode
|
private lateinit var megaCorpNode: StartedNode<MockNode>
|
||||||
private lateinit var miniCorpNode: StartedMockNode
|
private lateinit var miniCorpNode: StartedNode<MockNode>
|
||||||
private lateinit var megaCorp: Party
|
private lateinit var megaCorp: Party
|
||||||
private lateinit var miniCorp: Party
|
private lateinit var miniCorp: Party
|
||||||
private lateinit var notary: Party
|
private lateinit var notary: Party
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setup() {
|
fun setup() {
|
||||||
mockNet = MockNetwork(cordappPackages = listOf("net.corda.testing.contracts"))
|
mockNet = InternalMockNetwork(cordappPackages = listOf("net.corda.testing.contracts"))
|
||||||
notaryNode = mockNet.defaultNotaryNode
|
notaryNode = mockNet.defaultNotaryNode
|
||||||
megaCorpNode = mockNet.createPartyNode(CordaX500Name("MegaCorp", "London", "GB"))
|
megaCorpNode = mockNet.createPartyNode(CordaX500Name("MegaCorp", "London", "GB"))
|
||||||
miniCorpNode = mockNet.createPartyNode(CordaX500Name("MiniCorp", "London", "GB"))
|
miniCorpNode = mockNet.createPartyNode(CordaX500Name("MiniCorp", "London", "GB"))
|
||||||
|
@ -10,6 +10,7 @@ import net.corda.core.identity.Party
|
|||||||
import net.corda.node.services.api.IdentityServiceInternal
|
import net.corda.node.services.api.IdentityServiceInternal
|
||||||
import net.corda.testing.contracts.DummyContract
|
import net.corda.testing.contracts.DummyContract
|
||||||
import net.corda.testing.core.*
|
import net.corda.testing.core.*
|
||||||
|
import net.corda.testing.internal.MockCordappProvider
|
||||||
import net.corda.testing.internal.rigorousMock
|
import net.corda.testing.internal.rigorousMock
|
||||||
import net.corda.testing.node.MockServices
|
import net.corda.testing.node.MockServices
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
@ -37,7 +38,7 @@ class LedgerTransactionQueryTests {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setup() {
|
fun setup() {
|
||||||
services.mockCordappProvider.addMockCordapp(DummyContract.PROGRAM_ID, services.attachments)
|
services.addMockCordapp(DummyContract.PROGRAM_ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Commands {
|
interface Commands {
|
||||||
|
@ -74,14 +74,12 @@ class CustomVaultQueryTest {
|
|||||||
|
|
||||||
private fun getBalances(): Pair<Map<Currency, Amount<Currency>>, Map<Currency, Amount<Currency>>> {
|
private fun getBalances(): Pair<Map<Currency, Amount<Currency>>, Map<Currency, Amount<Currency>>> {
|
||||||
// Print out the balances
|
// Print out the balances
|
||||||
val balancesNodesA =
|
val balancesNodesA = nodeA.transaction {
|
||||||
nodeA.database.transaction {
|
|
||||||
nodeA.services.getCashBalances()
|
nodeA.services.getCashBalances()
|
||||||
}
|
}
|
||||||
println("BalanceA\n" + balancesNodesA)
|
println("BalanceA\n" + balancesNodesA)
|
||||||
|
|
||||||
val balancesNodesB =
|
val balancesNodesB = nodeB.transaction {
|
||||||
nodeB.database.transaction {
|
|
||||||
nodeB.services.getCashBalances()
|
nodeB.services.getCashBalances()
|
||||||
}
|
}
|
||||||
println("BalanceB\n" + balancesNodesB)
|
println("BalanceB\n" + balancesNodesB)
|
||||||
|
@ -68,13 +68,14 @@ class FxTransactionBuildTutorialTest {
|
|||||||
doIt.getOrThrow()
|
doIt.getOrThrow()
|
||||||
// Get the balances when the vault updates
|
// Get the balances when the vault updates
|
||||||
nodeAVaultUpdate.get()
|
nodeAVaultUpdate.get()
|
||||||
val balancesA = nodeA.database.transaction {
|
val balancesA = nodeA.transaction {
|
||||||
nodeA.services.getCashBalances()
|
nodeA.services.getCashBalances()
|
||||||
}
|
}
|
||||||
nodeBVaultUpdate.get()
|
nodeBVaultUpdate.get()
|
||||||
val balancesB = nodeB.database.transaction {
|
val balancesB = nodeB.transaction {
|
||||||
nodeB.services.getCashBalances()
|
nodeB.services.getCashBalances()
|
||||||
}
|
}
|
||||||
|
|
||||||
println("BalanceA\n" + balancesA)
|
println("BalanceA\n" + balancesA)
|
||||||
println("BalanceB\n" + balancesB)
|
println("BalanceB\n" + balancesB)
|
||||||
// Verify the transfers occurred as expected
|
// Verify the transfers occurred as expected
|
||||||
@ -86,10 +87,10 @@ class FxTransactionBuildTutorialTest {
|
|||||||
|
|
||||||
private fun printBalances() {
|
private fun printBalances() {
|
||||||
// Print out the balances
|
// Print out the balances
|
||||||
nodeA.database.transaction {
|
nodeA.transaction {
|
||||||
println("BalanceA\n" + nodeA.services.getCashBalances())
|
println("BalanceA\n" + nodeA.services.getCashBalances())
|
||||||
}
|
}
|
||||||
nodeB.database.transaction {
|
nodeB.transaction {
|
||||||
println("BalanceB\n" + nodeB.services.getCashBalances())
|
println("BalanceB\n" + nodeB.services.getCashBalances())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,10 +9,11 @@ import net.corda.core.utilities.getOrThrow
|
|||||||
import net.corda.finance.DOLLARS
|
import net.corda.finance.DOLLARS
|
||||||
import net.corda.finance.`issued by`
|
import net.corda.finance.`issued by`
|
||||||
import net.corda.finance.contracts.asset.Cash
|
import net.corda.finance.contracts.asset.Cash
|
||||||
|
import net.corda.node.internal.StartedNode
|
||||||
import net.corda.testing.core.*
|
import net.corda.testing.core.*
|
||||||
import net.corda.testing.node.InMemoryMessagingNetwork.ServicePeerAllocationStrategy.RoundRobin
|
import net.corda.testing.node.InMemoryMessagingNetwork.ServicePeerAllocationStrategy.RoundRobin
|
||||||
import net.corda.testing.node.MockNetwork
|
import net.corda.testing.node.internal.InternalMockNetwork
|
||||||
import net.corda.testing.node.StartedMockNode
|
import net.corda.testing.node.internal.InternalMockNetwork.MockNode
|
||||||
import net.corda.testing.node.startFlow
|
import net.corda.testing.node.startFlow
|
||||||
import org.junit.After
|
import org.junit.After
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
@ -21,16 +22,16 @@ import kotlin.test.assertEquals
|
|||||||
import kotlin.test.assertFailsWith
|
import kotlin.test.assertFailsWith
|
||||||
|
|
||||||
class CashPaymentFlowTests {
|
class CashPaymentFlowTests {
|
||||||
private lateinit var mockNet: MockNetwork
|
private lateinit var mockNet: InternalMockNetwork
|
||||||
private val initialBalance = 2000.DOLLARS
|
private val initialBalance = 2000.DOLLARS
|
||||||
private val ref = OpaqueBytes.of(0x01)
|
private val ref = OpaqueBytes.of(0x01)
|
||||||
private lateinit var bankOfCordaNode: StartedMockNode
|
private lateinit var bankOfCordaNode: StartedNode<MockNode>
|
||||||
private lateinit var bankOfCorda: Party
|
private lateinit var bankOfCorda: Party
|
||||||
private lateinit var aliceNode: StartedMockNode
|
private lateinit var aliceNode: StartedNode<MockNode>
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun start() {
|
fun start() {
|
||||||
mockNet = MockNetwork(servicePeerAllocationStrategy = RoundRobin(), cordappPackages = listOf("net.corda.finance.contracts.asset"))
|
mockNet = InternalMockNetwork(servicePeerAllocationStrategy = RoundRobin(), cordappPackages = listOf("net.corda.finance.contracts.asset"))
|
||||||
bankOfCordaNode = mockNet.createPartyNode(BOC_NAME)
|
bankOfCordaNode = mockNet.createPartyNode(BOC_NAME)
|
||||||
bankOfCorda = bankOfCordaNode.info.identityFromX500Name(BOC_NAME)
|
bankOfCorda = bankOfCordaNode.info.identityFromX500Name(BOC_NAME)
|
||||||
aliceNode = mockNet.createPartyNode(ALICE_NAME)
|
aliceNode = mockNet.createPartyNode(ALICE_NAME)
|
||||||
|
@ -5,6 +5,7 @@ apply plugin: 'com.jfrog.artifactory'
|
|||||||
description "Generates a summary of the artifact's public API"
|
description "Generates a summary of the artifact's public API"
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
|
mavenLocal()
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -17,3 +18,4 @@ dependencies {
|
|||||||
publish {
|
publish {
|
||||||
name project.name
|
name project.name
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -202,6 +202,14 @@ public class ScanApi extends DefaultTask {
|
|||||||
// These classes belong to internal Corda packages.
|
// These classes belong to internal Corda packages.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (className.contains("$$inlined$")) {
|
||||||
|
/*
|
||||||
|
* These classes are internally generated by the Kotlin compiler
|
||||||
|
* and are not exposed as part of the public API
|
||||||
|
* TODO: Filter out using EnclosingMethod attribute in classfile
|
||||||
|
*/
|
||||||
|
return;
|
||||||
|
}
|
||||||
ClassInfo classInfo = allInfo.get(className);
|
ClassInfo classInfo = allInfo.get(className);
|
||||||
if (classInfo.getClassLoaders() == null) {
|
if (classInfo.getClassLoaders() == null) {
|
||||||
// Ignore classes that belong to one of our target ClassLoader's parents.
|
// Ignore classes that belong to one of our target ClassLoader's parents.
|
||||||
@ -275,6 +283,7 @@ public class ScanApi extends DefaultTask {
|
|||||||
for (MethodInfo method : methods) {
|
for (MethodInfo method : methods) {
|
||||||
if (isVisible(method.getAccessFlags()) // Only public and protected methods
|
if (isVisible(method.getAccessFlags()) // Only public and protected methods
|
||||||
&& isValid(method.getAccessFlags(), METHOD_MASK) // Excludes bridge and synthetic methods
|
&& isValid(method.getAccessFlags(), METHOD_MASK) // Excludes bridge and synthetic methods
|
||||||
|
&& !hasCordaInternal(method.getAnnotationNames()) // Excludes methods annotated as @CordaInternal
|
||||||
&& !isKotlinInternalScope(method)) {
|
&& !isKotlinInternalScope(method)) {
|
||||||
writer.append(" ").println(filterAnnotationsFor(method));
|
writer.append(" ").println(filterAnnotationsFor(method));
|
||||||
}
|
}
|
||||||
@ -355,6 +364,10 @@ public class ScanApi extends DefaultTask {
|
|||||||
return method.getMethodName().indexOf('$') >= 0;
|
return method.getMethodName().indexOf('$') >= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static boolean hasCordaInternal(Collection<String> annotationNames) {
|
||||||
|
return annotationNames.contains("net.corda.core.CordaInternal");
|
||||||
|
}
|
||||||
|
|
||||||
private static boolean isValid(int modifiers, int mask) {
|
private static boolean isValid(int modifiers, int mask) {
|
||||||
return (modifiers & mask) == modifiers;
|
return (modifiers & mask) == modifiers;
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,7 @@ import net.corda.testing.core.DUMMY_NOTARY_NAME
|
|||||||
import net.corda.testing.core.SerializationEnvironmentRule
|
import net.corda.testing.core.SerializationEnvironmentRule
|
||||||
import net.corda.testing.core.TestIdentity
|
import net.corda.testing.core.TestIdentity
|
||||||
import net.corda.testing.internal.rigorousMock
|
import net.corda.testing.internal.rigorousMock
|
||||||
import net.corda.testing.node.MockCordappConfigProvider
|
import net.corda.testing.internal.MockCordappConfigProvider
|
||||||
import net.corda.testing.services.MockAttachmentStorage
|
import net.corda.testing.services.MockAttachmentStorage
|
||||||
import org.junit.Assert.*
|
import org.junit.Assert.*
|
||||||
import org.junit.Rule
|
import org.junit.Rule
|
||||||
|
@ -23,7 +23,7 @@ import net.corda.testing.core.SerializationEnvironmentRule
|
|||||||
import net.corda.testing.core.TestIdentity
|
import net.corda.testing.core.TestIdentity
|
||||||
import net.corda.testing.internal.kryoSpecific
|
import net.corda.testing.internal.kryoSpecific
|
||||||
import net.corda.testing.internal.rigorousMock
|
import net.corda.testing.internal.rigorousMock
|
||||||
import net.corda.testing.node.MockCordappConfigProvider
|
import net.corda.testing.internal.MockCordappConfigProvider
|
||||||
import net.corda.testing.services.MockAttachmentStorage
|
import net.corda.testing.services.MockAttachmentStorage
|
||||||
import org.apache.commons.io.IOUtils
|
import org.apache.commons.io.IOUtils
|
||||||
import org.junit.Assert.*
|
import org.junit.Assert.*
|
||||||
|
@ -29,7 +29,7 @@ import net.corda.testing.driver.NodeHandle
|
|||||||
import net.corda.testing.driver.driver
|
import net.corda.testing.driver.driver
|
||||||
import net.corda.testing.internal.rigorousMock
|
import net.corda.testing.internal.rigorousMock
|
||||||
import net.corda.testing.internal.withoutTestSerialization
|
import net.corda.testing.internal.withoutTestSerialization
|
||||||
import net.corda.testing.node.MockCordappConfigProvider
|
import net.corda.testing.internal.MockCordappConfigProvider
|
||||||
import net.corda.testing.services.MockAttachmentStorage
|
import net.corda.testing.services.MockAttachmentStorage
|
||||||
import org.junit.Assert.assertEquals
|
import org.junit.Assert.assertEquals
|
||||||
import org.junit.Rule
|
import org.junit.Rule
|
||||||
|
@ -13,25 +13,26 @@ import net.corda.core.identity.CordaX500Name
|
|||||||
import net.corda.core.identity.Party
|
import net.corda.core.identity.Party
|
||||||
import net.corda.core.internal.deleteIfExists
|
import net.corda.core.internal.deleteIfExists
|
||||||
import net.corda.core.internal.div
|
import net.corda.core.internal.div
|
||||||
|
import net.corda.core.node.NotaryInfo
|
||||||
import net.corda.core.transactions.SignedTransaction
|
import net.corda.core.transactions.SignedTransaction
|
||||||
import net.corda.core.transactions.TransactionBuilder
|
import net.corda.core.transactions.TransactionBuilder
|
||||||
import net.corda.core.utilities.NetworkHostAndPort
|
import net.corda.core.utilities.NetworkHostAndPort
|
||||||
import net.corda.core.utilities.Try
|
import net.corda.core.utilities.Try
|
||||||
import net.corda.core.utilities.getOrThrow
|
import net.corda.core.utilities.getOrThrow
|
||||||
|
import net.corda.node.internal.StartedNode
|
||||||
import net.corda.node.services.config.BFTSMaRtConfiguration
|
import net.corda.node.services.config.BFTSMaRtConfiguration
|
||||||
import net.corda.node.services.config.NotaryConfig
|
import net.corda.node.services.config.NotaryConfig
|
||||||
import net.corda.node.services.transactions.minClusterSize
|
import net.corda.node.services.transactions.minClusterSize
|
||||||
import net.corda.node.services.transactions.minCorrectReplicas
|
import net.corda.node.services.transactions.minCorrectReplicas
|
||||||
import net.corda.nodeapi.internal.DevIdentityGenerator
|
import net.corda.nodeapi.internal.DevIdentityGenerator
|
||||||
import net.corda.nodeapi.internal.network.NetworkParametersCopier
|
import net.corda.nodeapi.internal.network.NetworkParametersCopier
|
||||||
import net.corda.core.node.NotaryInfo
|
|
||||||
import net.corda.testing.core.chooseIdentity
|
|
||||||
import net.corda.testing.common.internal.testNetworkParameters
|
import net.corda.testing.common.internal.testNetworkParameters
|
||||||
import net.corda.testing.contracts.DummyContract
|
import net.corda.testing.contracts.DummyContract
|
||||||
|
import net.corda.testing.core.chooseIdentity
|
||||||
import net.corda.testing.core.dummyCommand
|
import net.corda.testing.core.dummyCommand
|
||||||
import net.corda.testing.node.MockNetwork
|
|
||||||
import net.corda.testing.node.StartedMockNode
|
|
||||||
import net.corda.testing.node.MockNodeParameters
|
import net.corda.testing.node.MockNodeParameters
|
||||||
|
import net.corda.testing.node.internal.InternalMockNetwork
|
||||||
|
import net.corda.testing.node.internal.InternalMockNetwork.MockNode
|
||||||
import net.corda.testing.node.startFlow
|
import net.corda.testing.node.startFlow
|
||||||
import org.junit.After
|
import org.junit.After
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
@ -41,13 +42,13 @@ import kotlin.test.assertEquals
|
|||||||
import kotlin.test.assertTrue
|
import kotlin.test.assertTrue
|
||||||
|
|
||||||
class BFTNotaryServiceTests {
|
class BFTNotaryServiceTests {
|
||||||
private lateinit var mockNet: MockNetwork
|
private lateinit var mockNet: InternalMockNetwork
|
||||||
private lateinit var notary: Party
|
private lateinit var notary: Party
|
||||||
private lateinit var node: StartedMockNode
|
private lateinit var node: StartedNode<MockNode>
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun before() {
|
fun before() {
|
||||||
mockNet = MockNetwork(emptyList())
|
mockNet = InternalMockNetwork(emptyList())
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
@ -153,7 +154,7 @@ class BFTNotaryServiceTests {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun StartedMockNode.signInitialTransaction(notary: Party, block: TransactionBuilder.() -> Any?): SignedTransaction {
|
private fun StartedNode<MockNode>.signInitialTransaction(notary: Party, block: TransactionBuilder.() -> Any?): SignedTransaction {
|
||||||
return services.signInitialTransaction(
|
return services.signInitialTransaction(
|
||||||
TransactionBuilder(notary).apply {
|
TransactionBuilder(notary).apply {
|
||||||
addCommand(dummyCommand(services.myInfo.chooseIdentity().owningKey))
|
addCommand(dummyCommand(services.myInfo.chooseIdentity().owningKey))
|
||||||
|
@ -17,6 +17,7 @@ import net.corda.testing.driver.driver
|
|||||||
import net.corda.testing.core.dummyCommand
|
import net.corda.testing.core.dummyCommand
|
||||||
import net.corda.testing.driver.DriverParameters
|
import net.corda.testing.driver.DriverParameters
|
||||||
import net.corda.testing.driver.InProcess
|
import net.corda.testing.driver.InProcess
|
||||||
|
import net.corda.testing.driver.internal.InProcessImpl
|
||||||
import net.corda.testing.node.ClusterSpec
|
import net.corda.testing.node.ClusterSpec
|
||||||
import net.corda.testing.node.NotarySpec
|
import net.corda.testing.node.NotarySpec
|
||||||
import net.corda.testing.node.startFlow
|
import net.corda.testing.node.startFlow
|
||||||
@ -62,7 +63,7 @@ class RaftNotaryServiceTests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun issueState(nodeHandle: InProcess, notary: Party): StateAndRef<*> {
|
private fun issueState(nodeHandle: InProcess, notary: Party): StateAndRef<*> {
|
||||||
return nodeHandle.database.transaction {
|
return (nodeHandle as InProcessImpl).database.transaction {
|
||||||
|
|
||||||
val builder = DummyContract.generateInitial(Random().nextInt(), notary, nodeHandle.services.myInfo.chooseIdentity().ref(0))
|
val builder = DummyContract.generateInitial(Random().nextInt(), notary, nodeHandle.services.myInfo.chooseIdentity().ref(0))
|
||||||
val stx = nodeHandle.services.signInitialTransaction(builder)
|
val stx = nodeHandle.services.signInitialTransaction(builder)
|
||||||
|
@ -16,10 +16,10 @@ import net.corda.nodeapi.internal.crypto.X509Utilities.CORDA_CLIENT_CA
|
|||||||
import net.corda.nodeapi.internal.crypto.X509Utilities.CORDA_INTERMEDIATE_CA
|
import net.corda.nodeapi.internal.crypto.X509Utilities.CORDA_INTERMEDIATE_CA
|
||||||
import net.corda.nodeapi.internal.crypto.X509Utilities.CORDA_ROOT_CA
|
import net.corda.nodeapi.internal.crypto.X509Utilities.CORDA_ROOT_CA
|
||||||
import net.corda.testing.common.internal.testNetworkParameters
|
import net.corda.testing.common.internal.testNetworkParameters
|
||||||
import net.corda.testing.core.DEV_ROOT_CA
|
|
||||||
import net.corda.testing.core.SerializationEnvironmentRule
|
import net.corda.testing.core.SerializationEnvironmentRule
|
||||||
import net.corda.testing.core.singleIdentity
|
import net.corda.testing.core.singleIdentity
|
||||||
import net.corda.testing.driver.PortAllocation
|
import net.corda.testing.driver.PortAllocation
|
||||||
|
import net.corda.testing.internal.DEV_ROOT_CA
|
||||||
import net.corda.testing.node.NotarySpec
|
import net.corda.testing.node.NotarySpec
|
||||||
import net.corda.testing.node.internal.CompatibilityZoneParams
|
import net.corda.testing.node.internal.CompatibilityZoneParams
|
||||||
import net.corda.testing.node.internal.internalDriver
|
import net.corda.testing.node.internal.internalDriver
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package net.corda.node.internal
|
package net.corda.node
|
||||||
|
|
||||||
import net.corda.core.serialization.SerializeAsToken
|
import net.corda.core.serialization.SerializeAsToken
|
||||||
import net.corda.core.serialization.SerializeAsTokenContext
|
import net.corda.core.serialization.SerializeAsTokenContext
|
@ -30,6 +30,7 @@ import net.corda.core.transactions.SignedTransaction
|
|||||||
import net.corda.core.utilities.NetworkHostAndPort
|
import net.corda.core.utilities.NetworkHostAndPort
|
||||||
import net.corda.core.utilities.debug
|
import net.corda.core.utilities.debug
|
||||||
import net.corda.core.utilities.getOrThrow
|
import net.corda.core.utilities.getOrThrow
|
||||||
|
import net.corda.node.CordaClock
|
||||||
import net.corda.node.VersionInfo
|
import net.corda.node.VersionInfo
|
||||||
import net.corda.node.internal.classloading.requireAnnotation
|
import net.corda.node.internal.classloading.requireAnnotation
|
||||||
import net.corda.node.internal.cordapp.CordappConfigFileProvider
|
import net.corda.node.internal.cordapp.CordappConfigFileProvider
|
||||||
|
@ -16,6 +16,8 @@ import net.corda.core.serialization.internal.SerializationEnvironmentImpl
|
|||||||
import net.corda.core.serialization.internal.nodeSerializationEnv
|
import net.corda.core.serialization.internal.nodeSerializationEnv
|
||||||
import net.corda.core.utilities.NetworkHostAndPort
|
import net.corda.core.utilities.NetworkHostAndPort
|
||||||
import net.corda.core.utilities.contextLogger
|
import net.corda.core.utilities.contextLogger
|
||||||
|
import net.corda.node.CordaClock
|
||||||
|
import net.corda.node.SimpleClock
|
||||||
import net.corda.node.VersionInfo
|
import net.corda.node.VersionInfo
|
||||||
import net.corda.node.internal.artemis.ArtemisBroker
|
import net.corda.node.internal.artemis.ArtemisBroker
|
||||||
import net.corda.node.internal.artemis.BrokerAddresses
|
import net.corda.node.internal.artemis.BrokerAddresses
|
||||||
|
@ -21,8 +21,8 @@ import net.corda.core.schemas.PersistentStateRef
|
|||||||
import net.corda.core.serialization.SingletonSerializeAsToken
|
import net.corda.core.serialization.SingletonSerializeAsToken
|
||||||
import net.corda.core.utilities.contextLogger
|
import net.corda.core.utilities.contextLogger
|
||||||
import net.corda.core.utilities.trace
|
import net.corda.core.utilities.trace
|
||||||
import net.corda.node.internal.CordaClock
|
import net.corda.node.CordaClock
|
||||||
import net.corda.node.internal.MutableClock
|
import net.corda.node.MutableClock
|
||||||
import net.corda.node.services.api.FlowStarter
|
import net.corda.node.services.api.FlowStarter
|
||||||
import net.corda.node.services.api.NodePropertiesStore
|
import net.corda.node.services.api.NodePropertiesStore
|
||||||
import net.corda.node.services.api.SchedulerService
|
import net.corda.node.services.api.SchedulerService
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package net.corda.node.utilities
|
package net.corda.node.utilities
|
||||||
|
|
||||||
import net.corda.core.internal.until
|
import net.corda.core.internal.until
|
||||||
import net.corda.node.internal.MutableClock
|
import net.corda.node.MutableClock
|
||||||
import java.time.Clock
|
import java.time.Clock
|
||||||
import java.time.LocalDate
|
import java.time.LocalDate
|
||||||
import javax.annotation.concurrent.ThreadSafe
|
import javax.annotation.concurrent.ThreadSafe
|
||||||
|
@ -4,7 +4,7 @@ import com.typesafe.config.Config
|
|||||||
import com.typesafe.config.ConfigFactory
|
import com.typesafe.config.ConfigFactory
|
||||||
import net.corda.core.internal.cordapp.CordappConfigProvider
|
import net.corda.core.internal.cordapp.CordappConfigProvider
|
||||||
import net.corda.core.node.services.AttachmentStorage
|
import net.corda.core.node.services.AttachmentStorage
|
||||||
import net.corda.testing.node.MockCordappConfigProvider
|
import net.corda.testing.internal.MockCordappConfigProvider
|
||||||
import net.corda.testing.services.MockAttachmentStorage
|
import net.corda.testing.services.MockAttachmentStorage
|
||||||
import org.assertj.core.api.Assertions.assertThat
|
import org.assertj.core.api.Assertions.assertThat
|
||||||
import org.junit.Assert
|
import org.junit.Assert
|
||||||
|
@ -11,6 +11,8 @@ import net.corda.nodeapi.internal.crypto.CertificateType
|
|||||||
import net.corda.nodeapi.internal.crypto.X509Utilities
|
import net.corda.nodeapi.internal.crypto.X509Utilities
|
||||||
import net.corda.nodeapi.internal.crypto.x509Certificates
|
import net.corda.nodeapi.internal.crypto.x509Certificates
|
||||||
import net.corda.testing.core.*
|
import net.corda.testing.core.*
|
||||||
|
import net.corda.testing.internal.DEV_INTERMEDIATE_CA
|
||||||
|
import net.corda.testing.internal.DEV_ROOT_CA
|
||||||
import org.junit.Rule
|
import org.junit.Rule
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import kotlin.test.assertEquals
|
import kotlin.test.assertEquals
|
||||||
|
@ -15,6 +15,8 @@ import net.corda.nodeapi.internal.crypto.x509Certificates
|
|||||||
import net.corda.nodeapi.internal.persistence.CordaPersistence
|
import net.corda.nodeapi.internal.persistence.CordaPersistence
|
||||||
import net.corda.nodeapi.internal.persistence.DatabaseConfig
|
import net.corda.nodeapi.internal.persistence.DatabaseConfig
|
||||||
import net.corda.testing.core.*
|
import net.corda.testing.core.*
|
||||||
|
import net.corda.testing.internal.DEV_INTERMEDIATE_CA
|
||||||
|
import net.corda.testing.internal.DEV_ROOT_CA
|
||||||
import net.corda.testing.node.MockServices.Companion.makeTestDataSourceProperties
|
import net.corda.testing.node.MockServices.Companion.makeTestDataSourceProperties
|
||||||
import net.corda.testing.node.makeTestIdentityService
|
import net.corda.testing.node.makeTestIdentityService
|
||||||
import org.junit.After
|
import org.junit.After
|
||||||
|
@ -6,9 +6,9 @@ import net.corda.testing.core.ALICE_NAME
|
|||||||
import net.corda.testing.core.BOB_NAME
|
import net.corda.testing.core.BOB_NAME
|
||||||
import net.corda.node.services.api.NetworkMapCacheInternal
|
import net.corda.node.services.api.NetworkMapCacheInternal
|
||||||
import net.corda.testing.core.getTestPartyAndCertificate
|
import net.corda.testing.core.getTestPartyAndCertificate
|
||||||
import net.corda.testing.node.MockNetwork
|
|
||||||
import net.corda.testing.node.MockNodeParameters
|
import net.corda.testing.node.MockNodeParameters
|
||||||
import net.corda.testing.core.singleIdentity
|
import net.corda.testing.core.singleIdentity
|
||||||
|
import net.corda.testing.node.internal.InternalMockNetwork
|
||||||
import org.assertj.core.api.Assertions.assertThat
|
import org.assertj.core.api.Assertions.assertThat
|
||||||
import org.junit.After
|
import org.junit.After
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
@ -18,7 +18,7 @@ import kotlin.test.assertNotNull
|
|||||||
import kotlin.test.assertNull
|
import kotlin.test.assertNull
|
||||||
|
|
||||||
class NetworkMapCacheTest {
|
class NetworkMapCacheTest {
|
||||||
private val mockNet = MockNetwork(emptyList())
|
private val mockNet = InternalMockNetwork(emptyList())
|
||||||
|
|
||||||
@After
|
@After
|
||||||
fun teardown() {
|
fun teardown() {
|
||||||
|
@ -7,10 +7,10 @@ import net.corda.core.serialization.serialize
|
|||||||
import net.corda.core.utilities.seconds
|
import net.corda.core.utilities.seconds
|
||||||
import net.corda.testing.core.ALICE_NAME
|
import net.corda.testing.core.ALICE_NAME
|
||||||
import net.corda.testing.core.BOB_NAME
|
import net.corda.testing.core.BOB_NAME
|
||||||
import net.corda.testing.core.DEV_ROOT_CA
|
|
||||||
import net.corda.testing.core.SerializationEnvironmentRule
|
import net.corda.testing.core.SerializationEnvironmentRule
|
||||||
import net.corda.testing.common.internal.testNetworkParameters
|
import net.corda.testing.common.internal.testNetworkParameters
|
||||||
import net.corda.testing.driver.PortAllocation
|
import net.corda.testing.driver.PortAllocation
|
||||||
|
import net.corda.testing.internal.DEV_ROOT_CA
|
||||||
import net.corda.testing.internal.TestNodeInfoBuilder
|
import net.corda.testing.internal.TestNodeInfoBuilder
|
||||||
import net.corda.testing.internal.createNodeInfoAndSigned
|
import net.corda.testing.internal.createNodeInfoAndSigned
|
||||||
import net.corda.testing.internal.signWith
|
import net.corda.testing.internal.signWith
|
||||||
|
@ -28,6 +28,7 @@ import net.corda.nodeapi.internal.network.ParametersUpdate
|
|||||||
import net.corda.nodeapi.internal.network.verifiedNetworkMapCert
|
import net.corda.nodeapi.internal.network.verifiedNetworkMapCert
|
||||||
import net.corda.testing.common.internal.testNetworkParameters
|
import net.corda.testing.common.internal.testNetworkParameters
|
||||||
import net.corda.testing.core.*
|
import net.corda.testing.core.*
|
||||||
|
import net.corda.testing.internal.DEV_ROOT_CA
|
||||||
import net.corda.testing.internal.TestNodeInfoBuilder
|
import net.corda.testing.internal.TestNodeInfoBuilder
|
||||||
import net.corda.testing.internal.createNodeInfoAndSigned
|
import net.corda.testing.internal.createNodeInfoAndSigned
|
||||||
import org.assertj.core.api.Assertions.assertThat
|
import org.assertj.core.api.Assertions.assertThat
|
||||||
|
@ -12,9 +12,9 @@ import net.corda.nodeapi.internal.network.NETWORK_PARAMS_UPDATE_FILE_NAME
|
|||||||
import net.corda.nodeapi.internal.network.NetworkParametersCopier
|
import net.corda.nodeapi.internal.network.NetworkParametersCopier
|
||||||
import net.corda.nodeapi.internal.network.verifiedNetworkMapCert
|
import net.corda.nodeapi.internal.network.verifiedNetworkMapCert
|
||||||
import net.corda.testing.common.internal.testNetworkParameters
|
import net.corda.testing.common.internal.testNetworkParameters
|
||||||
import net.corda.testing.core.DEV_ROOT_CA
|
|
||||||
import net.corda.testing.core.SerializationEnvironmentRule
|
import net.corda.testing.core.SerializationEnvironmentRule
|
||||||
import net.corda.testing.driver.PortAllocation
|
import net.corda.testing.driver.PortAllocation
|
||||||
|
import net.corda.testing.internal.DEV_ROOT_CA
|
||||||
import net.corda.testing.node.internal.network.NetworkMapServer
|
import net.corda.testing.node.internal.network.NetworkMapServer
|
||||||
import org.junit.After
|
import org.junit.After
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
|
@ -14,6 +14,7 @@ import net.corda.node.services.schema.NodeSchemaService.NodeNotaryV1
|
|||||||
import net.corda.testing.driver.DriverParameters
|
import net.corda.testing.driver.DriverParameters
|
||||||
import net.corda.testing.driver.InProcess
|
import net.corda.testing.driver.InProcess
|
||||||
import net.corda.testing.driver.driver
|
import net.corda.testing.driver.driver
|
||||||
|
import net.corda.testing.driver.internal.InProcessImpl
|
||||||
import net.corda.testing.internal.vault.DummyLinearStateSchemaV1
|
import net.corda.testing.internal.vault.DummyLinearStateSchemaV1
|
||||||
import net.corda.testing.node.MockNetwork
|
import net.corda.testing.node.MockNetwork
|
||||||
import org.hibernate.annotations.Cascade
|
import org.hibernate.annotations.Cascade
|
||||||
@ -80,7 +81,7 @@ class NodeSchemaServiceTest {
|
|||||||
fun `custom schemas are loaded eagerly`() {
|
fun `custom schemas are loaded eagerly`() {
|
||||||
val expected = setOf("PARENTS", "CHILDREN")
|
val expected = setOf("PARENTS", "CHILDREN")
|
||||||
val tables = driver(DriverParameters(startNodesInProcess = true)) {
|
val tables = driver(DriverParameters(startNodesInProcess = true)) {
|
||||||
(defaultNotaryNode.getOrThrow() as InProcess).database.transaction {
|
(defaultNotaryNode.getOrThrow() as InProcessImpl).database.transaction {
|
||||||
session.createNativeQuery("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES").list()
|
session.createNativeQuery("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES").list()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,8 +8,8 @@ import com.google.common.util.concurrent.SettableFuture
|
|||||||
import net.corda.core.utilities.getOrThrow
|
import net.corda.core.utilities.getOrThrow
|
||||||
import net.corda.core.utilities.hours
|
import net.corda.core.utilities.hours
|
||||||
import net.corda.core.utilities.minutes
|
import net.corda.core.utilities.minutes
|
||||||
import net.corda.node.internal.CordaClock
|
import net.corda.node.CordaClock
|
||||||
import net.corda.node.internal.SimpleClock
|
import net.corda.node.SimpleClock
|
||||||
import net.corda.node.services.events.NodeSchedulerService
|
import net.corda.node.services.events.NodeSchedulerService
|
||||||
import net.corda.testing.node.TestClock
|
import net.corda.testing.node.TestClock
|
||||||
import org.junit.After
|
import org.junit.After
|
||||||
|
@ -25,6 +25,7 @@ import java.net.InetSocketAddress
|
|||||||
import java.net.ServerSocket
|
import java.net.ServerSocket
|
||||||
import java.nio.file.Path
|
import java.nio.file.Path
|
||||||
import java.nio.file.Paths
|
import java.nio.file.Paths
|
||||||
|
import java.sql.Connection
|
||||||
import java.util.concurrent.atomic.AtomicInteger
|
import java.util.concurrent.atomic.AtomicInteger
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -58,7 +59,6 @@ interface OutOfProcess : NodeHandle {
|
|||||||
|
|
||||||
@DoNotImplement
|
@DoNotImplement
|
||||||
interface InProcess : NodeHandle {
|
interface InProcess : NodeHandle {
|
||||||
val database: CordaPersistence
|
|
||||||
val services: StartedNodeServices
|
val services: StartedNodeServices
|
||||||
/**
|
/**
|
||||||
* Register a flow that is initiated by another flow
|
* Register a flow that is initiated by another flow
|
||||||
|
@ -15,6 +15,7 @@ import net.corda.testing.driver.OutOfProcess
|
|||||||
import net.corda.testing.node.User
|
import net.corda.testing.node.User
|
||||||
import rx.Observable
|
import rx.Observable
|
||||||
import java.nio.file.Path
|
import java.nio.file.Path
|
||||||
|
import java.sql.Connection
|
||||||
|
|
||||||
interface NodeHandleInternal : NodeHandle {
|
interface NodeHandleInternal : NodeHandle {
|
||||||
val configuration: NodeConfiguration
|
val configuration: NodeConfiguration
|
||||||
@ -57,7 +58,7 @@ data class InProcessImpl(
|
|||||||
private val onStopCallback: () -> Unit,
|
private val onStopCallback: () -> Unit,
|
||||||
private val node: StartedNode<Node>
|
private val node: StartedNode<Node>
|
||||||
) : InProcess, NodeHandleInternal {
|
) : InProcess, NodeHandleInternal {
|
||||||
override val database: CordaPersistence get() = node.database
|
val database: CordaPersistence = node.database
|
||||||
override val services: StartedNodeServices get() = node.services
|
override val services: StartedNodeServices get() = node.services
|
||||||
override val rpcUsers: List<User> = configuration.rpcUsers.map { User(it.username, it.password, it.permissions) }
|
override val rpcUsers: List<User> = configuration.rpcUsers.map { User(it.username, it.password, it.permissions) }
|
||||||
override fun stop() {
|
override fun stop() {
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package net.corda.testing.node
|
package net.corda.testing.node
|
||||||
|
|
||||||
|
import net.corda.core.CordaInternal
|
||||||
import net.corda.core.DoNotImplement
|
import net.corda.core.DoNotImplement
|
||||||
import net.corda.core.crypto.CompositeKey
|
import net.corda.core.crypto.CompositeKey
|
||||||
import net.corda.core.identity.CordaX500Name
|
import net.corda.core.identity.CordaX500Name
|
||||||
@ -48,7 +49,7 @@ import kotlin.concurrent.thread
|
|||||||
* a service is addressed.
|
* a service is addressed.
|
||||||
*/
|
*/
|
||||||
@ThreadSafe
|
@ThreadSafe
|
||||||
class InMemoryMessagingNetwork internal constructor(
|
class InMemoryMessagingNetwork private constructor(
|
||||||
private val sendManuallyPumped: Boolean,
|
private val sendManuallyPumped: Boolean,
|
||||||
private val servicePeerAllocationStrategy: ServicePeerAllocationStrategy = InMemoryMessagingNetwork.ServicePeerAllocationStrategy.Random(),
|
private val servicePeerAllocationStrategy: ServicePeerAllocationStrategy = InMemoryMessagingNetwork.ServicePeerAllocationStrategy.Random(),
|
||||||
private val messagesInFlight: ReusableLatch = ReusableLatch()
|
private val messagesInFlight: ReusableLatch = ReusableLatch()
|
||||||
@ -56,6 +57,13 @@ class InMemoryMessagingNetwork internal constructor(
|
|||||||
companion object {
|
companion object {
|
||||||
private const val MESSAGES_LOG_NAME = "messages"
|
private const val MESSAGES_LOG_NAME = "messages"
|
||||||
private val log = LoggerFactory.getLogger(MESSAGES_LOG_NAME)
|
private val log = LoggerFactory.getLogger(MESSAGES_LOG_NAME)
|
||||||
|
|
||||||
|
internal fun create(
|
||||||
|
sendManuallyPumped: Boolean,
|
||||||
|
servicePeerAllocationStrategy: ServicePeerAllocationStrategy = InMemoryMessagingNetwork.ServicePeerAllocationStrategy.Random(),
|
||||||
|
messagesInFlight: ReusableLatch = ReusableLatch()): InMemoryMessagingNetwork {
|
||||||
|
return InMemoryMessagingNetwork(sendManuallyPumped, servicePeerAllocationStrategy, messagesInFlight)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private var counter = 0 // -1 means stopped.
|
private var counter = 0 // -1 means stopped.
|
||||||
@ -115,7 +123,8 @@ class InMemoryMessagingNetwork internal constructor(
|
|||||||
val peerHandle = PeerHandle(id, description)
|
val peerHandle = PeerHandle(id, description)
|
||||||
peersMapping[peerHandle.description] = peerHandle // Assume that the same name - the same entity in MockNetwork.
|
peersMapping[peerHandle.description] = peerHandle // Assume that the same name - the same entity in MockNetwork.
|
||||||
notaryService?.let { if (it.owningKey !is CompositeKey) peersMapping[it.name] = peerHandle }
|
notaryService?.let { if (it.owningKey !is CompositeKey) peersMapping[it.name] = peerHandle }
|
||||||
val serviceHandles = notaryService?.let { listOf(ServiceHandle(it.party)) } ?: emptyList() //TODO only notary can be distributed?
|
val serviceHandles = notaryService?.let { listOf(ServiceHandle(it.party)) }
|
||||||
|
?: emptyList() //TODO only notary can be distributed?
|
||||||
synchronized(this) {
|
synchronized(this) {
|
||||||
val node = InMemoryMessaging(manuallyPumped, peerHandle, executor, database)
|
val node = InMemoryMessaging(manuallyPumped, peerHandle, executor, database)
|
||||||
handleEndpointMap[peerHandle] = node
|
handleEndpointMap[peerHandle] = node
|
||||||
@ -304,7 +313,8 @@ class InMemoryMessagingNetwork internal constructor(
|
|||||||
|
|
||||||
override fun getAddressOfParty(partyInfo: PartyInfo): MessageRecipients {
|
override fun getAddressOfParty(partyInfo: PartyInfo): MessageRecipients {
|
||||||
return when (partyInfo) {
|
return when (partyInfo) {
|
||||||
is PartyInfo.SingleNode -> peersMapping[partyInfo.party.name] ?: throw IllegalArgumentException("No StartedMockNode for party ${partyInfo.party.name}")
|
is PartyInfo.SingleNode -> peersMapping[partyInfo.party.name]
|
||||||
|
?: throw IllegalArgumentException("No StartedMockNode for party ${partyInfo.party.name}")
|
||||||
is PartyInfo.DistributedNode -> ServiceHandle(partyInfo.party)
|
is PartyInfo.DistributedNode -> ServiceHandle(partyInfo.party)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,6 +13,8 @@ import net.corda.node.services.api.StartedNodeServices
|
|||||||
import net.corda.node.services.config.NodeConfiguration
|
import net.corda.node.services.config.NodeConfiguration
|
||||||
import net.corda.node.services.messaging.MessagingService
|
import net.corda.node.services.messaging.MessagingService
|
||||||
import net.corda.nodeapi.internal.persistence.CordaPersistence
|
import net.corda.nodeapi.internal.persistence.CordaPersistence
|
||||||
|
import net.corda.nodeapi.internal.persistence.DatabaseTransaction
|
||||||
|
import net.corda.nodeapi.internal.persistence.TransactionIsolationLevel
|
||||||
import net.corda.testing.core.DUMMY_NOTARY_NAME
|
import net.corda.testing.core.DUMMY_NOTARY_NAME
|
||||||
import net.corda.testing.node.internal.InternalMockNetwork
|
import net.corda.testing.node.internal.InternalMockNetwork
|
||||||
import net.corda.testing.node.internal.setMessagingServiceSpy
|
import net.corda.testing.node.internal.setMessagingServiceSpy
|
||||||
@ -87,7 +89,6 @@ class StartedMockNode private constructor(private val node: StartedNode<Internal
|
|||||||
}
|
}
|
||||||
|
|
||||||
val services get() : StartedNodeServices = node.services
|
val services get() : StartedNodeServices = node.services
|
||||||
val database get() : CordaPersistence = node.database
|
|
||||||
val id get() : Int = node.internals.id
|
val id get() : Int = node.internals.id
|
||||||
val info get() : NodeInfo = node.services.myInfo
|
val info get() : NodeInfo = node.services.myInfo
|
||||||
val network get() : MessagingService = node.network
|
val network get() : MessagingService = node.network
|
||||||
@ -110,6 +111,12 @@ class StartedMockNode private constructor(private val node: StartedNode<Internal
|
|||||||
|
|
||||||
/** Returns the currently live flows of type [flowClass], and their corresponding result future. */
|
/** Returns the currently live flows of type [flowClass], and their corresponding result future. */
|
||||||
fun <F : FlowLogic<*>> findStateMachines(flowClass: Class<F>): List<Pair<F, CordaFuture<*>>> = node.smm.findStateMachines(flowClass)
|
fun <F : FlowLogic<*>> findStateMachines(flowClass: Class<F>): List<Pair<F, CordaFuture<*>>> = node.smm.findStateMachines(flowClass)
|
||||||
|
|
||||||
|
fun <T> transaction(statement: () -> T): T {
|
||||||
|
return node.database.transaction {
|
||||||
|
statement()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package net.corda.testing.node
|
package net.corda.testing.node
|
||||||
|
|
||||||
import com.google.common.collect.MutableClassToInstanceMap
|
import com.google.common.collect.MutableClassToInstanceMap
|
||||||
|
import net.corda.core.contracts.ContractClassName
|
||||||
import net.corda.core.cordapp.CordappProvider
|
import net.corda.core.cordapp.CordappProvider
|
||||||
import net.corda.core.crypto.*
|
import net.corda.core.crypto.*
|
||||||
import net.corda.core.flows.FlowLogic
|
import net.corda.core.flows.FlowLogic
|
||||||
@ -31,11 +32,10 @@ import net.corda.node.services.vault.NodeVaultService
|
|||||||
import net.corda.nodeapi.internal.persistence.CordaPersistence
|
import net.corda.nodeapi.internal.persistence.CordaPersistence
|
||||||
import net.corda.nodeapi.internal.persistence.DatabaseConfig
|
import net.corda.nodeapi.internal.persistence.DatabaseConfig
|
||||||
import net.corda.nodeapi.internal.persistence.HibernateConfiguration
|
import net.corda.nodeapi.internal.persistence.HibernateConfiguration
|
||||||
import net.corda.testing.common.internal.testNetworkParameters
|
|
||||||
import net.corda.testing.core.DEV_ROOT_CA
|
|
||||||
import net.corda.testing.core.TestIdentity
|
import net.corda.testing.core.TestIdentity
|
||||||
|
import net.corda.testing.internal.DEV_ROOT_CA
|
||||||
import net.corda.testing.services.MockAttachmentStorage
|
import net.corda.testing.services.MockAttachmentStorage
|
||||||
import net.corda.testing.services.MockCordappProvider
|
import net.corda.testing.internal.MockCordappProvider
|
||||||
import org.bouncycastle.operator.ContentSigner
|
import org.bouncycastle.operator.ContentSigner
|
||||||
import rx.Observable
|
import rx.Observable
|
||||||
import rx.subjects.PublishSubject
|
import rx.subjects.PublishSubject
|
||||||
@ -209,7 +209,7 @@ open class MockServices private constructor(
|
|||||||
return NodeInfo(emptyList(), listOf(initialIdentity.identity), 1, serial = 1L)
|
return NodeInfo(emptyList(), listOf(initialIdentity.identity), 1, serial = 1L)
|
||||||
}
|
}
|
||||||
override val transactionVerifierService: TransactionVerifierService get() = InMemoryTransactionVerifierService(2)
|
override val transactionVerifierService: TransactionVerifierService get() = InMemoryTransactionVerifierService(2)
|
||||||
val mockCordappProvider = MockCordappProvider(cordappLoader, attachments)
|
private val mockCordappProvider: MockCordappProvider = MockCordappProvider(cordappLoader, attachments)
|
||||||
override val cordappProvider: CordappProvider get() = mockCordappProvider
|
override val cordappProvider: CordappProvider get() = mockCordappProvider
|
||||||
|
|
||||||
internal fun makeVaultService(hibernateConfig: HibernateConfiguration, schemaService: SchemaService): VaultServiceInternal {
|
internal fun makeVaultService(hibernateConfig: HibernateConfiguration, schemaService: SchemaService): VaultServiceInternal {
|
||||||
@ -221,12 +221,17 @@ open class MockServices private constructor(
|
|||||||
val cordappServices: MutableClassToInstanceMap<SerializeAsToken> = MutableClassToInstanceMap.create<SerializeAsToken>()
|
val cordappServices: MutableClassToInstanceMap<SerializeAsToken> = MutableClassToInstanceMap.create<SerializeAsToken>()
|
||||||
override fun <T : SerializeAsToken> cordaService(type: Class<T>): T {
|
override fun <T : SerializeAsToken> cordaService(type: Class<T>): T {
|
||||||
require(type.isAnnotationPresent(CordaService::class.java)) { "${type.name} is not a Corda service" }
|
require(type.isAnnotationPresent(CordaService::class.java)) { "${type.name} is not a Corda service" }
|
||||||
return cordappServices.getInstance(type) ?: throw IllegalArgumentException("Corda service ${type.name} does not exist")
|
return cordappServices.getInstance(type)
|
||||||
|
?: throw IllegalArgumentException("Corda service ${type.name} does not exist")
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun jdbcSession(): Connection = throw UnsupportedOperationException()
|
override fun jdbcSession(): Connection = throw UnsupportedOperationException()
|
||||||
|
|
||||||
override fun registerUnloadHandler(runOnStop: () -> Unit) = throw UnsupportedOperationException()
|
override fun registerUnloadHandler(runOnStop: () -> Unit) = throw UnsupportedOperationException()
|
||||||
|
|
||||||
|
fun addMockCordapp(contractClassName: ContractClassName) {
|
||||||
|
mockCordappProvider.addMockCordapp(contractClassName, attachments)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class MockKeyManagementService(val identityService: IdentityService,
|
class MockKeyManagementService(val identityService: IdentityService,
|
||||||
@ -252,7 +257,8 @@ class MockKeyManagementService(val identityService: IdentityService,
|
|||||||
private fun getSigner(publicKey: PublicKey): ContentSigner = getSigner(getSigningKeyPair(publicKey))
|
private fun getSigner(publicKey: PublicKey): ContentSigner = getSigner(getSigningKeyPair(publicKey))
|
||||||
|
|
||||||
private fun getSigningKeyPair(publicKey: PublicKey): KeyPair {
|
private fun getSigningKeyPair(publicKey: PublicKey): KeyPair {
|
||||||
val pk = publicKey.keys.firstOrNull { keyStore.containsKey(it) } ?: throw IllegalArgumentException("Public key not found: ${publicKey.toStringShort()}")
|
val pk = publicKey.keys.firstOrNull { keyStore.containsKey(it) }
|
||||||
|
?: throw IllegalArgumentException("Public key not found: ${publicKey.toStringShort()}")
|
||||||
return KeyPair(pk, keyStore[pk]!!)
|
return KeyPair(pk, keyStore[pk]!!)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package net.corda.testing.node
|
package net.corda.testing.node
|
||||||
|
|
||||||
import net.corda.core.internal.until
|
import net.corda.core.internal.until
|
||||||
import net.corda.node.internal.MutableClock
|
import net.corda.node.MutableClock
|
||||||
import java.time.Clock
|
import java.time.Clock
|
||||||
import java.time.Duration
|
import java.time.Duration
|
||||||
import java.time.Instant
|
import java.time.Instant
|
||||||
|
@ -43,7 +43,7 @@ import net.corda.testing.common.internal.testNetworkParameters
|
|||||||
import net.corda.testing.core.ALICE_NAME
|
import net.corda.testing.core.ALICE_NAME
|
||||||
import net.corda.testing.core.BOB_NAME
|
import net.corda.testing.core.BOB_NAME
|
||||||
import net.corda.testing.core.DUMMY_BANK_A_NAME
|
import net.corda.testing.core.DUMMY_BANK_A_NAME
|
||||||
import net.corda.testing.core.setGlobalSerialization
|
import net.corda.testing.internal.setGlobalSerialization
|
||||||
import net.corda.testing.driver.*
|
import net.corda.testing.driver.*
|
||||||
import net.corda.testing.driver.internal.InProcessImpl
|
import net.corda.testing.driver.internal.InProcessImpl
|
||||||
import net.corda.testing.driver.internal.NodeHandleInternal
|
import net.corda.testing.driver.internal.NodeHandleInternal
|
||||||
|
@ -50,7 +50,6 @@ import net.corda.nodeapi.internal.network.NetworkParametersCopier
|
|||||||
import net.corda.nodeapi.internal.persistence.CordaPersistence
|
import net.corda.nodeapi.internal.persistence.CordaPersistence
|
||||||
import net.corda.nodeapi.internal.persistence.DatabaseConfig
|
import net.corda.nodeapi.internal.persistence.DatabaseConfig
|
||||||
import net.corda.testing.common.internal.testNetworkParameters
|
import net.corda.testing.common.internal.testNetworkParameters
|
||||||
import net.corda.testing.core.setGlobalSerialization
|
|
||||||
import net.corda.testing.internal.rigorousMock
|
import net.corda.testing.internal.rigorousMock
|
||||||
import net.corda.testing.internal.testThreadFactory
|
import net.corda.testing.internal.testThreadFactory
|
||||||
import net.corda.testing.node.InMemoryMessagingNetwork
|
import net.corda.testing.node.InMemoryMessagingNetwork
|
||||||
@ -60,6 +59,7 @@ import net.corda.testing.node.MockNetworkParameters
|
|||||||
import net.corda.testing.node.MockNodeParameters
|
import net.corda.testing.node.MockNodeParameters
|
||||||
import net.corda.testing.node.MockServices.Companion.MOCK_VERSION_INFO
|
import net.corda.testing.node.MockServices.Companion.MOCK_VERSION_INFO
|
||||||
import net.corda.testing.node.MockServices.Companion.makeTestDataSourceProperties
|
import net.corda.testing.node.MockServices.Companion.makeTestDataSourceProperties
|
||||||
|
import net.corda.testing.internal.setGlobalSerialization
|
||||||
import net.corda.testing.node.TestClock
|
import net.corda.testing.node.TestClock
|
||||||
import org.apache.activemq.artemis.utils.ReusableLatch
|
import org.apache.activemq.artemis.utils.ReusableLatch
|
||||||
import org.apache.sshd.common.util.security.SecurityUtils
|
import org.apache.sshd.common.util.security.SecurityUtils
|
||||||
@ -120,7 +120,7 @@ open class InternalMockNetwork(private val cordappPackages: List<String>,
|
|||||||
private set
|
private set
|
||||||
private val filesystem = Jimfs.newFileSystem(unix())
|
private val filesystem = Jimfs.newFileSystem(unix())
|
||||||
private val busyLatch = ReusableLatch()
|
private val busyLatch = ReusableLatch()
|
||||||
val messagingNetwork = InMemoryMessagingNetwork(networkSendManuallyPumped, servicePeerAllocationStrategy, busyLatch)
|
val messagingNetwork = InMemoryMessagingNetwork.create(networkSendManuallyPumped, servicePeerAllocationStrategy, busyLatch)
|
||||||
// A unique identifier for this network to segregate databases with the same nodeID but different networks.
|
// A unique identifier for this network to segregate databases with the same nodeID but different networks.
|
||||||
private val networkId = random63BitValue()
|
private val networkId = random63BitValue()
|
||||||
private val networkParameters: NetworkParametersCopier
|
private val networkParameters: NetworkParametersCopier
|
||||||
|
@ -16,6 +16,8 @@ import net.corda.nodeapi.internal.serialization.*
|
|||||||
import net.corda.nodeapi.internal.serialization.amqp.AMQPClientSerializationScheme
|
import net.corda.nodeapi.internal.serialization.amqp.AMQPClientSerializationScheme
|
||||||
import net.corda.nodeapi.internal.serialization.amqp.AMQPServerSerializationScheme
|
import net.corda.nodeapi.internal.serialization.amqp.AMQPServerSerializationScheme
|
||||||
import net.corda.testing.common.internal.asContextEnv
|
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.rigorousMock
|
||||||
import net.corda.testing.internal.testThreadFactory
|
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
|
||||||
@ -26,8 +28,6 @@ import java.util.concurrent.ConcurrentHashMap
|
|||||||
import java.util.concurrent.ExecutorService
|
import java.util.concurrent.ExecutorService
|
||||||
import java.util.concurrent.Executors
|
import java.util.concurrent.Executors
|
||||||
|
|
||||||
private val inVMExecutors = ConcurrentHashMap<SerializationEnvironment, ExecutorService>()
|
|
||||||
|
|
||||||
/** @param inheritable whether new threads inherit the environment, use sparingly. */
|
/** @param inheritable whether new threads inherit the environment, use sparingly. */
|
||||||
class SerializationEnvironmentRule(private val inheritable: Boolean = false) : TestRule {
|
class SerializationEnvironmentRule(private val inheritable: Boolean = false) : TestRule {
|
||||||
companion object {
|
companion object {
|
||||||
@ -78,42 +78,3 @@ interface GlobalSerializationEnvironment : SerializationEnvironment {
|
|||||||
fun unset()
|
fun unset()
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Should only be used by Driver and MockNode.
|
|
||||||
* @param armed true to install, false to do nothing and return a dummy env.
|
|
||||||
*/
|
|
||||||
fun setGlobalSerialization(armed: Boolean): GlobalSerializationEnvironment {
|
|
||||||
return if (armed) {
|
|
||||||
object : GlobalSerializationEnvironment, SerializationEnvironment by createTestSerializationEnv("<global>") {
|
|
||||||
override fun unset() {
|
|
||||||
_globalSerializationEnv.set(null)
|
|
||||||
inVMExecutors.remove(this)
|
|
||||||
}
|
|
||||||
}.also {
|
|
||||||
_globalSerializationEnv.set(it)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
rigorousMock<GlobalSerializationEnvironment>().also {
|
|
||||||
doNothing().whenever(it).unset()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun createTestSerializationEnv(label: String): SerializationEnvironmentImpl {
|
|
||||||
val factory = SerializationFactoryImpl().apply {
|
|
||||||
registerScheme(KryoClientSerializationScheme())
|
|
||||||
registerScheme(KryoServerSerializationScheme())
|
|
||||||
registerScheme(AMQPClientSerializationScheme(emptyList()))
|
|
||||||
registerScheme(AMQPServerSerializationScheme(emptyList()))
|
|
||||||
}
|
|
||||||
return object : SerializationEnvironmentImpl(
|
|
||||||
factory,
|
|
||||||
AMQP_P2P_CONTEXT,
|
|
||||||
KRYO_RPC_SERVER_CONTEXT,
|
|
||||||
KRYO_RPC_CLIENT_CONTEXT,
|
|
||||||
AMQP_STORAGE_CONTEXT,
|
|
||||||
KRYO_CHECKPOINT_CONTEXT
|
|
||||||
) {
|
|
||||||
override fun toString() = "testSerializationEnv($label)"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -30,10 +30,6 @@ val BOB_NAME = CordaX500Name("Bob Plc", "Rome", "IT")
|
|||||||
@JvmField
|
@JvmField
|
||||||
val CHARLIE_NAME = CordaX500Name("Charlie Ltd", "Athens", "GR")
|
val CHARLIE_NAME = CordaX500Name("Charlie Ltd", "Athens", "GR")
|
||||||
|
|
||||||
val DEV_INTERMEDIATE_CA: CertificateAndKeyPair by lazy { net.corda.nodeapi.internal.DEV_INTERMEDIATE_CA }
|
|
||||||
|
|
||||||
val DEV_ROOT_CA: CertificateAndKeyPair by lazy { net.corda.nodeapi.internal.DEV_ROOT_CA }
|
|
||||||
|
|
||||||
fun dummyCommand(vararg signers: PublicKey = arrayOf(generateKeyPair().public)) = Command<TypeOnlyCommandData>(DummyCommandData, signers.toList())
|
fun dummyCommand(vararg signers: PublicKey = arrayOf(generateKeyPair().public)) = Command<TypeOnlyCommandData>(DummyCommandData, signers.toList())
|
||||||
|
|
||||||
object DummyCommandData : TypeOnlyCommandData()
|
object DummyCommandData : TypeOnlyCommandData()
|
||||||
|
@ -20,6 +20,8 @@ import net.corda.nodeapi.internal.crypto.CertificateAndKeyPair
|
|||||||
import net.corda.nodeapi.internal.crypto.CertificateType
|
import net.corda.nodeapi.internal.crypto.CertificateType
|
||||||
import net.corda.nodeapi.internal.crypto.X509CertificateFactory
|
import net.corda.nodeapi.internal.crypto.X509CertificateFactory
|
||||||
import net.corda.nodeapi.internal.crypto.X509Utilities
|
import net.corda.nodeapi.internal.crypto.X509Utilities
|
||||||
|
import net.corda.testing.internal.DEV_INTERMEDIATE_CA
|
||||||
|
import net.corda.testing.internal.DEV_ROOT_CA
|
||||||
import java.math.BigInteger
|
import java.math.BigInteger
|
||||||
import java.security.KeyPair
|
import java.security.KeyPair
|
||||||
import java.security.PublicKey
|
import java.security.PublicKey
|
||||||
|
@ -14,7 +14,7 @@ import net.corda.core.transactions.SignedTransaction
|
|||||||
import net.corda.core.transactions.TransactionBuilder
|
import net.corda.core.transactions.TransactionBuilder
|
||||||
import net.corda.core.transactions.WireTransaction
|
import net.corda.core.transactions.WireTransaction
|
||||||
import net.corda.testing.services.MockAttachmentStorage
|
import net.corda.testing.services.MockAttachmentStorage
|
||||||
import net.corda.testing.services.MockCordappProvider
|
import net.corda.testing.internal.MockCordappProvider
|
||||||
import net.corda.testing.core.dummyCommand
|
import net.corda.testing.core.dummyCommand
|
||||||
import java.io.InputStream
|
import java.io.InputStream
|
||||||
import java.security.PublicKey
|
import java.security.PublicKey
|
||||||
|
@ -1,8 +1,19 @@
|
|||||||
package net.corda.testing.internal
|
package net.corda.testing.internal
|
||||||
|
|
||||||
import net.corda.core.serialization.internal._contextSerializationEnv
|
import com.nhaarman.mockito_kotlin.doNothing
|
||||||
import net.corda.core.serialization.internal._inheritableContextSerializationEnv
|
import com.nhaarman.mockito_kotlin.whenever
|
||||||
|
import net.corda.client.rpc.internal.KryoClientSerializationScheme
|
||||||
|
import net.corda.core.serialization.internal.*
|
||||||
|
import net.corda.node.serialization.KryoServerSerializationScheme
|
||||||
|
import net.corda.nodeapi.internal.serialization.*
|
||||||
|
import net.corda.nodeapi.internal.serialization.amqp.AMQPClientSerializationScheme
|
||||||
|
import net.corda.nodeapi.internal.serialization.amqp.AMQPServerSerializationScheme
|
||||||
|
import net.corda.testing.core.GlobalSerializationEnvironment
|
||||||
import net.corda.testing.core.SerializationEnvironmentRule
|
import net.corda.testing.core.SerializationEnvironmentRule
|
||||||
|
import java.util.concurrent.ConcurrentHashMap
|
||||||
|
import java.util.concurrent.ExecutorService
|
||||||
|
|
||||||
|
val inVMExecutors = ConcurrentHashMap<SerializationEnvironment, ExecutorService>()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* For example your test class uses [SerializationEnvironmentRule] but you want to turn it off for one method.
|
* For example your test class uses [SerializationEnvironmentRule] but you want to turn it off for one method.
|
||||||
@ -17,3 +28,43 @@ fun <T> withoutTestSerialization(callable: () -> T): T { // TODO: Delete this, s
|
|||||||
property.set(env)
|
property.set(env)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal fun createTestSerializationEnv(label: String): SerializationEnvironmentImpl {
|
||||||
|
val factory = SerializationFactoryImpl().apply {
|
||||||
|
registerScheme(KryoClientSerializationScheme())
|
||||||
|
registerScheme(KryoServerSerializationScheme())
|
||||||
|
registerScheme(AMQPClientSerializationScheme(emptyList()))
|
||||||
|
registerScheme(AMQPServerSerializationScheme(emptyList()))
|
||||||
|
}
|
||||||
|
return object : SerializationEnvironmentImpl(
|
||||||
|
factory,
|
||||||
|
AMQP_P2P_CONTEXT,
|
||||||
|
KRYO_RPC_SERVER_CONTEXT,
|
||||||
|
KRYO_RPC_CLIENT_CONTEXT,
|
||||||
|
AMQP_STORAGE_CONTEXT,
|
||||||
|
KRYO_CHECKPOINT_CONTEXT
|
||||||
|
) {
|
||||||
|
override fun toString() = "testSerializationEnv($label)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Should only be used by Driver and MockNode.
|
||||||
|
* @param armed true to install, false to do nothing and return a dummy env.
|
||||||
|
*/
|
||||||
|
fun setGlobalSerialization(armed: Boolean): GlobalSerializationEnvironment {
|
||||||
|
return if (armed) {
|
||||||
|
object : GlobalSerializationEnvironment, SerializationEnvironment by createTestSerializationEnv("<global>") {
|
||||||
|
override fun unset() {
|
||||||
|
_globalSerializationEnv.set(null)
|
||||||
|
inVMExecutors.remove(this)
|
||||||
|
}
|
||||||
|
}.also {
|
||||||
|
_globalSerializationEnv.set(it)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
rigorousMock<GlobalSerializationEnvironment>().also {
|
||||||
|
doNothing().whenever(it).unset()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
package net.corda.testing.internal
|
||||||
|
|
||||||
|
import net.corda.nodeapi.internal.crypto.CertificateAndKeyPair
|
||||||
|
|
||||||
|
val DEV_INTERMEDIATE_CA: CertificateAndKeyPair by lazy { net.corda.nodeapi.internal.DEV_INTERMEDIATE_CA }
|
||||||
|
|
||||||
|
val DEV_ROOT_CA: CertificateAndKeyPair by lazy { net.corda.nodeapi.internal.DEV_ROOT_CA }
|
@ -1,4 +1,4 @@
|
|||||||
package net.corda.testing.node
|
package net.corda.testing.internal
|
||||||
|
|
||||||
import com.typesafe.config.Config
|
import com.typesafe.config.Config
|
||||||
import com.typesafe.config.ConfigFactory
|
import com.typesafe.config.ConfigFactory
|
@ -1,4 +1,4 @@
|
|||||||
package net.corda.testing.services
|
package net.corda.testing.internal
|
||||||
|
|
||||||
import net.corda.core.contracts.ContractClassName
|
import net.corda.core.contracts.ContractClassName
|
||||||
import net.corda.core.cordapp.Cordapp
|
import net.corda.core.cordapp.Cordapp
|
||||||
@ -7,7 +7,7 @@ import net.corda.core.node.services.AttachmentId
|
|||||||
import net.corda.core.node.services.AttachmentStorage
|
import net.corda.core.node.services.AttachmentStorage
|
||||||
import net.corda.node.internal.cordapp.CordappLoader
|
import net.corda.node.internal.cordapp.CordappLoader
|
||||||
import net.corda.node.internal.cordapp.CordappProviderImpl
|
import net.corda.node.internal.cordapp.CordappProviderImpl
|
||||||
import net.corda.testing.node.MockCordappConfigProvider
|
import net.corda.testing.services.MockAttachmentStorage
|
||||||
import java.nio.file.Paths
|
import java.nio.file.Paths
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
@ -31,7 +31,7 @@ class MockCordappProvider(
|
|||||||
serializationWhitelists = emptyList(),
|
serializationWhitelists = emptyList(),
|
||||||
serializationCustomSerializers = emptyList(),
|
serializationCustomSerializers = emptyList(),
|
||||||
customSchemas = emptySet(),
|
customSchemas = emptySet(),
|
||||||
jarPath = Paths.get(".").toUri().toURL())
|
jarPath = Paths.get("").toUri().toURL())
|
||||||
if (cordappRegistry.none { it.first.contractClassNames.contains(contractClassName) }) {
|
if (cordappRegistry.none { it.first.contractClassNames.contains(contractClassName) }) {
|
||||||
cordappRegistry.add(Pair(cordapp, findOrImportAttachment(contractClassName.toByteArray(), attachments)))
|
cordappRegistry.add(Pair(cordapp, findOrImportAttachment(contractClassName.toByteArray(), attachments)))
|
||||||
}
|
}
|
@ -12,8 +12,6 @@ import net.corda.nodeapi.internal.createDevNodeCa
|
|||||||
import net.corda.nodeapi.internal.crypto.CertificateAndKeyPair
|
import net.corda.nodeapi.internal.crypto.CertificateAndKeyPair
|
||||||
import net.corda.nodeapi.internal.crypto.CertificateType
|
import net.corda.nodeapi.internal.crypto.CertificateType
|
||||||
import net.corda.nodeapi.internal.crypto.X509Utilities
|
import net.corda.nodeapi.internal.crypto.X509Utilities
|
||||||
import net.corda.testing.core.DEV_INTERMEDIATE_CA
|
|
||||||
import net.corda.testing.core.DEV_ROOT_CA
|
|
||||||
import java.security.KeyPair
|
import java.security.KeyPair
|
||||||
import java.security.PrivateKey
|
import java.security.PrivateKey
|
||||||
import java.security.cert.X509Certificate
|
import java.security.cert.X509Certificate
|
||||||
|
Loading…
x
Reference in New Issue
Block a user