Move simulations to top level

This commit is contained in:
Ross Nicoll 2016-08-31 15:20:44 +01:00
parent 07f44e9e2a
commit 868b23a923
9 changed files with 37 additions and 17 deletions

View File

@ -2,13 +2,15 @@ apply plugin: 'kotlin'
apply plugin: CanonicalizerPlugin apply plugin: CanonicalizerPlugin
repositories { repositories {
mavenCentral()
mavenLocal() mavenLocal()
mavenCentral() mavenCentral()
jcenter()
maven { maven {
url 'http://oss.sonatype.org/content/repositories/snapshots' url 'http://oss.sonatype.org/content/repositories/snapshots'
} }
jcenter()
maven {
url 'https://dl.bintray.com/kotlin/exposed'
}
} }
dependencies { dependencies {

View File

@ -6,7 +6,15 @@ apply plugin: 'kotlin'
sourceCompatibility = 1.5 sourceCompatibility = 1.5
repositories { repositories {
mavenLocal()
mavenCentral() mavenCentral()
maven {
url 'http://oss.sonatype.org/content/repositories/snapshots'
}
jcenter()
maven {
url 'https://dl.bintray.com/kotlin/exposed'
}
} }
compileKotlin { compileKotlin {

View File

@ -1,4 +1,4 @@
package com.r3corda.testing.node package com.r3corda.simulation
import com.fasterxml.jackson.module.kotlin.readValue import com.fasterxml.jackson.module.kotlin.readValue
import com.google.common.util.concurrent.FutureCallback import com.google.common.util.concurrent.FutureCallback
@ -15,6 +15,8 @@ import com.r3corda.core.node.services.linearHeadsOfType
import com.r3corda.core.random63BitValue import com.r3corda.core.random63BitValue
import com.r3corda.core.success import com.r3corda.core.success
import com.r3corda.protocols.TwoPartyDealProtocol import com.r3corda.protocols.TwoPartyDealProtocol
import com.r3corda.testing.node.InMemoryMessagingNetwork
import com.r3corda.testing.node.MockIdentityService
import java.security.KeyPair import java.security.KeyPair
import java.time.LocalDate import java.time.LocalDate
import java.util.* import java.util.*

View File

@ -1,4 +1,4 @@
package com.r3corda.testing.node package com.r3corda.simulation
import com.google.common.util.concurrent.Futures import com.google.common.util.concurrent.Futures
import com.google.common.util.concurrent.ListenableFuture import com.google.common.util.concurrent.ListenableFuture
@ -14,6 +14,10 @@ import com.r3corda.node.services.config.NodeConfiguration
import com.r3corda.node.services.network.NetworkMapService import com.r3corda.node.services.network.NetworkMapService
import com.r3corda.node.services.transactions.SimpleNotaryService import com.r3corda.node.services.transactions.SimpleNotaryService
import com.r3corda.node.utilities.AddOrRemove import com.r3corda.node.utilities.AddOrRemove
import com.r3corda.testing.node.InMemoryMessagingNetwork
import com.r3corda.testing.node.MockNetwork
import com.r3corda.testing.node.TestClock
import com.r3corda.testing.node.setTo
import rx.Observable import rx.Observable
import rx.subjects.PublishSubject import rx.subjects.PublishSubject
import java.nio.file.Path import java.nio.file.Path
@ -41,7 +45,7 @@ abstract class Simulation(val networkSendManuallyPumped: Boolean,
// This puts together a mock network of SimulatedNodes. // This puts together a mock network of SimulatedNodes.
open class SimulatedNode(dir: Path, config: com.r3corda.node.services.config.NodeConfiguration, mockNet: MockNetwork, networkMapAddress: NodeInfo?, open class SimulatedNode(dir: Path, config: NodeConfiguration, mockNet: MockNetwork, networkMapAddress: NodeInfo?,
advertisedServices: Set<ServiceType>, id: Int, keyPair: KeyPair?) : MockNetwork.MockNode(dir, config, mockNet, networkMapAddress, advertisedServices, id, keyPair) { advertisedServices: Set<ServiceType>, id: Int, keyPair: KeyPair?) : MockNetwork.MockNode(dir, config, mockNet, networkMapAddress, advertisedServices, id, keyPair) {
override fun findMyLocation(): PhysicalLocation? = CityDatabase[configuration.nearestCity] override fun findMyLocation(): PhysicalLocation? = CityDatabase[configuration.nearestCity]
} }
@ -49,7 +53,7 @@ abstract class Simulation(val networkSendManuallyPumped: Boolean,
inner class BankFactory : MockNetwork.Factory { inner class BankFactory : MockNetwork.Factory {
var counter = 0 var counter = 0
override fun create(dir: Path, config: com.r3corda.node.services.config.NodeConfiguration, network: MockNetwork, networkMapAddr: NodeInfo?, override fun create(dir: Path, config: NodeConfiguration, network: MockNetwork, networkMapAddr: NodeInfo?,
advertisedServices: Set<ServiceType>, id: Int, keyPair: KeyPair?): MockNetwork.MockNode { advertisedServices: Set<ServiceType>, id: Int, keyPair: KeyPair?): MockNetwork.MockNode {
val letter = 'A' + counter val letter = 'A' + counter
val city = bankLocations[counter++ % bankLocations.size] val city = bankLocations[counter++ % bankLocations.size]

View File

@ -1,8 +1,9 @@
package com.r3corda.testing.node package com.r3corda.simulation
import com.google.common.util.concurrent.Futures import com.google.common.util.concurrent.Futures
import com.google.common.util.concurrent.ListenableFuture import com.google.common.util.concurrent.ListenableFuture
import com.r3corda.contracts.CommercialPaper import com.r3corda.contracts.CommercialPaper
import com.r3corda.contracts.asset.DUMMY_CASH_ISSUER
import com.r3corda.contracts.testing.fillWithSomeTestCash import com.r3corda.contracts.testing.fillWithSomeTestCash
import com.r3corda.core.contracts.DOLLARS import com.r3corda.core.contracts.DOLLARS
import com.r3corda.core.contracts.OwnableState import com.r3corda.core.contracts.OwnableState
@ -11,6 +12,8 @@ import com.r3corda.core.contracts.`issued by`
import com.r3corda.core.days import com.r3corda.core.days
import com.r3corda.core.random63BitValue import com.r3corda.core.random63BitValue
import com.r3corda.core.seconds import com.r3corda.core.seconds
import com.r3corda.protocols.TwoPartyTradeProtocol
import com.r3corda.testing.node.InMemoryMessagingNetwork
import java.time.Instant import java.time.Instant
/** /**
@ -30,7 +33,7 @@ class TradeSimulation(runAsync: Boolean, latencyInjector: InMemoryMessagingNetwo
buyer.services.fillWithSomeTestCash(1500.DOLLARS, notary.info.identity) buyer.services.fillWithSomeTestCash(1500.DOLLARS, notary.info.identity)
val issuance = run { val issuance = run {
val tx = com.r3corda.contracts.CommercialPaper().generateIssue(seller.info.identity.ref(1, 2, 3), 1100.DOLLARS `issued by` com.r3corda.contracts.asset.DUMMY_CASH_ISSUER, val tx = CommercialPaper().generateIssue(seller.info.identity.ref(1, 2, 3), 1100.DOLLARS `issued by` DUMMY_CASH_ISSUER,
Instant.now() + 10.days, notary.info.identity) Instant.now() + 10.days, notary.info.identity)
tx.setTime(Instant.now(), 30.seconds) tx.setTime(Instant.now(), 30.seconds)
tx.signWith(notary.storage.myLegalIdentityKey) tx.signWith(notary.storage.myLegalIdentityKey)
@ -41,13 +44,13 @@ class TradeSimulation(runAsync: Boolean, latencyInjector: InMemoryMessagingNetwo
val amount = 1000.DOLLARS val amount = 1000.DOLLARS
val sessionID = random63BitValue() val sessionID = random63BitValue()
val buyerProtocol = com.r3corda.protocols.TwoPartyTradeProtocol.Buyer( val buyerProtocol = TwoPartyTradeProtocol.Buyer(
seller.info.identity, seller.info.identity,
notary.info.identity, notary.info.identity,
amount, amount,
CommercialPaper.State::class.java, CommercialPaper.State::class.java,
sessionID) sessionID)
val sellerProtocol = com.r3corda.protocols.TwoPartyTradeProtocol.Seller( val sellerProtocol = TwoPartyTradeProtocol.Seller(
buyer.info.identity, buyer.info.identity,
notary.info, notary.info,
issuance.tx.outRef<OwnableState>(0), issuance.tx.outRef<OwnableState>(0),
@ -58,8 +61,8 @@ class TradeSimulation(runAsync: Boolean, latencyInjector: InMemoryMessagingNetwo
showConsensusFor(listOf(buyer, seller, notary)) showConsensusFor(listOf(buyer, seller, notary))
showProgressFor(listOf(buyer, seller)) showProgressFor(listOf(buyer, seller))
val buyerFuture = buyer.services.startProtocol("bank.$buyerBankIndex.${com.r3corda.protocols.TwoPartyTradeProtocol.TOPIC}.buyer", buyerProtocol) val buyerFuture = buyer.services.startProtocol("bank.$buyerBankIndex.${TwoPartyTradeProtocol.TOPIC}.buyer", buyerProtocol)
val sellerFuture = seller.services.startProtocol("bank.$sellerBankIndex.${com.r3corda.protocols.TwoPartyTradeProtocol.TOPIC}.seller", sellerProtocol) val sellerFuture = seller.services.startProtocol("bank.$sellerBankIndex.${TwoPartyTradeProtocol.TOPIC}.seller", sellerProtocol)
return Futures.successfulAsList(buyerFuture, sellerFuture) return Futures.successfulAsList(buyerFuture, sellerFuture)
} }

View File

@ -2,7 +2,7 @@ package com.r3corda.core.testing
import com.google.common.base.Throwables import com.google.common.base.Throwables
import com.r3corda.core.utilities.LogHelper import com.r3corda.core.utilities.LogHelper
import com.r3corda.testing.node.IRSSimulation import com.r3corda.simulation.IRSSimulation
import org.junit.Test import org.junit.Test
class IRSSimulationTest { class IRSSimulationTest {

View File

@ -11,6 +11,7 @@ import com.r3corda.core.node.services.WalletService
import com.r3corda.core.testing.InMemoryWalletService import com.r3corda.core.testing.InMemoryWalletService
import com.r3corda.core.utilities.DUMMY_NOTARY_KEY import com.r3corda.core.utilities.DUMMY_NOTARY_KEY
import com.r3corda.core.utilities.loggerFor import com.r3corda.core.utilities.loggerFor
import com.r3corda.node.services.config.NodeConfiguration
import org.slf4j.Logger import org.slf4j.Logger
import java.nio.file.Files import java.nio.file.Files
import java.nio.file.Path import java.nio.file.Path
@ -48,18 +49,18 @@ class MockNetwork(private val networkSendManuallyPumped: Boolean = false,
/** Allows customisation of how nodes are created. */ /** Allows customisation of how nodes are created. */
interface Factory { interface Factory {
fun create(dir: Path, config: com.r3corda.node.services.config.NodeConfiguration, network: MockNetwork, networkMapAddr: NodeInfo?, fun create(dir: Path, config: NodeConfiguration, network: MockNetwork, networkMapAddr: NodeInfo?,
advertisedServices: Set<ServiceType>, id: Int, keyPair: KeyPair?): MockNode advertisedServices: Set<ServiceType>, id: Int, keyPair: KeyPair?): MockNode
} }
object DefaultFactory : Factory { object DefaultFactory : Factory {
override fun create(dir: Path, config: com.r3corda.node.services.config.NodeConfiguration, network: MockNetwork, networkMapAddr: NodeInfo?, override fun create(dir: Path, config: NodeConfiguration, network: MockNetwork, networkMapAddr: NodeInfo?,
advertisedServices: Set<ServiceType>, id: Int, keyPair: KeyPair?): MockNode { advertisedServices: Set<ServiceType>, id: Int, keyPair: KeyPair?): MockNode {
return MockNode(dir, config, network, networkMapAddr, advertisedServices, id, keyPair) return MockNode(dir, config, network, networkMapAddr, advertisedServices, id, keyPair)
} }
} }
open class MockNode(dir: Path, config: com.r3corda.node.services.config.NodeConfiguration, val mockNet: MockNetwork, networkMapAddr: NodeInfo?, open class MockNode(dir: Path, config: NodeConfiguration, val mockNet: MockNetwork, networkMapAddr: NodeInfo?,
advertisedServices: Set<ServiceType>, val id: Int, val keyPair: KeyPair?) : com.r3corda.node.internal.AbstractNode(dir, config, networkMapAddr, advertisedServices, TestClock()) { advertisedServices: Set<ServiceType>, val id: Int, val keyPair: KeyPair?) : com.r3corda.node.internal.AbstractNode(dir, config, networkMapAddr, advertisedServices, TestClock()) {
override val log: Logger = loggerFor<MockNode>() override val log: Logger = loggerFor<MockNode>()
override val serverThread: com.r3corda.node.utilities.AffinityExecutor = override val serverThread: com.r3corda.node.utilities.AffinityExecutor =
@ -113,7 +114,7 @@ class MockNetwork(private val networkSendManuallyPumped: Boolean = false,
val path = filesystem.getPath("/nodes/$id") val path = filesystem.getPath("/nodes/$id")
if (newNode) if (newNode)
Files.createDirectories(path.resolve("attachments")) Files.createDirectories(path.resolve("attachments"))
val config = object : com.r3corda.node.services.config.NodeConfiguration { val config = object : NodeConfiguration {
override val myLegalName: String = legalName ?: "Mock Company $id" override val myLegalName: String = legalName ?: "Mock Company $id"
override val exportJMXto: String = "" override val exportJMXto: String = ""
override val nearestCity: String = "Atlantis" override val nearestCity: String = "Atlantis"