e38cd9ec63
* Remove unused dependencies from test-common * Explicit imports and formatting * Add core-test-utils project * Add dependency * Move Kryo serialization context to node-api (not serialization as we do not want to pull kryo into the serialization lib) * Move AMQP server serialization scheme to node api * Move serialization tests to node-api * Move internal test helpers without further dependencies. * Move out some types from RPCClientProxyHandler to node-api in preparation for moving the AMQP scheme * Move client AMQP context to node-api so we can move the test serialization rule out. * Move InternalSerializationTestHelpers to core-test-utils * Moved testing.core to core-test-utils * Make detekt happy * Add api-scanner to core-test-utils * Remove inlined package names introduced by IntelliJ refactoring * Update api-current.txt to account for reordering. * Add core-test-utils to list of published artifacts. * Add missing import * Location of things in api text has moved again (publish name of artefact?) * Revert all additions to the API, leaving just the reordering * Code review: fix up core-test-utils build.gradle and introduce kryo version constant. * Remove OpenSsl flag from ssl config stub (can't be used from node-api) * Suppress detekt warning * Move core test util tests to the right module * Expose kotlin test as a transient dependency - projects have come to rely on that. * Fix typo in package name |
||
---|---|---|
.. | ||
cordapp | ||
src | ||
web | ||
build.gradle | ||
README.md |
IRS Demo
This demo brings up three nodes: Bank A, Bank B and a node that simultaneously runs a notary, a network map and an interest rates oracle. The two banks agree on an interest rate swap, and then do regular fixings of the deal as the time on a simulated clock passes.
Functionality is split into two parts - CordApp which provides actual distributed ledger backend and Spring Boot webapp which provides REST API and web frontend. Application communicate using Corda RPC protocol.
To run from the command line in Unix:
- Run
./gradlew samples:irs-demo:cordapp:deployNodes
to install configs and a command line tool undersamples/irs-demo/cordapp/build
- Run
./gradlew samples:irs-demo:web:deployWebapps
to install configs and tools for running webservers - Move to the
samples/irs-demo/
directory - Run
./cordapp/build/nodes/runnodes
to open up three new terminals with the three nodes (you may have to install xterm) - On Linux, run
./web/build/webapps/runwebapps.sh
to open three more terminals for associated webservers. On macOS, use the following command instead:osascript ./web/build/webapps/runwebapps.scpt
To run from the command line in Windows:
- Run
gradlew.bat samples:irs-demo:cordapp:deployNodes
to install configs and a command line tool undersamples\irs-demo\build
- Run
gradlew.bat samples:irs-demo:web:deployWebapps
to install configs and tools for running webservers - Run
cd samples\irs-demo
to change current working directory - Run
cordapp\build\nodes\runnodes.bat
to open up several 3 terminals for each nodes - Run
web\build\webapps\runwebapps.bat
to open up several 3 terminals for each nodes' webservers
This demo also has a web app. To use this, run nodes and then navigate to http://localhost:10007/ and http://localhost:10010/ to see each node's view of the ledger.
To use the web app, click the "Create Deal" button, fill in the form, then click the "Submit" button. You can then use the time controls at the top left of the home page to run the fixings. Click any individual trade in the blotter to view it.
Note: The IRS web UI currently has a bug when changing the clock time where it may show no numbers or apply fixings inconsistently. The issues will be addressed in a future release. Meanwhile, you can take a look at a simpler oracle example here: https://github.com/corda/oracle-example.
Running the system test
The system test utilizes Docker. The amount of RAM required to run the IRS system test is around 2.5GB, so it is important to make sure the appropriate system resources are allocated (On MacOS/Windows this may require explicit changes to your Docker configuration).
Gradle
The system test is designed to exercise the entire stack, including Corda nodes and the web frontend. It uses Docker,
docker-compose, and
PhantomJS. Docker and docker-compose need to be installed and configured to on the system path
(which happens by default). The PhantomJs binary has to be put in a known location and needs execution permissions enabled
(chmod a+x phantomjs
on *nix) and the full path to the binary needs to be available as system property named phantomjs.binary.path
or
an environment variable named PHANTOMJS_BINARY_PATH
.
To start the test, run :samples:irs-demo:systemTest
.
Other
In order to run the test by other means than the Gradle task - two more environment variables are expected -
CORDAPP_DOCKER_COMPOSE
and WEB_DOCKER_COMPOSE
which should specify the full path for the docker-compose files for the IRS cordapp
and web frontend respectively. Those can be obtained by running the :samples:irs-demo:cordapp:prepareDockerNodes
and
web:generateDockerCompose
Gradle tasks. The :samples:irs-demo:systemTest
Gradle task simply executes these two tasks and sets up the
correct environment variables.