mirror of
https://github.com/corda/corda.git
synced 2025-02-12 05:35:50 +00:00
CTS QA Scenarios
This commit is contained in:
parent
e618b49a6c
commit
4c3d223d5a
@ -1,18 +0,0 @@
|
||||
package net.corda.behave.scenarios
|
||||
|
||||
import cucumber.api.java.After
|
||||
import cucumber.api.java.Before
|
||||
|
||||
@Suppress("KDocMissingDocumentation")
|
||||
class ScenarioHooks(private val state: ScenarioState) {
|
||||
|
||||
@Before
|
||||
fun beforeScenario() {
|
||||
}
|
||||
|
||||
@After
|
||||
fun afterScenario() {
|
||||
state.stopNetwork()
|
||||
}
|
||||
|
||||
}
|
189
testing/qa/behave/compatibility/README.md
Normal file
189
testing/qa/behave/compatibility/README.md
Normal file
@ -0,0 +1,189 @@
|
||||
Compatibility Test Suite (CTS)
|
||||
=============================
|
||||
|
||||
Compatibility / Interoperability testing refers to validating the run-time behaviour of different versions of
|
||||
components within the Corda Platform and ensuring that data is compatible, both "on the wire" (P2P AMQP and RPC Kyro
|
||||
serialization forms) and "at rest" (persisted to a database) between collaborating components.
|
||||
|
||||
Compatibility testing focuses at three different levels:
|
||||
|
||||
1. Corda Network (Compatibility Zone - level, Doorman, Notary)
|
||||
2. Corda Node (eg. participant nodes, oracles)
|
||||
3. Corda Applications (CorDapps)
|
||||
|
||||
Corda Network
|
||||
-------------
|
||||
Components within scope for this level of testing include:
|
||||
- Doorman
|
||||
- Network Map Service
|
||||
- Notary (and notary clusters)
|
||||
- Ancillary support infrastructure services: Float, Bridge Manager, HA supervisors
|
||||
|
||||
The following aspects of a Corda Network are configurable/changeable over time and require validating via CTS coverage:
|
||||
|
||||
- Permissioning: provision of an identity certificate signed by the networks root CA
|
||||
- Network Parameters changes (such as adding/removing a Notary, whitelisting CorDapps for constraint checking),
|
||||
and distribution to nodes via bootstrapper (OS) / HTTP NMS distribution (Enterprise)
|
||||
- Nodes and Oracles addition and removal (with provisioned identities) via bootstrapping / registration with Network Map
|
||||
a) OS: `nodeInfo` distribution into a node's `additional-node-infos` directory
|
||||
b) Enterprise: HTTP NMS (node configured with `compatibilityZoneURL`)
|
||||
- Versioning: `platformVersion` (part of a node's `NodeInfo`)
|
||||
- Change in HA setup
|
||||
|
||||
References:
|
||||
|
||||
1. https://docs.corda.r3.com/head/setting-up-a-corda-network.html
|
||||
2. https://docs.corda.r3.com/head/permissioning.html
|
||||
3. https://docs.corda.r3.com/head/network-map.html
|
||||
4. https://docs.corda.r3.com/head/network-map.html#network-parameters-update-process
|
||||
5. https://docs.corda.r3.com/head/versioning.html
|
||||
6. https://docs.corda.r3.com/head/high-availability.html
|
||||
|
||||
Corda Node
|
||||
----------
|
||||
Refers exclusively to exercising the capabilities of a Corda Node, to include:
|
||||
|
||||
- Node Configuration changes (such as change of database, rpcUser permissions, address changes, standalone broker).
|
||||
Impact and consequences of running in`devMode` (uses pre-configured keystores, no security)
|
||||
- Node Start-up options
|
||||
|
||||
References:
|
||||
|
||||
1. https://docs.corda.r3.com/head/node-administration.html
|
||||
2. https://docs.corda.r3.com/head/corda-configuration-file.html
|
||||
|
||||
Corda Application (CorDapp)
|
||||
-----------------
|
||||
Refers to testing the evolution of CorDapps with respect to changes to the following:
|
||||
- States
|
||||
- Contracts
|
||||
- Services
|
||||
- Flows
|
||||
- Utilities and library functions (eg. cryptography)
|
||||
|
||||
References:
|
||||
|
||||
- https://docs.corda.net/head/upgrading-cordapps.html
|
||||
|
||||
Specifically, compatibility testing takes the following types of CorDapp-related versioning changes into consideration:
|
||||
|
||||
1. Flow Versioning.
|
||||
|
||||
The `version` property of an `@InitiatingFlow` determines the version in effect at execution.
|
||||
|
||||
A non-backwards compatible change is one where the interface of the flow changes: specifically, the sequence of `send`
|
||||
and `receive` calls between an `InitiatingFlow` and an `InitiatedBy` flow, including the types of the data sent and received.
|
||||
|
||||
There are 3 failure scenarios to test for:
|
||||
|
||||
a) flows that hang (due to the expectation that a response is expected but never received)
|
||||
|
||||
b) incorrect data types in `send` or `receive` calls: "Expected Type X but Received Type Y"
|
||||
|
||||
c) early termination: "Counterparty flow terminated early on the other side"
|
||||
|
||||
Inlined Flows are not versioned as they inherit the version of their parent `initiatingFlow` or `inittiatedFlow`.
|
||||
There are 2 scenarios to consider:
|
||||
|
||||
a) Inlined flows that perform `send` and `receive` calling with other inlined flows
|
||||
A change to the interface here must be considered a change to the parent flow interfaces.
|
||||
|
||||
b) Utility inlined flows that perform a local function (eg. query the vault).
|
||||
|
||||
Flow Draining mode is used to ensure outstanding checkpointed flows are flushed before upgrading to a new flow version.
|
||||
|
||||
2. State and contract.
|
||||
|
||||
Two types of contract/state upgrade:
|
||||
|
||||
a) Implicit, using CZ Whitelisting of multiple CorDapp version (subsequently enforced by contract constraint logic)
|
||||
|
||||
b) Explicit, by creating a special contract upgrade transaction and getting all participants of a state to sign it using
|
||||
contract upgrade flows.
|
||||
Upgraded contracts must implement the `UpgradedContract` interface.
|
||||
|
||||
3. State and state schema.
|
||||
|
||||
Two scenarios:
|
||||
|
||||
a) Schema additions (backwards compatible)
|
||||
|
||||
b) Schema deletions/type modifications require use of `ContractUpgradeFlow` and must define a new version of the `MappedSchema`
|
||||
|
||||
4. Serialisation of custom types.
|
||||
|
||||
AMQP serialisation rules:
|
||||
- Constructor
|
||||
- JavaBean getter
|
||||
- Generics
|
||||
- Superclass (abstract)
|
||||
- Cyclic object graph cycles are not supported
|
||||
- Enums may not evolve!
|
||||
|
||||
Reference Corda Applications
|
||||
----------------------------
|
||||
The intent of the CTS is to incorporate samples, demos and customer driven "use case scenarios" into an ever growing
|
||||
regression test suite.
|
||||
|
||||
The following categories reflect our current ecosystem of CorDapps:
|
||||
|
||||
Corda Repository samples:
|
||||
-------------------------
|
||||
1) Trader demo
|
||||
2) IRS demo
|
||||
3) SIMM Valuation demo
|
||||
4) Bank of Corda
|
||||
5) Notary demo
|
||||
6) Attachment demo
|
||||
|
||||
Corda.net samples (https://www.corda.net/samples/):
|
||||
-----------------
|
||||
General
|
||||
- Yo!
|
||||
- IOU
|
||||
- Obligations (uses confidential identities)
|
||||
- Negotiation
|
||||
|
||||
Observers
|
||||
- Crowdfunding
|
||||
|
||||
Attachments
|
||||
- FTP
|
||||
- Blacklist
|
||||
|
||||
Confidential Identities
|
||||
- Whistle Blower
|
||||
|
||||
Oracles
|
||||
- Prime numbers
|
||||
- Options
|
||||
|
||||
Scheduled activities:
|
||||
- Heartbeat
|
||||
|
||||
Accessing external data:
|
||||
- Flow HTTP
|
||||
- Flow DB access
|
||||
|
||||
Upgrading CorDapps
|
||||
- Contract upgrades
|
||||
|
||||
Alternative node web-servers
|
||||
- Spring Webserver
|
||||
- Yo! CorDapp Spring Webserver
|
||||
|
||||
RPC Clients
|
||||
- NodeInfo
|
||||
- Ping-Pong
|
||||
|
||||
DevRel other
|
||||
------------
|
||||
- https://github.com/CaisR3
|
||||
|
||||
Corda Incubator/Accelerator demos:
|
||||
---------------------------
|
||||
- Wildfire (https://bitbucket.org/R3-CEV/wildfire)
|
||||
- Ubin (https://github.com/project-ubin/ubin-corda)
|
||||
- Reference data
|
||||
|
||||
|
@ -0,0 +1,42 @@
|
||||
@compatibility @cordapps @flows
|
||||
Feature: Compatibility - CorDapp versions
|
||||
To support an interoperable Corda network, a Corda node must have the ability to transact with another Corda node
|
||||
when each node has a different version of the same cordapp for different Contract change scenarios.
|
||||
|
||||
Scenario Outline: Corda node can transact with another Corda node where each has a Cordapp version with different Contract verify but same State definition
|
||||
Given a node A of version <Corda-Node-Version-X>
|
||||
And node A has <Cordapp-Version-X> finance app installed
|
||||
And a node B of version <Corda-Node-Version-X>
|
||||
And node B has <Cordapp-Version-Y> finance app installed
|
||||
When the network is ready
|
||||
Then node A can transfer 100 tokens to node B
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version-X | Cordapp-Version-X | Cordapp-Version-Y |
|
||||
| corda-3.0 | finance-V1-contract | finance-V2-contract |
|
||||
|
||||
Scenario Outline: Corda node can transact with another Corda node where each has a Cordapp version with same Contract verify but different State definition
|
||||
Given a node A of version <Corda-Node-Version-X>
|
||||
And node A has <Cordapp-Version-X> finance app installed
|
||||
And a node B of version <Corda-Node-Version-X>
|
||||
And node B has <Cordapp-Version-Y> finance app installed
|
||||
And node B has upgraded <Cordapp-Version-Y> contract
|
||||
When the network is ready
|
||||
Then node A can transfer 100 tokens to node B
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version-X | Cordapp-Version-X | Cordapp-Version-Y |
|
||||
| corda-3.0 | finance-V1-state | finance-V2-state |
|
||||
|
||||
Scenario Outline: Corda node can transact with another Corda node where each has a Cordapp version with same Contract verify but different State definition and custom schemas
|
||||
Given a node A of version <Corda-Node-Version-X>
|
||||
And node A has <Cordapp-Version-X> finance app installed
|
||||
And a node B of version <Corda-Node-Version-X>
|
||||
And node B has <Cordapp-Version-Y> finance app installed
|
||||
And node B has upgraded <Cordapp-Version-Y> contract
|
||||
When the network is ready
|
||||
Then node A can transfer 100 tokens to node B
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version-X | Cordapp-Version-X | Cordapp-Version-Y |
|
||||
| corda-3.0 | finance-V1-state-schema | finance-V2-state-schema |
|
@ -0,0 +1,40 @@
|
||||
@compatibility @cordapps @flows
|
||||
Feature: Compatibility - CorDapp versions
|
||||
To support an interoperable Corda network, a Corda node must have the ability to transact with another Corda node
|
||||
when each node has a different version of the same cordapp for different Flow change scenarios.
|
||||
|
||||
Scenario Outline: Corda node can transact with another Corda node where each has a Cordapp version with same same Flow version but different implementations
|
||||
Given a node A of version <Corda-Node-Version-X>
|
||||
And node A has <Cordapp-Version-X> finance app installed
|
||||
And a node B of version <Corda-Node-Version-X>
|
||||
And node B has <Cordapp-Version-Y> finance app installed
|
||||
When the network is ready
|
||||
Then node A can transfer 100 tokens to node B
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version-X | Cordapp-Version-X | Cordapp-Version-Y |
|
||||
| corda-3.0 | finance-V1-flowImpl1 | finance-V2-flowImpl2 |
|
||||
|
||||
Scenario Outline: Corda node can transact with another Corda node where each has a Cordapp version with different, but backwards compatible, Flow versions
|
||||
Given a node A of version <Corda-Node-Version-X>
|
||||
And node A has <Cordapp-Version-X> finance app installed
|
||||
And a node B of version <Corda-Node-Version-X>
|
||||
And node B has <Cordapp-Version-Y> finance app installed
|
||||
When the network is ready
|
||||
Then node A can transfer 100 tokens to node B
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version-X | Cordapp-Version-X | Cordapp-Version-Y |
|
||||
| corda-3.0 | finance-V1-flowV1 | finance-V2-flowV2 |
|
||||
|
||||
Scenario Outline: Corda node fails to transact with another Corda node where each has a Cordapp version with different, incompatible, Flow versions
|
||||
Given a node A of version <Corda-Node-Version-X>
|
||||
And node A has <Cordapp-Version-X> finance app installed
|
||||
And a node B of version <Corda-Node-Version-X>
|
||||
And node B has <Cordapp-Version-Y> finance app installed
|
||||
When the network is ready
|
||||
Then node A fails to transfer 100 tokens to node B
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version-X | Cordapp-Version-X | Cordapp-Version-Y |
|
||||
| corda-3.0 | finance-V1-flowV1-incompat | finance-V2-flowV2-incompat |
|
@ -0,0 +1,50 @@
|
||||
@compatibility @cordapps @upgrade @migration
|
||||
Feature: Compatibility - CorDapp upgrades and migrations
|
||||
To support an interoperable Corda network, a CordaApp must be upgradeable across different Corda distributions and
|
||||
node versions (and without loss of transactions between participating nodes in a flow)
|
||||
|
||||
Scenario Outline: CorDapp running on Corda OS node using default database (H2) can be migrated to an R3 Corda (Enterprise) node without loss of data.
|
||||
Given a node A of version <Corda-Node-Version-X>
|
||||
And node A has <Cordapp-Version-X> finance app installed
|
||||
And a node B of version <Corda-Node-Version-X>
|
||||
And node B has <Cordapp-Version-Y> finance app installed
|
||||
When the network is ready
|
||||
Then node A can issue 1000 <Currency>
|
||||
And node A can transfer 100 <Currency> to node B
|
||||
And node A is migrated to <Corda-Node-Version-Y>
|
||||
And node B can transfer 100 <Currency> to node A
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version-X | Corda-Node-Version-Y | Cordapp-Version-X | Cordapp-Version-Y |
|
||||
| corda-3.0 | r3corda-3.0-DP3-RC01 | finance-V1 | finance-V2 |
|
||||
|
||||
Scenario Outline: as above but Node B has not processed Node A payment flow transactions before upgrade
|
||||
Given a node A of version <Corda-Node-Version-X>
|
||||
And node A has <Cordapp-Version-X> finance app installed
|
||||
When the network is ready
|
||||
Then node A can issue 1000 <Currency>
|
||||
And node A can transfer 100 <Currency> to node B
|
||||
And node B has version <Corda-Node-Version-X>
|
||||
And node B has <Cordapp-Version-Y> finance app installed
|
||||
And node A is migrated to <Corda-Node-Version-Y>
|
||||
And node B can transfer 100 <Currency> to node A
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version-X | Corda-Node-Version-Y | Cordapp-Version-X | Cordapp-Version-Y |
|
||||
| corda-3.0 | r3corda-3.0-DP3-RC01 | finance-V1 | finance-V2 |
|
||||
|
||||
Scenario Outline: as above but Node B has not processed Node A payment flow transactions before upgrade so we enforce flow draining mode before upgrade can complete
|
||||
Given a node A of version <Corda-Node-Version-X>
|
||||
And node A has <Cordapp-Version-X> finance app installed
|
||||
When the network is ready
|
||||
Then node A can issue 1000 <Currency>
|
||||
And node A can transfer 100 <Currency> to node B
|
||||
And node A enables flow draining mode
|
||||
And node B has version <Corda-Node-Version-X>
|
||||
And node B has <Cordapp-Version-Y> finance app installed
|
||||
And node A is migrated to <Corda-Node-Version-Y>
|
||||
And node B can transfer 100 <Currency> to node A
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version-X | Corda-Node-Version-Y | Cordapp-Version-X | Cordapp-Version-Y |
|
||||
| corda-3.0 | r3corda-3.0-DP3-RC01 | finance-V1 | finance-V2 |
|
@ -0,0 +1,16 @@
|
||||
@compatibility @cordapps
|
||||
Feature: Compatibility - CorDapp versions
|
||||
To support an interoperable Corda network, a Corda node must have the ability to transact with another Corda node
|
||||
when each node has a different versions of the same cordapp but identical Flow interfaces and Contract usage.
|
||||
|
||||
Scenario Outline: Corda node can transact with another Corda node where each has a different Cordapp versions but with same Flows, Contracts, Contract States, Contract State Schemas
|
||||
Given a node A of version <Corda-Node-Version-X> with proxy
|
||||
And node A has <Cordapp-Version-X> finance app installed
|
||||
And a node B of version <Corda-Node-Version-X>
|
||||
And node B has <Cordapp-Version-Y> finance app installed
|
||||
When the network is ready
|
||||
Then node A can transfer 100 tokens to node B
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version-X | Cordapp-Version-X | Cordapp-Version-Y |
|
||||
| corda-3.0 | finance-V1 | finance-V2 |
|
@ -0,0 +1,58 @@
|
||||
@compatibility @node @database
|
||||
Feature: Compatibility - Database providers
|
||||
To support an interoperable Corda network, a Corda (OS) node must have the ability to transact with an R3 Corda (Enterprise) node using different database providers.
|
||||
|
||||
Scenario Outline: QA: Corda (OS) Node using H2 can transact with R3 Corda (Enterprise) node using SQL Server, in an R3 Corda configured network.
|
||||
Given a node PartyA of version <R3-Corda-Node-Version> with proxy
|
||||
And node PartyA uses database of type <Database-Type>
|
||||
And node PartyA has the finance app installed
|
||||
And a node PartyB of version <Corda-Node-Version>
|
||||
And node PartyB has the finance app installed
|
||||
And a nonvalidating notary Notary of version <R3-Corda-Node-Version>
|
||||
When the network is ready
|
||||
Then node PartyA can issue 1000 <Currency>
|
||||
And node PartyA can transfer 100 <Currency> to node PartyB
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version | R3-Corda-Node-Version | Currency | Database-Type |
|
||||
# | corda-3.0 | r3-master | GBP | SQL Server |
|
||||
| corda-3.0 | r3corda-3.0-DP3-RC04 | GBP | SQL Server |
|
||||
|
||||
Scenario Outline: QA: Corda (OS) Node using H2 can transact with R3 Corda (Enterprise) node using Postgres, in an R3 Corda configured network.
|
||||
Given a node PartyA of version <R3-Corda-Node-Version> with proxy
|
||||
And node PartyA uses database of type <Database-Type>
|
||||
And node PartyA has the finance app installed
|
||||
And a node PartyB of version <Corda-Node-Version>
|
||||
And node PartyB has the finance app installed
|
||||
And a nonvalidating notary Notary of version <R3-Corda-Node-Version>
|
||||
When the network is ready
|
||||
Then node PartyA can issue 1000 <Currency>
|
||||
And node PartyA can transfer 100 <Currency> to node PartyB
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version | R3-Corda-Node-Version | Currency | Database-Type |
|
||||
# | corda-3.0 | r3-master | GBP | postgres |
|
||||
| corda-3.0 | r3corda-3.0-DP3-RC04 | GBP | postgres |
|
||||
|
||||
|
||||
Scenario Outline: QA: 3 Nodes can transact with each other using different database providers: H2, SQL Server, PostgreSQL
|
||||
Given a node PartyA of version <R3-Corda-Node-Version> with proxy
|
||||
And node PartyA uses database of type <Database-Type-1>
|
||||
And node PartyA has the finance app installed
|
||||
And a node PartyB of version <R3-Corda-Node-Version>
|
||||
And node PartyB uses database of type <Database-Type-2>
|
||||
And node PartyB has the finance app installed
|
||||
And a node PartyC of version <R3-Corda-Node-Version>
|
||||
And node PartyC uses database of type <Database-Type-3>
|
||||
And node PartyC has the finance app installed
|
||||
And a nonvalidating notary Notary of version <R3-Corda-Node-Version>
|
||||
When the network is ready
|
||||
Then node PartyA can issue 1000 <Currency>
|
||||
And node PartyA can transfer 100 <Currency> to node B
|
||||
And node PartyB can transfer 100 <Currency> to node C
|
||||
And node PartyC can transfer 100 <Currency> to node A
|
||||
|
||||
Examples:
|
||||
| R3-Corda-Node-Version | Currency | Database-Type-1 | Database-Type-2 | Database-Type-3 |
|
||||
# | r3-master | GBP | h2 | sql-server | postgres |
|
||||
| r3corda-3.0-DP3-RC01 | GBP | h2 | sql-server | postgres |
|
@ -0,0 +1,18 @@
|
||||
@compatibility @node @cordapps
|
||||
Feature: Compatibility - Mixed Corda distributions (OS and Enterprise) running different CorDapps
|
||||
To support an interoperable Corda network, different CorDapps must have the ability to transact in mixed Corda (OS) and R3 Corda (Enterprise) networks.
|
||||
|
||||
Scenario Outline: Corda (OS) Node can transact with R3 Corda (Enterprise) node using Finance Cash application.
|
||||
Given a node partyA of version <Corda-Node-Version> with proxy
|
||||
And node partyA has the finance app installed
|
||||
And a node partyB of version <R3-Corda-Node-Version> with proxy
|
||||
And node partyB has the finance app installed
|
||||
And a nonvalidating notary Notary of version <Corda-Node-Version>
|
||||
When the network is ready
|
||||
Then node partyA can issue 1000 <Currency>
|
||||
And node partyA can transfer 100 <Currency> to node partyB
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version | R3-Corda-Node-Version | Currency |
|
||||
| corda-3.0 | r3corda-3.0-DP3-RC04 | GBP |
|
||||
|
@ -0,0 +1,46 @@
|
||||
@compatibility @doorman
|
||||
Feature: Compatibility - Doorman certificate issuance
|
||||
To support an interoperable Corda network, a Corda node must have the ability to transact with another Corda node
|
||||
when each node has been issued a certificate by a different Doorman version.
|
||||
|
||||
Scenario Outline: Corda (OS) nodes can transact with each other, where they have been issued Certificates by different (R3 Corda) Doorman versions.
|
||||
Given a node A of version <Corda-Node-Version>
|
||||
And node A was issued a certificate by <Doorman-Version-X>
|
||||
And node A has the finance app installed
|
||||
And a node B of version <Corda-Node-Version>
|
||||
And node B was issued a certificate by <Doorman-Version-Y>
|
||||
And node B has the finance app installed
|
||||
When the network is ready
|
||||
Then node A can transfer 100 tokens to node B
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version | Doorman-Version-X | Doorman-Version-Y |
|
||||
| corda-3.0 | doorman-3.0-DP3-RC01 | doorman-3.0-master |
|
||||
|
||||
Scenario Outline: R3 Corda nodes can transact with each other, where they have been issued Certificates by different (R3 Corda) Doorman versions.
|
||||
Given a node A of version <Corda-Node-Version>
|
||||
And node A was issued a certificate by <Doorman-Version-X>
|
||||
And node A has the finance app installed
|
||||
And a node B of version <Corda-Node-Version>
|
||||
And node B was issued a certificate by <Doorman-Version-Y>
|
||||
And node B has the finance app installed
|
||||
When the network is ready
|
||||
Then node A can transfer 100 tokens to node B
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version | Doorman-Version-X | Doorman-Version-Y |
|
||||
| r3corda-3.0-DP3-RC01 | doorman-3.0-DP3-RC01 | doorman-3.0-master |
|
||||
|
||||
Scenario Outline: Mixed (R3 and OS) Corda nodes can transact with each other, where they have been issued Certificates by different (R3 Corda) Doorman versions.
|
||||
Given a node A of version <Corda-Node-Version-X>
|
||||
And node A was issued a certificate by <Doorman-Version-X>
|
||||
And node A has the finance app installed
|
||||
And a node B of version <Corda-Node-Version-Y>
|
||||
And node B was issued a certificate by <Doorman-Version-Y>
|
||||
And node B has the finance app installed
|
||||
When the network is ready
|
||||
Then node A can transfer 100 tokens to node B
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version-X | Corda-Node-Version-Y | Doorman-Version-X | Doorman-Version-Y |
|
||||
| r3corda-3.0-DP3-RC01 | corda-3.0 | doorman-3.0-DP3-RC01 | doorman-3.0-master |
|
@ -0,0 +1,31 @@
|
||||
@compatibility @networkparams @notary
|
||||
Feature: Compatibility - CZ Network Parameters changes
|
||||
To support an interoperable Corda network, Corda nodes must continue transacting with each other
|
||||
when the CZ network parameters change: minimumPlatformVersion, notaries, maxMessageSize, maxTransactionSize,
|
||||
whitelistedContractImplementations.
|
||||
|
||||
Scenario Outline: R3 Corda nodes continue transacting when list of Notaries changes (additive)
|
||||
Given a node A of version <Corda-Node-Version>
|
||||
And node A has the finance app installed
|
||||
And a node B of version <Corda-Node-Version>
|
||||
And node B has the finance app installed
|
||||
And doorman changes network parameters notaries
|
||||
When the network is ready
|
||||
Then node A can transfer 100 tokens to node B
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version |
|
||||
| r3corda-3.0 |
|
||||
|
||||
Scenario Outline: R3 Corda nodes continue transacting when existing Notary changes from non-validating to validating
|
||||
Given a node A of version <Corda-Node-Version>
|
||||
And node A has the finance app installed
|
||||
And a node B of version <Corda-Node-Version>
|
||||
And node B has the finance app installed
|
||||
And doorman changes network parameters notary from non-validating to validating
|
||||
When the network is ready
|
||||
Then node A can transfer 100 tokens to node B
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version |
|
||||
| r3corda-3.0 |
|
@ -0,0 +1,17 @@
|
||||
@compatibility @nms
|
||||
Feature: Compatibility - NMS node identity (nodeinfo) changes
|
||||
To support an interoperable Corda network, a Corda node must have the ability to transact with another Corda node
|
||||
after making changes to its node information: addresses, legalIdentitiesAndCerts, platformVersion
|
||||
|
||||
Scenario Outline: Corda (OS) node can transact with another Corda (OS) node where a node adds new addresses to its nodeinfo
|
||||
Given a node A of version <Corda-Node-Version>
|
||||
And node A has the finance app installed
|
||||
And node A adds a new nodeinfo address
|
||||
And a node B of version <Corda-Node-Version>
|
||||
And node B has the finance app installed
|
||||
When the network is ready
|
||||
Then node A can transfer 100 tokens to node B
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version |
|
||||
| corda-3.0 |
|
@ -0,0 +1,40 @@
|
||||
@compatibility @nms
|
||||
Feature: Compatibility - NMS node identity (nodeinfo) generation
|
||||
To support an interoperable Corda network, a Corda node must have the ability to transact with another Corda node
|
||||
when each node have generated "NodeInfos" by different NMS versions (both R3 Corda and Corda).
|
||||
|
||||
Scenario Outline: Corda (OS) node can transact with another Corda (OS) node where node infos are generated by different versions of Corda OS
|
||||
Given a node A of version <Corda-Node-Version-X>
|
||||
And node A has the finance app installed
|
||||
And a node B of version <Corda-Node-Version-Y>
|
||||
And node B has the finance app installed
|
||||
When the network is ready
|
||||
Then node A can transfer 100 tokens to node B
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version-X | Corda-Node-Version-Y |
|
||||
| corda-3.0 | corda-3.0 |
|
||||
|
||||
Scenario Outline: R3 Corda node can transact with another R3 Corda node where node infos are generated by different versions of R3 Corda
|
||||
Given a node A of version <Corda-Node-Version-X>
|
||||
And node A has the finance app installed
|
||||
And a node B of version <Corda-Node-Version-Y>
|
||||
And node B has the finance app installed
|
||||
When the network is ready
|
||||
Then node A can transfer 100 tokens to node B
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version-X | Corda-Node-Version-Y |
|
||||
| r3corda-3.0-DP3-RC01 | r3corda-3.0 |
|
||||
|
||||
Scenario Outline: R3 Corda node can transact with another Corda (OS) node where node infos are generated by different distributions Corda
|
||||
Given a node A of version <Corda-Node-Version-X>
|
||||
And node A has the finance app installed
|
||||
And a node B of version <Corda-Node-Version-Y>
|
||||
And node B has the finance app installed
|
||||
When the network is ready
|
||||
Then node A can transfer 100 tokens to node B
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version-X | Corda-Node-Version-Y |
|
||||
| r3corda-3.0-DP3-RC01 | corda-3.0 |
|
@ -0,0 +1,19 @@
|
||||
@compatibility @node @availability
|
||||
Feature: Compatibility - Node high availability and operational continuity
|
||||
To support a highly available Corda network, a Corda node must have the ability to continue transacting with another Corda node
|
||||
when one node in an H/A cluster fails
|
||||
|
||||
Scenario Outline: Corda (OS) node can transact with another Corda (OS) node where node configuration is changed on one of the Corda OS nodes
|
||||
Given a node A of version <Corda-Node-Version-X> in high-availability mode
|
||||
And node A has the finance app installed
|
||||
And a node B of version <Corda-Node-Version-X>
|
||||
And node B has the finance app installed
|
||||
When the network is ready
|
||||
Then node A can issue 1000 GBP
|
||||
And node A can transfer 100 GBP to node B
|
||||
And node A primary node fails
|
||||
And node A can transfer 100 GBP to node B
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version-X |
|
||||
| r3corda-3.0-DP3-RC01 |
|
@ -0,0 +1,44 @@
|
||||
@compatibility @node @configuration
|
||||
Feature: Compatibility - Node configuration
|
||||
To support an interoperable Corda network, a Corda node must have the ability to transact with another Corda node
|
||||
when configuration changes are applied independently to each node:
|
||||
|
||||
Scenario Outline: Corda (OS) node can transact with another Corda (OS) node where node configuration is changed on one of the Corda OS nodes
|
||||
Given a node A of version <Corda-Node-Version-X>
|
||||
And node A configuration is changed
|
||||
And node A has the finance app installed
|
||||
And a node B of version <Corda-Node-Version-X>
|
||||
And node B has the finance app installed
|
||||
When the network is ready
|
||||
Then node A can transfer 100 tokens to node B
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version-X |
|
||||
| corda-3.0 |
|
||||
|
||||
Scenario Outline: R3 Corda node can transact with another R3 Corda node where node configuration is changed on one of the R3 Corda nodes
|
||||
Given a node A of version <Corda-Node-Version-X>
|
||||
And node A has the finance app installed
|
||||
And node A configuration is changed
|
||||
And a node B of version <Corda-Node-Version-X>
|
||||
And node B has the finance app installed
|
||||
When the network is ready
|
||||
Then node A can transfer 100 tokens to node B
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version-X |
|
||||
| r3corda-3.0-DP3-RC01 |
|
||||
|
||||
Scenario Outline: R3 Corda node can transact with another Corda (OS) node where where node configuration is changed on both of the R3 Corda nodes
|
||||
Given a node A of version <Corda-Node-Version-X>
|
||||
And node A configuration is changed
|
||||
And node A has the finance app installed
|
||||
And a node B of version <Corda-Node-Version-Y>
|
||||
And node B configuration is changed
|
||||
And node B has the finance app installed
|
||||
When the network is ready
|
||||
Then node A can transfer 100 tokens to node B
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version-X | Corda-Node-Version-Y |
|
||||
| r3corda-3.0-DP3-RC01 | corda-3.0 |
|
@ -0,0 +1,126 @@
|
||||
@compatibility @node @database
|
||||
Feature: Compatibility - Node databases
|
||||
To support an interoperable Corda network, a Corda (OS) node must have the ability to transact with an R3 Corda (Enterprise) node using different databases:
|
||||
H2, azure-sql, sql-server, postgress, oracle
|
||||
|
||||
Scenario Outline: Corda (OS) Node using H2 database can transact with R3 Corda node also using an H2 database
|
||||
Given a node A of version <Corda-Node-Version>
|
||||
And node A uses database of type <Database-Type-A>
|
||||
And node A has the finance app installed
|
||||
And a node B of version <R3-Corda-Node-Version>
|
||||
And node B uses database of type <Database-Type-A>
|
||||
And node B has the finance app installed
|
||||
When the network is ready
|
||||
Then node A can transfer 100 tokens to node B
|
||||
Then node B can transfer 100 tokens to node A
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version | R3-Corda-Node-Version | Database-Type-A |
|
||||
| corda-3.0 | r3corda-3.0 | H2 |
|
||||
|
||||
Scenario Outline: Corda (OS) Node using H2 database can transact with R3 Corda node using azure-sql database
|
||||
Given a node A of version <Corda-Node-Version>
|
||||
And node A uses database of type <Database-Type-A>
|
||||
And node A has the finance app installed
|
||||
And a node B of version <R3-Corda-Node-Version>
|
||||
And node B uses database of type <Database-Type-B>
|
||||
And node B has the finance app installed
|
||||
When the network is ready
|
||||
Then node A can transfer 100 tokens to node B
|
||||
Then node B can transfer 100 tokens to node A
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version | R3-Corda-Node-Version | Database-Type-A | Database-Type-B |
|
||||
| corda-3.0 | r3corda-3.0 | H2 | azure-sql |
|
||||
|
||||
Scenario Outline: Corda (OS) Node using H2 database can transact with R3 Corda node using a sql-server database
|
||||
Given a node A of version <Corda-Node-Version>
|
||||
And node A uses database of type <Database-Type-A>
|
||||
And node A has the finance app installed
|
||||
And a node B of version <R3-Corda-Node-Version>
|
||||
And node B uses database of type <Database-Type-B>
|
||||
And node B has the finance app installed
|
||||
When the network is ready
|
||||
Then node A can transfer 100 tokens to node B
|
||||
Then node B can transfer 100 tokens to node A
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version | R3-Corda-Node-Version | Database-Type-A | Database-Type-B |
|
||||
| corda-3.0 | r3corda-3.0 | H2 | sql-server |
|
||||
|
||||
Scenario Outline: Corda (OS) Node using H2 database can transact with R3 Corda node using an oracle 11g database
|
||||
Given a node A of version <Corda-Node-Version>
|
||||
And node A uses database of type <Database-Type-A>
|
||||
And node A has the finance app installed
|
||||
And a node B of version <R3-Corda-Node-Version>
|
||||
And node B uses database of type <Database-Type-B>
|
||||
And node B has the finance app installed
|
||||
When the network is ready
|
||||
Then node A can transfer 100 tokens to node B
|
||||
Then node B can transfer 100 tokens to node A
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version | R3-Corda-Node-Version | Database-Type-A | Database-Type-B |
|
||||
| corda-3.0 | r3corda-3.0 | H2 | oracle11g |
|
||||
|
||||
Scenario Outline: Corda (OS) Node using H2 database can transact with R3 Corda node using an oracle 12c database
|
||||
Given a node A of version <Corda-Node-Version>
|
||||
And node A uses database of type <Database-Type-A>
|
||||
And node A has the finance app installed
|
||||
And a node B of version <R3-Corda-Node-Version>
|
||||
And node B uses database of type <Database-Type-B>
|
||||
And node B has the finance app installed
|
||||
When the network is ready
|
||||
Then node A can transfer 100 tokens to node B
|
||||
Then node B can transfer 100 tokens to node A
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version | R3-Corda-Node-Version | Database-Type-A | Database-Type-B |
|
||||
| corda-3.0 | r3corda-3.0 | H2 | oracle12c |
|
||||
|
||||
Scenario Outline: Corda (OS) Node using H2 database can transact with R3 Corda node using a postgres database
|
||||
Given a node A of version <Corda-Node-Version>
|
||||
And node A uses database of type <Database-Type-A>
|
||||
And node A has the finance app installed
|
||||
And a node B of version <R3-Corda-Node-Version>
|
||||
And node B uses database of type <Database-Type-B>
|
||||
And node B has the finance app installed
|
||||
When the network is ready
|
||||
Then node A can transfer 100 tokens to node B
|
||||
Then node B can transfer 100 tokens to node A
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version | R3-Corda-Node-Version | Database-Type-A | Database-Type-B |
|
||||
| corda-3.0 | r3corda-3.0 | H2 | postgres |
|
||||
|
||||
|
||||
Scenario Outline: Corda network of an (OS) Node using H2 database and R3 Corda nodes using different commercial database providers and versions transacting between each other
|
||||
Given a node A of version <Corda-Node-Version>
|
||||
And node A uses database of type <Database-Type-A>
|
||||
And node A has the finance app installed
|
||||
And a node B of version <R3-Corda-Node-Version>
|
||||
And node B uses database of type <Database-Type-B>
|
||||
And node B has the finance app installed
|
||||
And a node C of version <R3-Corda-Node-Version>
|
||||
And node C uses database of type <Database-Type-C>
|
||||
And node C has the finance app installed
|
||||
And a node D of version <R3-Corda-Node-Version>
|
||||
And node D uses database of type <Database-Type-D>
|
||||
And node D has the finance app installed
|
||||
And a node E of version <R3-Corda-Node-Version>
|
||||
And node E uses database of type <Database-Type-E>
|
||||
And node E has the finance app installed
|
||||
And a node F of version <R3-Corda-Node-Version>
|
||||
And node F uses database of type <Database-Type-F>
|
||||
And node F has the finance app installed
|
||||
When the network is ready
|
||||
Then node A can transfer 100 tokens to node B
|
||||
Then node B can transfer 100 tokens to node C
|
||||
Then node C can transfer 100 tokens to node D
|
||||
Then node D can transfer 100 tokens to node E
|
||||
Then node E can transfer 100 tokens to node F
|
||||
Then node F can transfer 100 tokens to node A
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version | R3-Corda-Node-Version | Database-Type-A | Database-Type-B | Database-Type-C | Database-Type-D | Database-Type-E | Database-Type-F |
|
||||
| corda-3.0 | r3corda-3.0 | H2 | azure-sql | sql-server | oracle11g | oracle12c | postgres |
|
@ -0,0 +1,88 @@
|
||||
@compatibility @node
|
||||
Feature: Compatibility - Node versions
|
||||
To support an interoperable Corda network, a Corda (OS) node must have the ability to transact with an R3 Corda (Enterprise) node for the same version.
|
||||
|
||||
Scenario Outline: Startup a Corda (OS) Node
|
||||
Given a node PartyA of version <Corda-Node-Version>
|
||||
When the network is ready
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version |
|
||||
| corda-3.0 |
|
||||
|
||||
Scenario Outline: Startup a Corda (OS) Node from Artifactory
|
||||
Given a node PartyA of version <Corda-Node-Version>
|
||||
And a node PartyB of version <Corda-Node-Version>
|
||||
When the network is ready
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version |
|
||||
| corda-3.0 |
|
||||
|
||||
Scenario Outline: Startup an R3 Corda Node from Artifactory
|
||||
Given a node PartyA of version <Corda-Node-Version>
|
||||
When the network is ready
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version |
|
||||
| r3corda-3.0-DP3-RC01 |
|
||||
|
||||
Scenario Outline: Startup a Corda (OS) Node and print its node information
|
||||
Given a node PartyA of version <Corda-Node-Version>
|
||||
When the network is ready
|
||||
Then user can retrieve logging information for node A
|
||||
And user can retrieve node identity information for node A
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version |
|
||||
| corda-3.0 |
|
||||
|
||||
Scenario Outline: Startup a Corda (OS) Node with several Cordapps deployed.
|
||||
Given a node PartyA of version <Corda-Node-Version>
|
||||
# And node PartyA has app installed: net.corda:bank-of-corda-demo-corda:CORDA_VERSION
|
||||
# And node PartyA has app installed: net.corda:trader-demo-corda:CORDA_VERSION
|
||||
When the network is ready
|
||||
Then user can retrieve logging information for node A
|
||||
And user can retrieve node identity information for node A
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version |
|
||||
| corda-3.0 |
|
||||
|
||||
Scenario Outline: Startup a Corda (OS) Node and issue some currency
|
||||
Given a node PartyA of version <Corda-Node-Version>
|
||||
And a nonvalidating notary Notary of version <Corda-Node-Version>
|
||||
When the network is ready
|
||||
Then node PartyA can issue 1000 <Currency>
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version | Currency |
|
||||
| corda-3.0 | GBP |
|
||||
|
||||
Scenario Outline: R3 Corda (Enterprise) Node can transact with Corda (OS) node, in a Corda OS configured network
|
||||
Given a node PartyA of version <Corda-Node-Version>
|
||||
And node PartyA has the finance app installed
|
||||
And a node PartyB of version <R3-Corda-Node-Version>
|
||||
And node PartyB has the finance app installed
|
||||
And a nonvalidating notary Notary of version <Corda-Node-Version>
|
||||
When the network is ready
|
||||
Then node PartyA can issue 1000 <Currency>
|
||||
And node PartyA can transfer 100 <Currency> to node B
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version | R3-Corda-Node-Version | Currency |
|
||||
| corda-3.0 | r3-master | GBP |
|
||||
|
||||
Scenario Outline: Corda (OS) Node can transact with R3 Corda (Enterprise) node, in an R3 Corda configured network.
|
||||
Given a node PartyA of version <R3-Corda-Node-Version>
|
||||
And node PartyA has the finance app installed
|
||||
And a node PartyB of version <Corda-Node-Version>
|
||||
And node PartyB has the finance app installed
|
||||
And a nonvalidating notary Notary of version <R3-Corda-Node-Version>
|
||||
When the network is ready
|
||||
Then node PartyA can issue 1000 <Currency>
|
||||
And node PartyA can transfer 100 <Currency> to node B
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version | R3-Corda-Node-Version | Currency |
|
||||
| corda-3.0 | r3-master | GBP |
|
@ -0,0 +1,31 @@
|
||||
@compatibility @notary
|
||||
Feature: Compatibility - Notary version change
|
||||
To support an interoperable Corda network, a Corda node using a Notary type must have the ability to transact with another Corda node
|
||||
using a different Notary type by changing Notarised states from one Notary type to another (by invoking notary change flow).
|
||||
|
||||
Scenario Outline: Corda (OS) nodes can continue transacting with each other, using states that change from one Notary type to another (by invoking notary change flow)
|
||||
Given a node A of version <Corda-Node-Version> using <Notary-Type-A>
|
||||
And node A has the finance app installed
|
||||
And node A changes notary to <Notary-Type-B>
|
||||
And a node B of version <Corda-Node-Version> using <Notary-Type-B>
|
||||
And node B has the finance app installed
|
||||
When the network is ready
|
||||
Then node A can transfer 100 tokens to node B
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version | Notary-Type-A | Notary-Type-B |
|
||||
| corda-3.0 | notary-validating | notary-non-validating |
|
||||
|
||||
Scenario Outline: Corda (OS) nodes can continue transacting with each other, using states that have been signed by different notaries (using transaction resolution).
|
||||
Given a node A of version <Corda-Node-Version> using <Notary-Type-A>
|
||||
And node A has the finance app installed
|
||||
And a node B of version <Corda-Node-Version> using <Notary-Type-B>
|
||||
And node B has the finance app installed
|
||||
When the network is ready
|
||||
Then node A can issue 1000 <Currency>
|
||||
And node A can transfer 100 <Currency> to node B
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version | Notary-Type-A | Notary-Type-B |
|
||||
| corda-3.0 | notary-validating | notary-non-validating |
|
||||
|
@ -0,0 +1,14 @@
|
||||
@compatibility @notary
|
||||
Feature: Compatibility - Notary cluster member changes.
|
||||
To support an interoperable Corda network, a Corda OS node must have the ability to transact with an R3 Corda Notary cluster.
|
||||
|
||||
Scenario Outline: Corda (OS) health checker node can interact with R3 Corda RAFT notary cluster.
|
||||
Given a node PartyA of version <Corda-Node-Version>
|
||||
And node PartyA has app installed: <Cordapp-Name>
|
||||
# And a 3 node validating RAFT notary cluster of version <R3-Corda-Node-Version>
|
||||
When the network is ready
|
||||
Then node PartyA can run <Cordapp-Name> <NumIterations> <SleepMillis>
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version | R3-Corda-Node-Version | Cordapp-Name | NumIterations | SleepMillis |
|
||||
| corda-3.0 | r3-master | notaryhealthcheck | 10 | 200 |
|
@ -0,0 +1,17 @@
|
||||
@compatibility @notary
|
||||
Feature: Compatibility - Notary version change
|
||||
To support an interoperable Corda network, a Corda node must have the ability to transact with another Corda node
|
||||
using notarised states from a different Notary version.
|
||||
|
||||
Scenario Outline: Corda (OS) nodes can continue transacting with each other, where states have been notarised by different versions of a notary
|
||||
Given a node A of version <Corda-Node-Version>
|
||||
And node A has the finance app installed
|
||||
And a node B of version <Corda-Node-Version>
|
||||
And node B has the finance app installed
|
||||
When the network is ready
|
||||
Then node A can transfer 100 tokens to node B using <Notary-Version-X>
|
||||
And node B can transfer 100 tokens to node A using <Notary-Version-Y>
|
||||
|
||||
Examples:
|
||||
| Corda-Node-Version | Notary-Version-X | Notary-Version-Y |
|
||||
| corda-3.0 | notary-r3c-3.0-DP2 | notary-r3c-3.0 |
|
@ -0,0 +1,73 @@
|
||||
@qa
|
||||
Feature: QA Interoperability
|
||||
To support an interoperable Corda network, different CorDapps must have the ability to transact in mixed Corda (OS) and R3 Corda (Enterprise) networks.
|
||||
|
||||
Scenario Outline: Corda (OS) Node can transact with R3 Corda (Enterprise) node, in an R3 Corda configured network.
|
||||
Given a node PartyA of version <R3-Corda-Node-Version> with proxy
|
||||
And node PartyA has the finance app installed
|
||||
And a node PartyB of version <Corda-Node-Version>
|
||||
And node PartyB has the finance app installed
|
||||
And a nonvalidating notary Notary of version <R3-Corda-Node-Version>
|
||||
When the network is ready
|
||||
Then node PartyA can issue 1000 <Currency>
|
||||
And node PartyA can transfer 100 <Currency> to node PartyB
|
||||
|
||||
Examples:
|
||||
| R3-Corda-Node-Version | Corda-Node-Version | Currency |
|
||||
# | r3-master | corda-master | GBP |
|
||||
# | r3-master | corda-3.0 | GBP |
|
||||
| r3corda-3.0-DP3-RC04 | corda-3.0 | GBP |
|
||||
|
||||
Scenario Outline: Corda (OS) Node using H2 database can transact with R3 Corda node using a sql-server database
|
||||
Given a node PartyA of version <R3-Corda-Node-Version> with proxy
|
||||
And node PartyA uses database of type <Database-Type>
|
||||
And node PartyA has the finance app installed
|
||||
And a node PartyB of version <Corda-Node-Version>
|
||||
And node PartyB has the finance app installed
|
||||
And a nonvalidating notary Notary of version <R3-Corda-Node-Version>
|
||||
When the network is ready
|
||||
Then node PartyA can issue 1000 <Currency>
|
||||
And node PartyA can transfer 100 <Currency> to node PartyB
|
||||
|
||||
Examples:
|
||||
| R3-Corda-Node-Version | Corda-Node-Version | Currency | Database-Type |
|
||||
# | r3-master | corda-3.0 | GBP | sql-server |
|
||||
| r3corda-3.0-DP3-RC04 | corda-3.0 | GBP | sql-server |
|
||||
|
||||
Scenario Outline: Corda (OS) Node using H2 database can transact with R3 Corda node using a postgres database
|
||||
Given a node PartyA of version <R3-Corda-Node-Version> with proxy
|
||||
And node PartyA uses database of type <Database-Type>
|
||||
And node PartyA has the finance app installed
|
||||
And a node PartyB of version <Corda-Node-Version>
|
||||
And node PartyB has the finance app installed
|
||||
And a nonvalidating notary Notary of version <R3-Corda-Node-Version>
|
||||
When the network is ready
|
||||
Then node PartyA can issue 1000 <Currency>
|
||||
And node PartyA can transfer 100 <Currency> to node PartyB
|
||||
|
||||
Examples:
|
||||
| R3-Corda-Node-Version | Corda-Node-Version | Currency | Database-Type |
|
||||
# | r3-master | corda-3.0 | GBP | postgres |
|
||||
| r3corda-3.0-DP3-RC04 | corda-3.0 | GBP | postgres |
|
||||
|
||||
Scenario Outline: Corda network of an (OS) Node using H2 database and R3 Corda nodes using different commercial database providers and versions transacting between each other
|
||||
Given a node PartyA of version <R3-Corda-Node-Version> with proxy
|
||||
And node PartyA uses database of type <Database-Type-1>
|
||||
And node PartyA has the finance app installed
|
||||
And a node PartyB of version <R3-Corda-Node-Version> with proxy
|
||||
And node PartyB uses database of type <Database-Type-2>
|
||||
And node PartyB has the finance app installed
|
||||
And a node PartyC of version <R3-Corda-Node-Version> with proxy
|
||||
And node PartyC uses database of type <Database-Type-3>
|
||||
And node PartyC has the finance app installed
|
||||
And a nonvalidating notary Notary of version <R3-Corda-Node-Version>
|
||||
When the network is ready within 4 minutes
|
||||
Then node PartyA can issue 1000 <Currency>
|
||||
And node PartyA can transfer 100 <Currency> to node PartyB
|
||||
And node PartyB can transfer 100 <Currency> to node PartyC
|
||||
And node PartyC can transfer 100 <Currency> to node PartyA
|
||||
|
||||
Examples:
|
||||
| R3-Corda-Node-Version | Currency | Database-Type-1 | Database-Type-2 | Database-Type-3 |
|
||||
# | r3-master | GBP | h2 | sql-server | postgres |
|
||||
| r3corda-3.0-DP3-RC04 | GBP | h2 | sql-server | postgres |
|
15
testing/qa/behave/compatibility/resources/scripts/run-interoperability.sh
Executable file
15
testing/qa/behave/compatibility/resources/scripts/run-interoperability.sh
Executable file
@ -0,0 +1,15 @@
|
||||
#!/bin/bash
|
||||
|
||||
#
|
||||
# Run this script from the experimental/behave directory
|
||||
#
|
||||
# $ pwd
|
||||
# ./IdeaProjects/corda-reviews/experimental/behave
|
||||
# $ src/qa-scenarios/resources/scripts/run-behave-qa.sh
|
||||
|
||||
BUILD_DIR=$PWD
|
||||
cd $BUILD_DIR
|
||||
../../gradlew behaveJar
|
||||
|
||||
# QA compatibility
|
||||
java -jar $BUILD_DIR/build/libs/corda-behave.jar -d --glue net.corda.behave.scenarios -path ./src/qa-scenarios/resources/features/qa-interop-testing.feature
|
@ -0,0 +1,76 @@
|
||||
@qa
|
||||
Feature: QA Operational
|
||||
An R3 Corda network must support cash transactions using multiple database providers.
|
||||
|
||||
Scenario Outline: QA: Stand up a basic R3 Corda Network with one node that can verify its identity
|
||||
Given a node PartyA of version <R3-Corda-Node-Version> with proxy
|
||||
And node PartyA has the finance app installed
|
||||
When the network is ready
|
||||
Then node PartyA is on platform version 4
|
||||
And node PartyA is on release version R3.CORDA-3.0.0-DEV-PREVIEW-3
|
||||
And user can retrieve node identity information for node PartyA
|
||||
|
||||
Examples:
|
||||
| R3-Corda-Node-Version |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 |
|
||||
|
||||
Scenario Outline: QA: Stand up a basic R3 Corda Network with one node and a notary; node can issue cash to itself
|
||||
Given a node PartyA of version <R3-Corda-Node-Version> with proxy
|
||||
And a nonvalidating notary Notary of version <R3-Corda-Node-Version>
|
||||
And node PartyA has the finance app installed
|
||||
When the network is ready
|
||||
Then node PartyA can issue 1000 <Currency>
|
||||
|
||||
Examples:
|
||||
| R3-Corda-Node-Version | Currency |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | GBP |
|
||||
|
||||
Scenario Outline: User can connect to an R3 Corda node using a SQL Server database
|
||||
Given a node PartyA of version <Node-Version>
|
||||
And node PartyA uses database of type <Database-Type>
|
||||
When the network is ready
|
||||
Then user can connect to the database of node PartyA
|
||||
|
||||
Examples:
|
||||
| Node-Version | Database-Type |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | SQL Server |
|
||||
|
||||
Scenario Outline: QA: Node using H2 can transact with node using SQL Server, in an R3 Corda configured network.
|
||||
Given a node PartyA of version <R3-Corda-Node-Version> with proxy
|
||||
And node PartyA uses database of type <Database-Type>
|
||||
And node PartyA has the finance app installed
|
||||
And a node PartyB of version <R3-Corda-Node-Version>
|
||||
And node PartyB has the finance app installed
|
||||
And a nonvalidating notary Notary of version <R3-Corda-Node-Version>
|
||||
When the network is ready
|
||||
Then node PartyA can issue 1000 <Currency>
|
||||
And node PartyA can transfer 100 <Currency> to node B
|
||||
|
||||
Examples:
|
||||
| R3-Corda-Node-Version | Currency | Database-Type |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | GBP | SQL Server |
|
||||
|
||||
Scenario Outline: User can connect to an R3 Corda node using a PostgreSQL database
|
||||
Given a node PartyA of version <Node-Version>
|
||||
And node PartyA uses database of type <Database-Type>
|
||||
When the network is ready
|
||||
Then user can connect to the database of node PartyA
|
||||
|
||||
Examples:
|
||||
| Node-Version | Database-Type |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | postgres |
|
||||
|
||||
Scenario Outline: QA: Node using H2 can transact with node using Postgres, in an R3 Corda configured network.
|
||||
Given a node PartyA of version <R3-Corda-Node-Version> with proxy
|
||||
And node PartyA uses database of type <Database-Type>
|
||||
And node PartyA has the finance app installed
|
||||
And a node PartyB of version <R3-Corda-Node-Version>
|
||||
And node PartyB has the finance app installed
|
||||
And a nonvalidating notary Notary of version <R3-Corda-Node-Version>
|
||||
When the network is ready
|
||||
Then node PartyA can issue 1000 <Currency>
|
||||
And node PartyA can transfer 100 <Currency> to node B
|
||||
|
||||
Examples:
|
||||
| R3-Corda-Node-Version | Currency | Database-Type |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | GBP | postgres |
|
15
testing/qa/behave/functional/resources/scripts/run-functional.sh
Executable file
15
testing/qa/behave/functional/resources/scripts/run-functional.sh
Executable file
@ -0,0 +1,15 @@
|
||||
#!/bin/bash
|
||||
|
||||
#
|
||||
# Run this script from the experimental/behave directory
|
||||
#
|
||||
# $ pwd
|
||||
# ./IdeaProjects/corda-reviews/experimental/behave
|
||||
# $ src/qa-scenarios/resources/scripts/run-behave-qa.sh
|
||||
|
||||
BUILD_DIR=$PWD
|
||||
cd $BUILD_DIR
|
||||
../../gradlew behaveJar
|
||||
|
||||
# QA compatibility
|
||||
java -jar $BUILD_DIR/build/libs/corda-behave.jar -d --glue net.corda.behave.scenarios -path ./testing/qa/functional/resources/features/qa-functional-testing.feature
|
Loading…
x
Reference in New Issue
Block a user