Commit Graph

102 Commits

Author SHA1 Message Date
Csaba Kiraly 50df73da1b fixup: tests: expose startup delay parameter 2022-03-22 11:53:55 +01:00
Csaba Kiraly d14222e8d1 tests: add back test after bootnode dies
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2022-03-22 11:53:55 +01:00
Csaba Kiraly 0431587765 test_providers: add optional delay during bootstrap
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2022-03-22 11:53:55 +01:00
Csaba Kiraly 7bef1e105f fix bootstrap: add node after successful handshake
Previous version was very conservative about adding nodes to the
routing table, requiring a full request/response message exchange
initiated by us.
Here we also add the node as 'seen' if the whoareyou/handshake
exchange was successful.
This significantly speeds up bootstreap from 0

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2022-03-22 11:53:55 +01:00
Csaba Kiraly 4d7e773c42 fix tests: make bootstrap nodes async 2022-03-22 11:53:55 +01:00
Eric Mastro d785aa4642 update codecov path to be informational 2022-03-22 11:00:26 +11:00
Csaba Kiraly 9a01791e11 feat: Swap ENR to libp2p SignedPeerRecords
Swap all instances of Record with SignedPeerRecord.

Allow for `SignedPeerRecord`s to be updated by updating the first multiaddress in the `PeerRecord`. This also increments the `seqNo` in the `PeerRecord` only if the address was actually updated.
2022-03-22 11:00:26 +11:00
Eric Mastro b843c8823c feat: merge add/get providers with discv5
Merge the add/get providers messages with the discovery v5 messages inside of the discovery v5 code. Discovery v5 uses RLP encoding, while the add/get providers uses protobufs, as per the libp2p spec. The merge of these two uses RLP on the outer wrapper of the message, and a protobuf-encoded blob on the “inside” for the add/get providers messages only. Eventually this needs to change so that we use protobufs only.

There is still some code in the libp2pdht/dht directory, which is being read from the discovery v5 directory. Eventually these two should merge as well.
2022-03-17 14:56:54 +11:00
Eric Mastro cbcaf926a1 feat: Swap PeerRecord for SignedPeerReocrd (PR comments)
- Add example addresses in tests
- Change bootnode private key in tests
- bump libp2p to get access to SignedPeerRecord.encode
2022-03-10 17:00:33 +11:00
Eric Mastro 35026762b4 feat: Swap PeerRecords with SignedPeerRecords
Providers now add/get SignedPeerRecords to/from the DHT.

Changed the PeerId calculation to use the public key of the discovery node.
2022-03-09 15:03:16 +11:00
Eric Mastro 4a2a6878b4 Remove nim development compiler version from CI 2022-03-08 13:55:53 +11:00
Eric Mastro 422511b961 chore: Add codecov yml settings
Specify `informational: true` to prevent CI failure with a reduction in code coverage. We are not at a point yet to need this.
2022-03-08 13:55:53 +11:00
Csaba Kiraly b65e0aa7ef comment out test instead of using skip()
after calling skip(), the test was still
executed and failed. Better to disable the
whole test.
2022-03-07 15:11:31 +11:00
Csaba Kiraly e8a8c28848
Merge pull request #16 from status-im/build/add-ci-action-2
Add CI Actions
2022-03-06 16:07:47 +01:00
Eric Mastro 0d0da71b65
build: Add CI Actions
Add CI workflow to run tests.

Add code coverage workflow that publishes results to CodeCov.

Add CI and coverage badges to README.

Bump asynctest to allow for `setupAll` and `teardownAll`.

Add local coverage nimble task.

Combine tests in to a testAll file.
2022-03-04 18:04:50 +11:00
Eric Mastro 55a43b2d89 chore: bump asynctest, use all/each test harness nouns
Using `setupAll`/`setupEach` and `teardownAll`/`teardownEach` for test harnesses.
2022-02-25 14:06:43 +11:00
Eric Mastro acd03ff831 feat: reorg project to add nimble build system
Project has been updated to use nimble as a build system. All required dependencies have been added.

All nim-eth mirrored files were added to a private folder in the libp2pdht module. A libp2pdht/discv5 module was added to alias the nim-eth modules (which will change over time).

Test have been updated to use status-im/asynctest. This PR uses a branch of asynctest that supports async suite before/after. This seemed like the only the tests would work without throwing gcsafe errors.

