libp2p-test-plans/dht
Raúl Kripalani 4d4f24ad8f
migrate dht test plan from testground/testground. (#1)
* migrate dht test plan from testground/testground.

* dht: update module and import paths.

* rm redundant scripts; rm redundant line in manifest.
2020-04-22 17:47:58 +01:00
..
compositions migrate dht test plan from testground/testground. (#1) 2020-04-22 17:47:58 +01:00
libp2p migrate dht test plan from testground/testground. (#1) 2020-04-22 17:47:58 +01:00
scripts migrate dht test plan from testground/testground. (#1) 2020-04-22 17:47:58 +01:00
test migrate dht test plan from testground/testground. (#1) 2020-04-22 17:47:58 +01:00
utils migrate dht test plan from testground/testground. (#1) 2020-04-22 17:47:58 +01:00
README.md migrate dht test plan from testground/testground. (#1) 2020-04-22 17:47:58 +01:00
go.mod migrate dht test plan from testground/testground. (#1) 2020-04-22 17:47:58 +01:00
go.sum migrate dht test plan from testground/testground. (#1) 2020-04-22 17:47:58 +01:00
main.go migrate dht test plan from testground/testground. (#1) 2020-04-22 17:47:58 +01:00
manifest.toml migrate dht test plan from testground/testground. (#1) 2020-04-22 17:47:58 +01:00

README.md

Plan: The go-libp2p DHT behaves

IPFS can safely rely on the latest DHT upgrades by running go-libp2p DHT tests directly

What is being optimized (min/max, reach)

  • (Minimize) Numbers of peers dialed to as part of the call
  • (Minimize) Number of failed dials to peers
  • (Minimize) Time that it took for the test
  • (Minimize) Routing efficiency (# of hops (XOR metric should decrease at every step))

Plan Parameters

  • Network Parameters
    • instances - Number of nodes that are spawned for the test (from 10 to 1000000)
  • Image Parameters
    • Single Image - The go-libp2p commit that is being tested
    • Image Resources CPU & Ram

Tests

Test: Find Peers

  • Test Parameters
    • auto-refresh - Enable autoRefresh (equivalent to running random-walk multiple times automatically) (true/false, default: false)
    • random-walk - Run random-walk manually 5 times (true/false, default: false)
    • bucket-size - Kademlia DHT bucket size (default: 20)
    • n-find-peers - Number of times a Find Peers call is executed from each node (picking another node PeerId at random that is not yet in our Routing table) (default: 1)
  • Narrative
    • Warm up
      • All nodes boot up
      • Each node as it boots up, connects to the node that previously joined
      • Nodes ran 5 random-walk queries to populate their Routing Tables
    • Act I
      • Each node calls Find Peers n-find-peers times

Test: Find Providers

  • Test Parameters
    • auto-refresh - Enable autoRefresh (equivalent to running random-walk multiple times automatically) (true/false, default: false)
    • random-walk - Run random-walk manually 5 times (true/false, default: false)
    • bucket-size - Kademlia DHT bucket size (default: 20)
    • p-providing - Percentage of nodes providing a record
    • p-resolving - Percentage of nodes trying to resolve the network a record
    • p-failing - Percentage of nodes trying to resolve a record that hasn't been provided
  • Narrative
    • Warm up
      • All nodes boot up
      • Each node as it boots up, connects to the node that previously joined
      • Nodes ran 5 random-walk queries to populate their Routing Tables
    • Act I
      • p-providing of the nodes provide a record and store its key on redis
    • Act II
      • p-resolving of the nodes attempt to resolve the records provided before
      • p-failing of the nodes attempt to resolve records that do not exist

Test: Provide Stress

  • Test Parameters
    • auto-refresh - Enable autoRefresh (equivalent to running random-walk multiple times automatically) (true/false, default: false)
    • random-walk - Run random-walk manually 5 times (true/false, default: false)
    • bucket-size - Kademlia DHT bucket size (default: 20)
    • n-provides - The number of provide calls that are done by each node
    • i-provides - The interval between each provide call (in seconds)
  • Narrative
    • Warm up
      • All nodes boot up
      • Each node as it boots up, connects to the node that previously joined
      • Nodes ran 5 random-walk queries to populate their Routing Tables
    • Act I
      • Each node calls Provide for i-provides until it reaches a total of n-provides