Given its use across various components of `libp2p` (not just peer IDs),
it makes the abstraction cleaner to pull the serialization into the
key class and expose the canonical serialization to bytes.
- Dedup `perform_test_from_obj` and the test cases used in both
`test_floodsub` and `test_gossipsub_backward_compatibility.py`.
Therefore, they are put in the standalone file
`tests/pubsub/floodsub_integration_test_settings.py`. The functions
and testcases are imported from there then.
- IMO still need a refactor on the tests. There are still some duplicate
code.
* Add handle_rpc call to pubsub
* Scaffold gossipsub functions
* Add timer
* Implement most of mesh construction
* Implement emit and handle
* Implement fanout heartbeat
* Refactor emit
* some gossipsub cleanup and test
* minor lint stuff, more to come
* Implement publish
* Fix comment
* Modify pubsub/gossipsub so that floodsub tests pass using gossipsub router
* Add floodsub tests to gossipsub
* Handle case where select_from_minus, num_to_select > size(pool-minus)
* Add topic membership
* Implement handle ihave
* Implement most of iwant
* Add mcache.add and comments
* Refactor handle_ihave
* Implement stream write in handle_iwant
* Implement gossip heartbeat
* unresolved vars
* initial mcache code
* documenting mcache
* writing test/debugging mcache
* finished mcache test and debugged
* Make gossipsub backward compatibility its own file
* remove mcache prints
* DEBUGGING
* Add sender_peer_id to handle_rpc to get gossip test passing
* Modify gossipsub to make fanout work
* fanout maintenance test
* debugging gsub GOSSIP
* DEBUGGING
* debugged sender seen cachce
* adding lru, removing prints
* pylint cleanup
* Fix github comments in PR
* minor floodsub possible bugfix
* Add notifee interface
* Add notify function to network interface
* Implement notify feature
* Add tests for notify
* Make notifee functions all async
* Fix linting issue
* Fix linting issue
* Scaffold pubsub router interface
* Scaffold pubsub directory
* Store peer_id in muxed connection
* Implement pubsub notifee
* Remove outdated files
* Implement pubsub first attempt
* Prepare pubsub for floodsub
* Add mplex conn to net stream and add conn in notify tests
* Implement floodsub
* Use NetStream in generic protocol handler
* Debugging async issues
* Modify test to perform proper assert. Test passes
* Remove callbacks. Reduce sleep time
* Add simple three node test
* Clean up code. Add message classes
* Add test for two topics
* Add conn to net stream and conn tests
* Refactor test setup to remove duplicate code
* Fix linting issues
* Fix linting issue
* Fix linting issue
* Fix outstanding unrelated lint issue in multiselect_client
* Add connect function
* Remove debug prints
* Remove debug prints from floodsub
* Use MessageTalk in place of direct message breakdown
* Remove extra prints
* Remove outdated function
* Add message to queues for all topics in message
* Debugging
* Add message self delivery
* Increase read timeout to 5 to get pubsub tests passing
* Refactor testing helper func. Add tests
* Add tests and increase timeout to get tests passing
* Add dummy account demo scaffolding
* Attempt to use threads. Test fails
* Implement basic dummy node tests using threads
* Add generic testing function
* Add simple seven node tree test
* Add more complex seven node tree tests
* Add five node ring tests
* Remove unnecessary get_message_type func
* Add documentation to classes
* Add message id to messages
* Add documentation to test helper func
* Add docs to dummy account node helper func
* Add more docs to dummy account node test helper func
* fixed linting errors in floodsub
* small notify bugfix
* move pubsub into libp2p
* fixed pubsub linting
* fixing pubsub test failures
* linting
* Add generic protocol handler
* Add generic protocol handler to stream muxing pipeline
* Modify conn_handler to only deal with connections
* mplex accept stream architecture changes
* Add create generic protocol handler
* Fix minor bugs
* who would win 4 devs or one not
* Debugging
* rearch with handle_incoming infinite loop, seems to work, needs cleanup"
* passing linting, still needs cleanup
* fixing linting again; code still needs cleanup
* fixing tests; code still needs cleanup
* adding test cleanup and task cleanup, removing prints
* linting, and cleanup complete
* storing connections based on peer id
* remove dead code
* remove unnecessary peer_id
* Update more test for peerid.py
Signed-off-by: Tran Ly Vu <tranly.vu@accellion.com>
* Update more tests for peerid.py
Signed-off-by: Tran Ly Vu <tranly.vu@accellion.com>
* Update more tests for peerid.py
Signed-off-by: Tran Ly Vu <tranly.vu@accellion.com>
* Update more unit tests
Signed-off-by: Tran Ly Vu <tranly.vu@accellion.com>
* Update more unit tests
Signed-off-by: Tran Ly Vu <tranly.vu@accellion.com>
* FIx travis failaure
Signed-off-by: Tran Ly Vu <tranly.vu@accellion.com>
* Fix travis failaure
Signed-off-by: Tran Ly Vu <tranly.vu@accellion.com>
* Update indent-string to tab
Signed-off-by: Tran Ly Vu <tranly.vu@accellion.com>
* Fix lines that too long
Signed-off-by: Tran Ly Vu <tranly.vu@accellion.com>
* Convert indent back to space
Signed-off-by: Tran Ly Vu <tranly.vu@accellion.com>
* Fix lines that too long
Signed-off-by: Tran Ly Vu <tranly.vu@accellion.com>
* Fix lines that too long
Signed-off-by: Tran Ly Vu <tranly.vu@accellion.com>
* Fix lines that too long
Signed-off-by: Tran Ly Vu <tranly.vu@accellion.com>
* Fix lines that too long
Signed-off-by: Tran Ly Vu <tranly.vu@accellion.com>
* Disable W0212 and E1120
Signed-off-by: Tran Ly Vu <tranly.vu@accellion.com>
* Fix lines that too long
Signed-off-by: Tran Ly Vu <tranly.vu@accellion.com>
* Fix failure from travis
Signed-off-by: Tran Ly Vu <tranly.vu@accellion.com>
* Fix failure from travis
Signed-off-by: Tran Ly Vu <tranly.vu@accellion.com>
* Remove W0212 and E1120
Signed-off-by: Tran Ly Vu <vutransingapore@gmail.com>
* Fix packages import
Signed-off-by: Tran Ly Vu <vutransingapore@gmail.com>
* Add pylint dsiable
Signed-off-by: Tran Ly Vu <vutransingapore@gmail.com>
fixes#89
instead of saving the multiaddr received in the listen method of the
tcp transport class, read what the service is actually listening on
this allow to use 0 as port and let the OS choose a free port for us
* Improved peer ID construction and usage
* peer id object is directly passed to the network
no need to cast from a string to an ID
* don't base64 encode the peer id when loading from public key
* use proper multiaddr address
- keep multiaddr object into peerstore instead of string
- update network code to use new multiaddr lib
- update tests and example
* don't instanciate peerstore object in constructor
This has side effect where the same peerstore
is used for different instance of Libp2p
* add connect method to basic_host
* use zaibon's fork of sbuss/py-multiaddr
* lint
* Implement protocol muxing
* Integrate protocol muxing into new stream and listen's conn handler
* Fix bugs in protocol muxing
* Remove blank line
* Add comments and fix linting issues
* Fix order of parameters to select_one_of to match interface
* Use array of protocol ids in new stream instead of protocol id
* Add basic protocol muxer tests
* Add todo
* Modify new stream to take in protocol ids
* Add check to all tests to ensure protocol id is saved to net stream properly
* Lint tests
* Fix lint issues
* Add todo
* Modify port numbers in tests
* Fix linting issues
* Add more documentation to functions
* Add docs describing classes and fix indent error