All tests working.
2022-02-25 09:10:43 +11:00
Eric Mastro 617a98bd01 Initial commit with nimble initialised repo
# Conflicts:
#	README.md
2022-02-25 09:10:43 +11:00
Csaba Kiraly f530a24a25 moving all RLP enoding from messages to messages_encoding 2022-02-24 12:39:17 +01:00
Csaba Kiraly aca6febd34 fixup: fix trace message 2022-02-24 12:36:29 +01:00
Csaba Kiraly 7dd0ff1bb6 fixup: fix trace messages 2022-02-23 22:12:32 +01:00
Csaba Kiraly db4ccc8bee just reordering 2022-02-23 22:12:32 +01:00
Csaba Kiraly 6dcdaf6173 moving encode and decode to the same level 2022-02-23 22:12:32 +01:00
Csaba Kiraly 043f195e19 separating message structures and encoding 2022-02-23 22:12:32 +01:00
Csaba Kiraly b6943d3382 adding minimal readme 2022-02-23 22:12:32 +01:00
Csaba Kiraly e6cea68326 tests: give more time to bootstrap 2022-02-23 22:12:32 +01:00
Csaba Kiraly 0b301fdeae moving test under dht folder 2022-02-23 22:12:32 +01:00
Csaba Kiraly 811389c863 moving code under dht folder 2022-02-23 22:12:32 +01:00
Csaba Kiraly bef2b711e5 just a comment 2022-02-23 22:12:32 +01:00
Csaba Kiraly b118a34043 tests: make all tests work 2022-02-23 22:12:32 +01:00
Csaba Kiraly 77d93d71bd tests: generate PeerRecords from NodeId
this is just for the testing
2022-02-23 22:12:32 +01:00
Csaba Kiraly 54fde4e09e test fix: init nodes correctly 2022-02-23 22:12:32 +01:00
Csaba Kiraly 19792de3dc adding GetProviders support 2022-02-23 22:12:32 +01:00
Csaba Kiraly f78dafb798 add some trace messages 2022-02-23 22:12:32 +01:00
Csaba Kiraly 57a339d326 quick fix local lookup 2022-02-23 22:12:32 +01:00
Csaba Kiraly 31d99ad56e adding protobuf encoding 2022-02-23 22:12:32 +01:00
Csaba Kiraly af168a8a24 fixup 2022-02-23 22:12:32 +01:00
Csaba Kiraly be5d911cda partial tests (AddProvider) 2022-02-23 22:12:32 +01:00
Csaba Kiraly 43a27ed997 exposing ProvidersProtocol and underlying Discovery 2022-02-23 22:12:32 +01:00
Csaba Kiraly 86328cd17e adding base for test_discovery
based on discv4 version
2022-02-23 22:12:32 +01:00
Csaba Kiraly 722fbba547 adding addProvider messaging and calls 2022-02-23 22:12:32 +01:00
Csaba Kiraly ca3f634239 import eth/[rlp, keys, async_utils, net/utils] directly from eth 2022-02-23 22:11:27 +01:00
Csaba Kiraly f5d3a9f381 cleaning up imports and dependencies 2022-02-23 22:03:37 +01:00
Csaba Kiraly cdd5d6cd34 protocol: introduce sendResponse
This completes the Request/Response semantics.
2022-02-23 22:02:59 +01:00
Csaba Kiraly 70a06b5c44 rename protocol.sendMessage to sendRequest
This is a request part of a Request/Response, generating
also a reques ID. So call it what it is.
2022-02-23 22:02:51 +01:00
Csaba Kiraly d4af5b8a44 protocol.sendMessage: allow destination as (NodeId, Address) 2022-02-23 22:02:41 +01:00
Csaba Kiraly a7d8082fc7 transport.sendMessage: avoid passing address twice
Node already has the address, so it does not make sense to
pass it as a separate parameter.
2022-02-23 22:02:31 +01:00
Csaba Kiraly 8298acd410 attempt to clean up send proc names
- interface between Transport and Protocol is at the encoded Message
level
2022-02-23 21:59:01 +01:00
Csaba Kiraly b03d5eb3c7 fixup: fix imports in test_discoveryv5_encoding
Note that the test does not compile, but it was
also not compiling before

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2022-02-23 11:02:06 +01:00
Csaba Kiraly fd350b4fe5 splitting protocol in lower and upper half
Protocol was actually made of two sub-protocols.
  * a lower-half handling authentication, encryption,
key exchange, and request/response. This is now called
Transport.
  * an upper-half handling DHT messages. This is still
called Protocol.

Separation of these two reduces dependencies and simplifies
modifications to the protocol.
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2022-02-23 11:02:06 +01:00