1. 02 May, 2021 2 commits
  2. 30 Apr, 2021 7 commits
  3. 23 Apr, 2021 1 commit
  4. 22 Apr, 2021 1 commit
  5. 21 Apr, 2021 1 commit
  6. 15 Apr, 2021 1 commit
  7. 01 Apr, 2021 3 commits
  8. 26 Feb, 2021 2 commits
  9. 18 Nov, 2020 1 commit
  10. 13 Nov, 2020 3 commits
  11. 12 Nov, 2020 3 commits
  12. 10 Nov, 2020 2 commits
  13. 24 Sep, 2020 1 commit
    • Tomasz Zdybał's avatar
      Add WireTap interface (#444) · bc3df6bd
      Tomasz Zdybał authored
      * Add WireTap interface
      
      WireTap interface can be used to access all messages send and received
      by Bitswap. This can be used to implement advanced statistics/analysis
      logic, which is beyond scope of Bitswap, but can be implemented as IPFS
      plugin.
      
      Some examples of potential applications:
       - per CID bandwidth tracker (see: https://gitcoin.co/issue/PinataCloud/apollo/2/100023631)
       - detailed per peer stats
       - intrusion detection system (IDS) implementation
      
      * Add test for WireTap
      bc3df6bd
  14. 10 Sep, 2020 1 commit
    • Paul Wolneykien's avatar
      Fix: Increment stats.MessagesSent in msgToStream() function (#441) · bcf85413
      Paul Wolneykien authored
      * Share common code between network/ipfs_impl_test.go tests
      
      Extract the code that is common in TestMessageResendAfterError,
      TestMessageSendTimeout and TestMessageSendNotSupportedResponse to a
      separate function.
      
      * Make prepareNetwork() return two hosts and two networks
      
      Let prepareNetwork() make simmetric setup with two `ErrHost`s
      with two `impl` networks to be sure we test `impl` instances on
      both ends.
      
      * Added TestNetworkCounters test to the "network" package
      
      The test shows we have a problem with `MessagesSent` counter.
      
      * Fix: Increment stats.MessagesSent in msgToStream() function
      
      Fixes the bug with incrementing `MessagesSent` counter only in
      `SendMessage()` method if `impl`. Now it works for `MessageSender`
      too.
      
      * Allow to specify a network event listener for tests
      
      Added `listener network.Notifiee` to the `receiver` structure.
      If a listener is specified then `prepareNetwork()` connects it
      to the mock network it builds before making any connections.
      
      * Wait for all network streams are closed in testNetworkCounters
      
      Wait for all network streams are closed instead of just using a
      timeout. The timeout of 5 s is still used as a deadline (it makes
      the test to fail).
      
      * Fix: Close the MessageSender in testNetworkCounters()
      
      The `MessageSender` needs to be closed if we want all streams in
      the network to be closed.
      
      * Fix: Close MessageSender in other tests too
      Co-authored-by: default avatarPaul Wolneykien <manowar@altlinux.org>
      bcf85413
  15. 03 Sep, 2020 2 commits
    • dirkmc's avatar
      00f4df8d
    • Paul Wolneykien's avatar
      Added `WithScoreLedger` Bitswap option (#430) · fd213932
      Paul Wolneykien authored
      * Separate decision engine ledger on two parts: score and the wantlist
      
      This is the first step to make external decision logic (tagging
      peers with score values) possible.
      
      The wantlist still resides in the original `ledger` struct while
      sent/received byte accounting and scores are extracted to the new
      `scoreledger` struct managed by the original `scoreWorker()` logic.
      The accounting is integrated into the `Engine` via `ScoreLedger`
      interface making it possible to replace the original `scoreWorker()`
      with some other logic. The interface, however, doesn't allow a
      score logic to directly touch peer tags: the logic may decide about
      score values while tagging itself is still under control of Engine.
      
      Note: with this commit it's yet not possible to replace the original
      score logic because there is no public methods for that.
      
      * Added "WithScoreLedger" Bitswap option
      
      New `WithScoreLedger(decision.ScoreLedger)` option in the `bitswap`
      package is the way to connect a custom `ScoreLedger` implementation
      to the decision engine. The `Engine` now has the corresponding
      `UseScoreLedger(ScoreLedger)` method.
      
      The `ScoreLedger` and `ScorePeerFunc` types are exposed from the
      internal `decision` package to the public one.
      
      Because its options are processed by the `Bitswap` after construction
      of its parts but before starting of the engine, the default
      `scoreLedger` initialization is moved from `newEngine()` to
      `StartWorkers()`.
      
      New `TestWithScoreLedger` test is added. The test checks for start and
      stop of the testing score ledger implementation that is specified via
      `WithScoreLedger` option.
      
      * Combine score ledger start with initialization of the score function
      
      Having a separate `Init(ScoreFunc)` method seems redundant (thx
      @dirkmc for pointing about that). As a bonus, the two-step ledger
      starting process is now enclosed in the `startScoreLedger()` function.
      
      * Let's call Stop() to stop a ScoreLedger
      
      The `Close()` method was there to stop the ledger. Let call it
      `Stop()` now.
      
      * Get return of the blank Receipt out of conditional block
      
      Explicitly form it as the final resort.
      Co-authored-by: default avatarPaul Wolneykien <manowar@altlinux.org>
      fd213932
  16. 19 Aug, 2020 1 commit
  17. 10 Jun, 2020 8 commits