@cryptotaxi247 / kubo / commits / d16e63a23

Fix: Resource Manager: Filter stats correctly by %

Signed-off-by: Antonio Navarro Perez <antnavper@gmail.com>

Antonio Navarro Perez committed Dec 7, 2022 at 17:22 UTC d16e63a23e9c1eeafbe26ed8ea36c3c5229d6caf
4 files changed +23 -1
core/commands/swarm.go
+5
@@ -360,6 +360,11 @@ The output of this command is JSON.
360
361 percentage, _ := req.Options[swarmUsedResourcesPercentageName].(int)
362 scope := req.Arguments[0]
363 +
364 + if percentage != 0 && scope != "all" {
365 + return fmt.Errorf("%q can only be used when scope is %q", swarmUsedResourcesPercentageName, "all")
366 + }
367 +
368 result, err := libp2p.NetStat(node.ResourceManager, scope, percentage)
369 if err != nil {
370 return err
core/node/libp2p/rcmgr.go
+1 -1
@@ -309,7 +309,7 @@ func abovePercentage(v1, v2, percentage int) bool {
309 return false
310 }
311
312 - return int((v1/v2))*100 >= percentage
312 + return int((float64(v1)/float64(v2))*100) >= percentage
313 }
314
315 func NetLimitAll(mgr network.ResourceManager) (*NetStatOut, error) {
core/node/libp2p/rcmgr_test.go new
+12
@@ -0,0 +1,12 @@
1 +package libp2p
2 +
3 +import (
4 + "testing"
5 +
6 + "github.com/stretchr/testify/require"
7 +)
8 +
9 +func TestPercentage(t *testing.T) {
10 + require.True(t, abovePercentage(10, 100, 10))
11 + require.True(t, abovePercentage(100, 100, 99))
12 +}
test/sharness/t0139-swarm-rcmgr.sh
+5
@@ -62,6 +62,11 @@ test_expect_success 'ResourceMgr enabled: swarm limit reset' '
62 test_cmp reset actual
63 '
64
65 +test_expect_success 'Swarm stats system with filter should fail' '
66 + test_expect_code 1 ipfs swarm stats system --min-used-limit-perc=99 2> actual &&
67 + test_should_contain "Error: \"min-used-limit-perc\" can only be used when scope is \"all\"" actual
68 +'
69 +
70 test_expect_success 'ResourceMgr enabled: swarm limit reset on map values' '
71 ipfs swarm limit peer:12D3KooWL7i1T9VSPeF8AgQApbyM51GNKZsYPvNvL347aMDmvNzG --reset --enc=json 2> reset &&
72 ipfs swarm limit peer:12D3KooWL7i1T9VSPeF8AgQApbyM51GNKZsYPvNvL347aMDmvNzG --enc=json 2> actual &&