josecoll c2f22e18a5
Corda Behave framework updates to decouple from Network Services (#914)
* Added new 'eventHorizonDays' configuration item.

* Added custom authenticator to provide ARTIFACTORY credentials upon resolving protected internal URL.

* Re-pointed functional test scenarios to point to Enterprise master.

* Enterprise corda network scenarios to use NetworkBootstrapper tool (instead of Doorman/NMS) since decision made by Product Management to split out Doorman/NMS from Enterprise.

* Configuration parameter changed to 'runMigration' since DP3.

* Fixed problem with logger upon startup.

* General improvements and additions to setup and execution scripts (eg. SIMM valuation demo now consists of 3 separate jars)

* Updates to decouple from Network Services.

* Download all JARs from artifactory for a given published distribution.

* Add TODOs for Doorman/NMS rework.

* Addressing TL PR review comments.

* Additional instructions for setting up the environment and running QA tests.

* Fixed repository URL references.
2018-06-05 15:02:07 +01:00
..
2018-04-19 11:49:17 +01:00

Introduction

This project illustrates how one can use Cucumber / BDD to drive and test homogeneous and heterogeneous Corda networks on a local machine. The framework has built-in support for Dockerised node dependencies so that you easily can spin up a Corda node locally that, for instance, uses a 3rd party database provider such as Postgres.

Structure

The project is split into three pieces:

  • Testing Library (main) - This library contains auxiliary functions that help in configuring and bootstrapping Corda networks on a local machine. The purpose of the library is to aid in black-box testing and automation.

  • Unit Tests (test) - These are various tests for the library described above. Note that there's only limited coverage for now.

  • BDD Framework (scenario) - This module shows how to use BDD-style frameworks to control the testing of Corda networks; more specifically, using Cucumber.

Setup

To get started, please follow the instructions below:

  • Go up to the root directory and build the capsule JAR.

    $ cd ../../
    $ ./gradlew install
    
  • Come back to this folder and run:

    $ cd experimental/behave
    $ ./prepare.sh
    

This script will download necessary database drivers and set up the dependencies directory with copies of the Corda fat-JAR and the network bootstrapping tool.

Selective Runs

If you only want to run tests of a specific tag, you can append the following parameter to the Gradle command:

$ ../../gradlew scenario -Ptags="@cash"
# or
$ ../../gradlew scenario -Ptags="@cash,@logging"

Environment variables and system properties

The following environment variables must be set to enable access to the internal R3 Artifactory repository hosting Enterprise distributions: https://ci-artifactory.corda.r3cev.com/artifactory/r3-corda-releases

CORDA_ARTIFACTORY_USERNAME
CORDA_ARTIFACTORY_PASSWORD

The following system properties may be passed to the Cucumber and ScenarioRunner run-time processes:

  • STAGING_ROOT to specify the filesystem location of the Corda distributions to be used (as setup by the prepare.sh script)
e.g. -DSTAGING_ROOT=$HOME/staging
  • USE_NETWORK_SERVICES specifies to use the Doorman/NMS service to perform setup of an Enterprise network. By default both OS and Enterprise scenarios will use the Network Bootstrapper utility to create a Corda network.
e.g. -DUSE_NETWORK_SERVICES
  • DISABLE_CLEANUP to prevent clean-up of runtime directories after successfully running tests.
e.g. -DDISABLE_CLEANUP