libp2p / go-libp2p-pubsub

The PubSub implementation for go-libp2p
https://github.com/libp2p/specs/tree/master/pubsub
Other
321 stars 185 forks source link

Testground for gossipsub implementations #362

Open rklaehn opened 4 years ago

rklaehn commented 4 years ago

In the java world, there is this concept of a Technology_Compatibility_Kit.

Several complex protocols come with TCKs that ensure that implementations are compatible. E.g. https://github.com/reactive-streams/reactive-streams-jvm/tree/master/tck

It would be really neat to have something similar. A way for projects to ensure that their implementation of complex protocols such as gossipsub and bitswap is compliant. I guess the best way to ensure this would be to use testground.ai in a mixed environment (with go-ipfs, js-ipfs and the test program).

But this is not something that small companies can set up on their own. Ideally this would be something provided by protocol labs. E.g. you provide a way to upload some kind of binary that does the protocol under test and can be remote controlled via something simple like a REST API. Then this thing is run through different scenarios in a mixed environment. You then get a test report.

If you want you could even gamify it and score the submitted impls for compliance and performance...

Cause for this ticket is https://github.com/libp2p/go-libp2p-pubsub/issues/361 , but I think it would be a great thing for all kinds of situations, especially as the protocols get more complex...