mirror of
https://github.com/corda/corda.git
synced 2025-03-14 08:16:32 +00:00
Merge pull request #762 from corda/colljos-qa-scenarios
ENT-1834: Compatibility Test Suite QA scenarios
This commit is contained in:
commit
a5e2058a5b
33
testing/qa/behave/README.md
Normal file
33
testing/qa/behave/README.md
Normal file
@ -0,0 +1,33 @@
|
||||
The Behave Cucumber Scenarios defined under these sub-directories exercise R3 Corda and OS Corda distributions to include:
|
||||
- Open Source master
|
||||
- R3 Corda master
|
||||
- Released versions of Open Source from V3.0 onwards
|
||||
- Released versions of R3 Corda from R3 V3.0 DEV PREVIEW 3 onwards
|
||||
|
||||
**Compatibility** scenarios exercise:
|
||||
- mixed networks: combinations of OS and R3 Corda nodes configured within an R3 Network
|
||||
- mixed-versioned nodes: combinations of different versions of OS (master, V3.0, V3.1, etc) and R3 Corda (master, V3.0 DP, V3.0 GA) nodes within an R3 Network.
|
||||
- mixed-versioned corDapps: combinations of nodes running different versions of CorDapps (both valid and invalid upgrade mixes).
|
||||
- mixed-services: ability to continue transacting upon notaries, oracles, doorman upgrades & changes.
|
||||
|
||||
**Functional** scenarios exercise the key behaviours of R3 Corda components and node configurations to include:
|
||||
- basic cash management functions (issuance, transfer, redemption)
|
||||
- vault usage of different database providers (H2, sql-server, postgreSQL)
|
||||
- doorman certificate issuance and usage
|
||||
- compatibility zone network parameter registration and updates
|
||||
- network map registration and updates
|
||||
- notary registration and updates
|
||||
|
||||
NOTE:
|
||||
- the CTS framework uses R3's internal artifactory repositories to setup/configure officially released versions of Corda:
|
||||
1. https://ci-artifactory.corda.r3cev.com/artifactory/corda-releases
|
||||
2. https://ci-artifactory.corda.r3cev.com/artifactory/r3-corda-releases
|
||||
- Scenarios specifying `master` will use the latest code checked into the respective Open Source and Enterprise repositories:
|
||||
1. https://github.com/corda/corda
|
||||
2. https://github.com/corda/enterprise/
|
||||
|
||||
Further goals of this project are to:
|
||||
- automatically generate and register Docker images with target Azure Test Environments (eg. Functional/QA, CTS)
|
||||
- effect execution of scenarios in specified Target Environments
|
||||
- use Before and After hooks to pre-configure Target Environments to allow batch running of multiple scenarios (eg. a given
|
||||
feature will specify the environment once for one or many scenarios)
|
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 on 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: provisioning 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 en expected response never being 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 `initiatedFlow`.
|
||||
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 (e.g., 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 Compatibility Zone (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,48 @@
|
||||
@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-master | finance-V1-contract | finance-V2-contract |
|
||||
| r3-master | 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-master | finance-V1-state | finance-V2-state |
|
||||
| r3-master | 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-master | finance-V1-state-schema | finance-V2-state-schema |
|
||||
| r3-master | finance-V1-state-schema | finance-V2-state-schema |
|
||||
|
||||
Scenario Outline: Unhappy path scenarios to be added.
|
||||
Examples: TODO
|
@ -0,0 +1,43 @@
|
||||
@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-master | finance-V1-flowImpl1 | finance-V2-flowImpl2 |
|
||||
| r3-master | 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-master | finance-V1-flowV1 | finance-V2-flowV2 |
|
||||
| r3-master | 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-master | finance-V1-flowV1-incompat | finance-V2-flowV2-incompat |
|
||||
| r3-master | 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-master | r3-master | 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-master | r3-master | 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-master | r3-master | finance-V1 | finance-V2 |
|
@ -0,0 +1,20 @@
|
||||
@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-master | finance-V1 | finance-V2 |
|
||||
| r3-master | finance-V1 | finance-V2 |
|
||||
|
||||
Scenario Outline: Scenarios that exercise both happy and unhappy paths using Contract Constraints checking (hash, CZ whitelist, signature).
|
||||
Examples: TODO
|
@ -0,0 +1,57 @@
|
||||
@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-master | r3-master | 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-master | r3-master | 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 |
|
||||
|
||||
Scenario Outline: Add Doorman and NMS database usage scenarios
|
||||
Examples: TODO
|
@ -0,0 +1,21 @@
|
||||
@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-master | r3-master | GBP |
|
||||
| corda-master | r3-master | USD |
|
||||
| corda-master | r3-master | CHF |
|
||||
| corda-master | r3-master | EUR |
|
||||
|
@ -0,0 +1,51 @@
|
||||
@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.0-DEV-PREVIEW-3 | doorman-master |
|
||||
| corda-3.1 | doorman-3.0.0-DEV-PREVIEW-3 | doorman-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 |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | doorman-3.0.0-DEV-PREVIEW-3 | doorman-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 |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | corda-3.0 | doorman-3.0.0-DEV-PREVIEW-3 | doorman-master |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | corda-3.1 | doorman-3.0.0-DEV-PREVIEW-3 | doorman-master |
|
||||
|
||||
Scenario Outline: Unhappy path scenarios to be added (eg. rejected issuance request). Please also see the OAT Test Suite (https://bitbucket.org/R3-CEV/corda-connect/qa/testing) which covers the CSR process from a functional perspective.
|
||||
Examples: TODO
|
@ -0,0 +1,34 @@
|
||||
@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 |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 |
|
||||
|
||||
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 |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 |
|
||||
|
||||
Scenario Outline: Many more scenarios to be added here (eg. CZ whitelist updates, minimumPlatformVersion, increase/reduce maxMessageSize, increase/reduce maxTransactionSize)
|
||||
Examples: TODO
|
@ -0,0 +1,19 @@
|
||||
@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 |
|
||||
| corda-3.1 |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 |
|
@ -0,0 +1,47 @@
|
||||
@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.1 |
|
||||
| corda-master | corda-3.0 |
|
||||
| corda-master | corda-3.1 |
|
||||
|
||||
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 |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | r3-master |
|
||||
|
||||
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 |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | corda-3.0 |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | corda-3.1 |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | corda-master |
|
||||
| r3-master | corda-3.0 |
|
||||
| r3-master | corda-3.1 |
|
||||
| r3-master | corda-master |
|
@ -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 |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 |
|
@ -0,0 +1,57 @@
|
||||
@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.
|
||||
Configuration changes may be classified into three types:
|
||||
1. Global configuration items that affect all nodes (eg. change of `compatibilityZoneURL` in an R3 network)
|
||||
2. R3 Corda specific configuration items (eg. `relay` configuration, `security` using Apache Shiro)
|
||||
3. General configuration items applicable to both OS and R3 Corda distributions (`database`, identity, addresses for p2p/rpc/web/ssh, jmx configuration, etc)
|
||||
TODO: implementation to provide two modes of operation (spin-up before/after change, spin-up with change-only)
|
||||
|
||||
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 |
|
||||
| corda-3.1 |
|
||||
| corda-master |
|
||||
|
||||
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 |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 |
|
||||
| r3-master |
|
||||
|
||||
Scenario Outline: R3 Corda node can transact with another Corda (OS) node where node configuration is changed on both OS and 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 |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | corda-3.0 |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | corda-3.1 |
|
||||
| r3-master | corda-master |
|
||||
|
||||
Scenario Outline: Add scenarios where new configuration items are added.
|
||||
Examples: TODO
|
@ -0,0 +1,139 @@
|
||||
@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:
|
||||
| R3-Corda-Node-Version | Corda-Node-Version | Database-Type-A |
|
||||
| r3-master | corda-master | h2 |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | corda-3.0 | h2 |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | corda-3.1 | 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:
|
||||
| R3-Corda-Node-Version | Corda-Node-Version | Database-Type-A | Database-Type-B |
|
||||
| r3-master | corda-master | h2 | azure-sql |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | corda-3.0 | h2 | azure-sql |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | corda-3.1 | 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:
|
||||
| R3-Corda-Node-Version | Corda-Node-Version | Database-Type-A | Database-Type-B |
|
||||
| r3-master | corda-master | h2 | sql-server |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | corda-3.0 | h2 | sql-server |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | corda-3.1 | 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:
|
||||
| R3-Corda-Node-Version | Corda-Node-Version | Database-Type-A | Database-Type-B |
|
||||
| r3-master | corda-master | h2 | oracle11g |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | corda-3.0 | h2 | oracle11g |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | corda-3.1 | 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:
|
||||
| R3-Corda-Node-Version | Corda-Node-Version | Database-Type-A | Database-Type-B |
|
||||
| r3-master | corda-master | h2 | oracle12c |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | corda-3.0 | h2 | oracle12c |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | corda-3.1 | 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:
|
||||
| R3-Corda-Node-Version | Corda-Node-Version | Database-Type-A | Database-Type-B |
|
||||
| r3-master | corda-master | h2 | postgres |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | corda-3.0 | h2 | postgres |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | corda-3.1 | 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:
|
||||
| R3-Corda-Node-Version | Corda-Node-Version | Database-Type-A | Database-Type-B | Database-Type-C | Database-Type-D | Database-Type-E | Database-Type-F |
|
||||
| r3-master | corda-master | H2 | azure-sql | sql-server | oracle11g | oracle12c | postgres |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | corda-3.0 | H2 | azure-sql | sql-server | oracle11g | oracle12c | postgres |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | corda-3.1 | H2 | azure-sql | sql-server | oracle11g | oracle12c | postgres |
|
@ -0,0 +1,39 @@
|
||||
@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 |
|
||||
| corda-3.1 |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 |
|
||||
|
||||
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 |
|
||||
| corda-3.1 |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 |
|
||||
|
||||
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 |
|
||||
| corda-3.1 |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 |
|
@ -0,0 +1,38 @@
|
||||
@compatibility @notary
|
||||
Feature: Compatibility - Notary type 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 |
|
||||
| corda-3.1 | notary-validating | notary-non-validating |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | 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 |
|
||||
| corda-3.1 | notary-validating | notary-non-validating |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | notary-validating | notary-non-validating |
|
||||
|
||||
Scenario Outline: Unhappy path scenarios to be added.
|
||||
Examples: TODO
|
||||
|
@ -0,0 +1,16 @@
|
||||
@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:
|
||||
| R3-Corda-Node-Version | Corda-Node-Version | Cordapp-Name | NumIterations | SleepMillis |
|
||||
| r3-master | corda-master | notaryhealthcheck | 10 | 200 |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | corda-3.0 | notaryhealthcheck | 10 | 200 |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | corda-3.1 | notaryhealthcheck | 10 | 200 |
|
@ -0,0 +1,20 @@
|
||||
@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-corda-3.0 | notary-corda-3.1 |
|
||||
| corda-3.0 | notary-corda-3.0 | notary-R3.CORDA-3.0.0-DEV-PREVIEW-3 |
|
||||
| corda-3.1 | notary-corda-3.1 | notary-R3.CORDA-3.0.0-DEV-PREVIEW-3 |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | notary-R3.CORDA-3.0.0-DEV-PREVIEW-3 | r3-master |
|
@ -0,0 +1,87 @@
|
||||
@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 |
|
||||
| corda-3.0 | corda-3.1 | GBP |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | corda-3.0 | GBP |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | corda-3.1 | 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-master | GBP | sql-server |
|
||||
| corda-3.0 | corda-3.1 | GBP | sql-server |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | corda-3.0 | GBP | sql-server |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | corda-3.1 | GBP | sql-server |
|
||||
| r3-master | corda-master | GBP | postgres |
|
||||
| corda-3.0 | corda-3.1 | GBP | postgres |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | corda-3.0 | GBP | postgres |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | corda-3.1 | GBP | postgres |
|
||||
|
||||
Scenario Outline: R3 Corda network with R3 Corda nodes using different 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 |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | GBP | h2 | sql-server | postgres |
|
||||
|
||||
Scenario Outline: Mixed OS and R3 Corda network using different 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 <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 | Corda-Node-Version | Currency | Database-Type-1 | Database-Type-2 | Database-Type-3 |
|
||||
| r3-master | corda-master | GBP | sql-server | postgres | h2 |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | corda-3.0 | GBP | sql-server | postgres | h2 |
|
||||
| R3.CORDA-3.0.0-DEV-PREVIEW-3 | corda-3.1 | GBP | sql-server | postgres | h2 |
|
16
testing/qa/behave/compatibility/resources/scripts/run-interoperability.sh
Executable file
16
testing/qa/behave/compatibility/resources/scripts/run-interoperability.sh
Executable file
@ -0,0 +1,16 @@
|
||||
#!/bin/bash
|
||||
|
||||
#
|
||||
# Run this script from your ${R3CORDA_HOME}/experimental/behave directory, where R3CORDA_HOME refers to R3 Corda source code (eg. GitHub master, branch or TAG)
|
||||
# For example:
|
||||
# R3CORDA_HOME => git clone https://github.com/corda/enterprise
|
||||
#
|
||||
# $ testing/qa/behave/compatibility/resources/scripts/run-interoperability.sh
|
||||
|
||||
R3CORDA_HOME=$PWD
|
||||
BEHAVE_DIR=${R3CORDA_HOME}/experimental/behave
|
||||
cd ${BEHAVE_DIR}
|
||||
../../gradlew behaveJar
|
||||
|
||||
# QA interoperability
|
||||
java -jar ${BEHAVE_DIR}/build/libs/corda-behave.jar -d --glue net.corda.behave.scenarios -path ${R3CORDA_HOME}/testing/qa/behave/compatibility/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 |
|
17
testing/qa/behave/functional/resources/scripts/run-functional.sh
Executable file
17
testing/qa/behave/functional/resources/scripts/run-functional.sh
Executable file
@ -0,0 +1,17 @@
|
||||
#!/bin/bash
|
||||
|
||||
#
|
||||
# Run this script from your ${R3CORDA_HOME}/experimental/behave directory, where R3CORDA_HOME refers to R3 Corda source code (eg. GitHub master, branch or TAG)
|
||||
# For example:
|
||||
# R3CORDA_HOME => git clone https://github.com/corda/enterprise
|
||||
#
|
||||
# $ testing/qa/behave/compatibility/resources/scripts/run-functional.sh
|
||||
|
||||
|
||||
R3CORDA_HOME=$PWD
|
||||
BEHAVE_DIR=${R3CORDA_HOME}/experimental/behave
|
||||
cd ${BEHAVE_DIR}
|
||||
../../gradlew behaveJar
|
||||
|
||||
# QA functional
|
||||
java -jar ${BEHAVE_DIR}/build/libs/corda-behave.jar -d --glue net.corda.behave.scenarios -path ${R3CORDA_HOME}/testing/qa/behave/functional/resources/features/qa-functional-testing.feature
|
Loading…
x
Reference in New Issue
Block a user