Commit Graph

399 Commits

Author SHA1 Message Date
rick.parker
a18e7b06bf File moves to core module and split of interfaces and implementations in preparation for further moves 2016-05-13 10:07:44 +01:00
Shams Asari
4271693b85 peristing psm checkpoints to disk (one per file) 2016-05-10 16:26:07 +01:00
Richard Green
62e7dc583e Expanded the verify() function for the IRS Contract 2016-05-10 15:32:08 +01:00
Ross Nicoll
642b951bae Rename PartyReference to PartyAndReference 2016-05-09 17:55:37 +01:00
Ross Nicoll
2035a7ba54 Merged in rnicoll-cash-issue-only (pull request #83)
Require that a cash Issue command is the only command
2016-05-09 17:17:53 +01:00
Ross Nicoll
252eb141a7 Require that a cash Issue command is the only command
Require that a cash Issue command is the only cash command in a transaction.
Although no problems are anticipated with other commands being present, they
could theoretically confuse other verification tools.
2016-05-09 16:55:44 +01:00
Shams Asari
2e7b004eb5 logger name moved into protocol state machine 2016-05-09 15:32:30 +01:00
Shams Asari
66eec9c2b2 cleanup of use of messaging service 2016-05-06 10:10:39 +01:00
Ross Nicoll
e433663875 Correct TraderDemo after network map changes
Script to run TraderDemo now specified network map service rather than timestamper service.
TraderDemo now explicitly states the services it needs to run. Previously this was implied by whether a timestamper service was specified, and the code was not updated when that change was made.
2016-05-04 17:45:00 +01:00
Ross Nicoll
7a0300f024 Split internal/external services
This patch splits internal services (to be referred to as "subsystems") from
external services (retaining the label "services"). This makes it clear which
are components of the node for its own use (such as the identity subsystem,
network map cache, wallet, etc.) and which are exposed for other nodes to use.

Further work is needed on consistency in naming, this just introduces the basic
restructuring.
2016-04-28 13:15:14 +01:00
Ross Nicoll
e11ce06b87 Minor: Move service tests into code.node.services package 2016-04-28 09:39:04 +01:00
Ross Nicoll
147f8f37ce Enable network map service 2016-04-27 16:39:33 +01:00
Ross Nicoll
00a2088fa5 Add in-node network map service 2016-04-27 16:33:54 +01:00
Ross Nicoll
5134dd4bbc Add advertised services to AbstractNode and subclasses 2016-04-27 16:26:57 +01:00
Ross Nicoll
8a42da5362 Add network map service 2016-04-27 16:26:57 +01:00
Ross Nicoll
44054c47f8 Add InMemoryNetworkMapCache 2016-04-27 16:26:57 +01:00
Shams Asari
0575bcc959 Sending message to self no longer goes into continuous loop 2016-04-27 14:50:07 +01:00
Ross Nicoll
c8865c1b40 Remove deregisterIdentity()
Remove the ability to remove registered identities. Once registered, identities are part
of a permanent record (for example you would want to ensure parties to contracts cannot
"disappear" by removing themselves from the identity service).
2016-04-27 11:43:10 +01:00
Mike Hearn
f3ed5fc9cb Minor: rename SMM._stateMachines to remove underscore. 2016-04-25 18:13:34 +02:00
Mike Hearn
9904d5bb6e Address review comments from Shams.
Also, make ServiceAffinityExecutor subclass ThreadPoolExecutor instead of delegating to ScheduledThreadPoolExecutor. This fixes an issue with exception reporting.
2016-04-25 18:13:34 +02:00
Mike Hearn
e5a0a211da SMM: Better fiber scheduler that always schedules onto the SMM thread. 2016-04-25 16:43:46 +02:00
Mike Hearn
746aca8290 Thread safety and messaging bug fixes.
* Use the new AffinityExecutor code to fix some thread affinity issues where callbacks were running on the wrong threads. Add affinity assertions.
* Remove sleeps from UpdateBusinessDayProtocol.
* Remove a one-shot message handler before the callback is executed.
* Store un-routed messages in memory in ArtemisMessagingService to fix handler registration/message races. This is a temporary kludge until we use Artemis/MQ better.
2016-04-25 15:25:58 +02:00
Mike Hearn
63b8579669 Minor: print more logging in the IRS demo 2016-04-25 15:22:30 +02:00
Mike Hearn
1b3e919df7 Minor: print a bit more info in log lines 2016-04-25 15:22:10 +02:00
Mike Hearn
f6ef1c8071 Add AffinityExecutor: a tool for making it easier to perform thread assertions. 2016-04-25 14:50:28 +02:00
Ross Nicoll
d3011817ed Merged in rnicoll-identity-service (pull request #64)
Add InMemoryIdentityService
2016-04-21 17:57:47 +01:00
Ross Nicoll
b4513e8bec Add InMemoryIdentityService
Move FixedIdentityService to MockIdentityService under testing as it's specialised for use in tests.
Add a new InMemoryIdentityService replacing the fixed identity service in AbstractNode.
2016-04-21 17:10:43 +01:00
Mike Hearn
4c9e4ce637 SMM: Log uncaught top level fiber exceptions as something has changed about how they propagate out of Fiber.unpark 2016-04-21 13:13:52 +02:00
Mike Hearn
3ef6f18203 Merged in delete-unnecessary-service-ids (pull request #63)
Delete unnecessary service IDs. Only services exposed to the wider network need this type of identifier.
2016-04-20 17:36:50 +02:00
Mike Hearn
e88907dd41 Delete unnecessary service IDs. Only services exposed to the wider network need this type of identifier. 2016-04-20 15:28:59 +02:00
Ross Nicoll
9a17a1c144 Merged in rnicoll-test-in-memory-network (pull request #62)
Remove TestWithInMemoryNetwork
2016-04-20 13:37:35 +01:00
Ross Nicoll
78076ace3b Remove TestWithInMemoryNetwork
* Replace use of TestWithInMemoryNetwork by InMemoryMessagingTests with MockNetwork
* Replace use of TestWithInMemoryNetwork by TimestamperNodeServiceTest with MockNetwork
* Remove reference to TestWithInMemoryNetwork from TwoPartyTradeProtocolTests
2016-04-20 13:36:44 +01:00
Ross Nicoll
5ce7580470 Replace forced ID with ID
Replace the forced ID passed into MockNode with the actual ID. This ensures
mock nodes are aware of their ID as the MockNetwork sees it, essentially
always forcing ID to be overriden.
2016-04-20 13:36:44 +01:00
Mike Hearn
fcc36c472a Improve the contracts API and Cash contract a bit, and beef up the unit tests.
Better usage of generics in groupStates so the group exposes the grouping key that was used, this avoids constructs like `val issuer = outputs[0].deposit.party` which is a bit ugly.
2016-04-20 14:36:14 +02:00
Mike Hearn
804b8bdc6a Minor: Add a TODO about RecordingMap to ServiceHub 2016-04-20 14:28:39 +02:00
Mike Hearn
2de44a516f Switch Kryo serialisation to always include the class name, and avoid overhead from writing out SerializedBytes wrapper data.
This simplifies the serialisation code, reduces the use of inline functions, and ensures that running SerializedBytes<SuperClass>.deserialise() will correctly return SubClass if that's what it contained, efficiently.
2016-04-20 14:27:40 +02:00
Mike Hearn
6968a47a63 Fix a TODO in NodeWalletService by utilising ServiceHub.recordTransactions 2016-04-20 14:27:40 +02:00
Mike Hearn
bfa5e2091c Add a TODO referencing PLT-147 to NodeAttachmentService (randomise attachment JARs) 2016-04-20 14:27:40 +02:00
Mike Hearn
283d9a031c Minor: correct typo in api doc comment 2016-04-20 14:27:40 +02:00
Mike Hearn
77fd7941f9 Minor: remove a utility method that's used only once from WireTransaction 2016-04-20 14:27:40 +02:00
Mike Hearn
964f2b502e Minor: small cleanup in TwoPartyTradeProtocolTests, by using ServiceHub to record the fake transactions 2016-04-20 14:27:40 +02:00
Mike Hearn
70210f3ef9 Minor: rename some fields in Command to be consistent with AuthenticatedObject, just to simplify the next refactor 2016-04-20 14:27:40 +02:00
Mike Hearn
d9cfb5e1eb Minor: make LedgerTransaction implement the NamedByHash interface, for improved consistency 2016-04-20 14:27:40 +02:00
Mike Hearn
6c9222ad6a Minor: delete some unnecessary code from LedgerTransaction 2016-04-20 14:27:40 +02:00
Ross Nicoll
5d75a661b1 Merged in rnicoll-protocol-request-response (pull request #60)
Refactor common elements in node services
2016-04-19 17:58:55 +01:00
Ross Nicoll
8cdd57e4e0 Refactor common elements in node services 2016-04-19 17:57:04 +01:00
Andrius Dagys
03cab8ba09 IRS demo fixes 2016-04-19 16:00:10 +01:00
Mike Hearn
fcbe1210f7 Minor: delete a dead unit test class 2016-04-18 19:51:26 +02:00
Mike Hearn
800151b774 Merge branch 'master' into dynamic-loading 2016-04-18 17:56:31 +02:00
Mike Hearn
8bac8f42e5 Fix the trader demo, the move to include services in NodeInfo objects broke it. 2016-04-18 17:28:04 +02:00
Mike Hearn
531e4a85fe Tweak the attachment classloader tests so that they don't break if IntelliJ has put the 'contracts:isolated' module on the classpath. 2016-04-14 19:42:39 +02:00
Mike Hearn
e91c46f045 Rewrite the AttachmentsClassLoader to avoid temporary file copies and fix the overlap check.
Throw a specialised exception that lists missing exceptions during deserialisation, so the dependency resolution code can access it (coming up).
2016-04-14 17:55:49 +02:00
Mike Hearn
7e9cbaa36e Minor: ClassLoaderTests reformatting 2016-04-14 16:09:19 +02:00
Mike Hearn
13f334ceba Dynamic class loading: check in a contract jar as a test resource to ensure tests can run from IntelliJ.
Minor tweak to use val more than var in tests.
2016-04-13 19:54:25 +02:00
Mike Hearn
7a9f74ca79 Merge branch 'master' into dynamic-loading 2016-04-13 19:03:04 +02:00
Mike Hearn
fc133de902 Minor: small changes to progress tracking in the IRS protocols 2016-04-13 15:20:27 +02:00
Mike Hearn
24cc56334b Minor: bugfix to simulation code (bug introduced during merging) 2016-04-13 15:20:27 +02:00
Mike Hearn
745f6251a6 Minor: better error message when an attempt is made to project coordinates with bad extents 2016-04-13 15:20:25 +02:00
Andrius Dagys
9a8b3bd1ef Added interpolation functionality for the rates oracle. The oracle can be set up with different interpolation mechanisms, currently supported are: linear and cubic spline 2016-04-13 12:32:04 +01:00
Ross Nicoll
265948dcee Clean up code based on feedback from Mike
* Move advertisedServices parameter in NodeInfo up one in the parameter order
* Change ServiceType away from being an enum
* Tweaked wording around what a NodeInfo is
* Renamed LocationStructures to PhysicalLocationStructures
* Move generator outside of function parameters
2016-04-11 16:09:15 +01:00
sofusmortensen
d05e6bb6a4 Merge branch 'master' into dynamic-loading 2016-04-09 01:01:36 +02:00
sofusmortensen
6fe8107d27 Merge branch 'master' into dynamic-loading 2016-04-08 22:40:18 +02:00
Ross Nicoll
ca1db997ab Move node identity structures into core.node package
While node identity is used by services, it is not intrinsically part of services,
so moved it to the core.node package instead.
2016-04-08 15:19:56 +01:00
Ross Nicoll
81b2935285 Move MockNetworkMapCache to core.testing 2016-04-08 15:18:43 +01:00
Ross Nicoll
acee02f876 Add advertised services to NodeInfo 2016-04-08 15:15:54 +01:00
Mike Hearn
49d5fb33c4 Remove copyright headers from the files and put the text in the README instead, per feedback from Jacob and external counsel. 2016-04-08 11:46:07 +02:00
Mike Hearn
caf48b65c9 Run auto-formatter over the code. 2016-04-07 20:16:28 +02:00
Mike Hearn
931ce4a749 Minor: remove ugly bug workaround code now the issue has been fixed in Quasar upstream. 2016-04-07 20:03:46 +02:00
Mike Hearn
f3863ac5ef Minor: eliminate compiler warnings 2016-04-07 20:00:29 +02:00
Mike Hearn
1633ff1ef7 Add simulation classes, which build on top of the MockNetwork infrastructure but set up a group of nodes and performs scenarios between them. Currently there's a base class and two subclasses, one that does the trader demo scenario and one that does an IRS with fixings scenario. 2016-04-07 19:32:06 +02:00
Mike Hearn
a41524fc6a Add a reified inlined variant of WalletService.linearHeadsOfType 2016-04-07 19:32:06 +02:00
Mike Hearn
cd52ca21ce Minor: expose the rates oracle service (if the node provides one) as a property 2016-04-07 19:32:06 +02:00
Mike Hearn
10ee49d994 Minor: refactoring to reduce dependencies of the JSON object mapper. Clean up how mock identities are handled a little. This assists with the simulation code. 2016-04-07 19:32:06 +02:00
Mike Hearn
a2bd9f63a4 Move JSON objectmapper and serialiser code into a separate file. 2016-04-07 19:32:06 +02:00
Mike Hearn
a67267f562 Minor: add an SMM todo 2016-04-07 19:32:06 +02:00
Ross Nicoll
345738f7de Rename classes
Rename LegallyIdentifiableNode to NodeInfo, to represent that legally identifiable is not a single concept.

Rename NetworkMapService to NetworkMapCache, as the API exposed is suited to a local cache, not a remote service.
2016-04-07 15:33:13 +01:00
Rick Parker
34940c903b Merged in plt-17-api-server-merge5 (pull request #51)
IRS related protocols and scripts
2016-04-07 15:01:25 +01:00
rick.parker
55265e6115 IRS related protocols and scripts
Additional changes based on feedback

Additional changes based on feedback
2016-04-07 14:56:30 +01:00
Ross Nicoll
c1ebf45834 Merged in rnicoll-typos (pull request #46)
Minor: Fix typo ('amounnt' to 'amount')
2016-04-06 13:16:31 +01:00
sofusmortensen
9561013b65 Replaced class Kryo2 with extension method on Kryo 2016-04-05 01:02:54 +02:00
sofusmortensen
bba0a4a55d Fixed bug in Kryo.useClassLoader
Renamed to AttachmentsClassLoader + autoformat
Added unit test to validate exception being throw when deserializing WireTransaction without contract jar in attachments.
2016-04-05 00:34:46 +02:00
sofusmortensen
88a7406ec9 Merge branch 'master' into dynamic-loading 2016-04-03 13:59:36 +02:00
Mike Hearn
420ecf80a0 Minor: fix a typo in a variable name, spotted by Rick 2016-03-30 18:50:12 +02:00
Mike Hearn
3adfd02e31 Support injection of latency into the mock (simulated) network. 2016-03-30 18:50:12 +02:00
Mike Hearn
d1e62c27c4 Unit testing: minor refactoring of MockNetwork 2016-03-30 18:50:12 +02:00
Mike Hearn
d1b5ada423 Add a notion of physical location.
This will be useful for various things in future, such as approximating the nearest consensus service (approximate because physical distance doesn't always match network distance), visualisation, simulation, etc.

LegallyIdentifiableNode now lists a physical place for the node to be in (which might not be totally accurate one day if we have super distributed mega-nodes, but will do for now).

The config file allows the admin to specify their nearest city.

There is a city database that can map such names through to coordinates, when known.

There is support for Mercator projection.
2016-03-30 18:50:11 +02:00
Ross Nicoll
366860b2d8 Minor: Fix typo ('amounnt' to 'amount') 2016-03-30 16:13:33 +01:00
rick.parker
e122a57bf2 First working commit
First working commit

Formatting clean up

Revert All_tests.xml

Remove extra space

Feedback from code review
2016-03-30 15:04:08 +01:00
sofusmortensen
c0e2322414 Added comment on how to handle accidental gradle import in IDEA 2016-03-25 14:56:09 +01:00
sofusmortensen
58a509de63 Merge branch 'master' into dynamic-loading 2016-03-24 13:10:36 +00:00
sofusmortensen
e5dbf5d2a8 WireTransaction deserialization using AttachmentStorage 2016-03-24 12:06:41 +00:00
sofusmortensen
1344bfd6bb Replaced programRef in ContractState with a simple reference to contract 2016-03-23 17:51:14 +00:00
Mike Hearn
5b7fb86b6b Use TypeSafe Config library instead of Java properties files for the config file format. The default formats are compatible so this should not be disruptive. 2016-03-23 16:49:28 +00:00
rick.parker
9f7ae4c61d Basic JSON API with servertime call exposed at GET /api/servertime
Global Clock as part of ServiceHub to offer source of time in transactions, protocols, time stamping service etc (can be replace for demos and testing with a Clock that can be externally manipulated)

Edited with Mike's feedback

Edited with Mike's feedback
2016-03-23 09:34:45 +00:00
sofusmortensen
5d5bcbfb00 Merge branch 'master' into dynamic-loading 2016-03-22 13:37:33 +00:00
sofusmortensen
527b0f4817 Improved unit tests.
Cleaned up project structure a bit.
2016-03-22 12:15:47 +00:00
Richard Green
6c0e696107 Updated with new Tenor class that verifies string during construction.
Now uses new Tenor class for Interest Rate Oracle
2016-03-22 11:46:06 +00:00
Richard Green
d7d05a2f70 Merged in PLT-15-b (pull request #36)
Neater branch with IRS code.
2016-03-22 11:42:08 +00:00
Richard Green
a78c5b11d1 IRS Contract example 2016-03-22 11:36:40 +00:00
Mike Hearn
b1694e2d0d Move MockNode/InMemoryNetwork to the main sourceset, as these are useful not only for unit testing, but also simulation tools. 2016-03-22 10:54:35 +00:00