3 Commits

Author SHA1 Message Date
Paweł Gronowski
b7e7d3f065 libnetwork: Remove montanaflynn/stats dependency
Replace the stats library usage in cluster_test.go with a small inline
distributionStats helper that computes mean, stddev, min, and max using
stdlib math.

The library was only used in a single test file and pulled in ~4k of
vendored code for trivial arithmetic.

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2026-04-16 12:15:44 +02:00
Cory Snider
ac5f464649 libnetwork/networkdb: improve quality of randomness
The property test for the mRandomNodes function revealed that it may
sometimes pick out a sample of fewer than m nodes even when the number
of nodes to pick from (excluding the local node) is >= m. Rewrite it
using a random shuffle or permutation so that it always picks a
uniformly-distributed sample of the requested size whenever the
population is large enough.

Signed-off-by: Cory Snider <csnider@mirantis.com>
2025-07-15 18:07:59 -04:00
Cory Snider
5799deb853 libnetwork/networkdb: test quality of mRandomNodes
TestNetworkDBAlwaysConverges will occasionally find a failure where one
entry is missing on one node even after waiting a full five minutes. One
possible explanation is that the selection of nodes to gossip with is
biased in some way. Test that the mRandomNodes function picks a
uniformly distributed sample of node IDs of sufficient length.

The new test reveals that mRandomNodes may sometimes pick out a sample
of fewer than m nodes even when the number of nodes to pick from
(excluding the local node) is >= m. Put the test behind an xfail tag so
it is opt-in to run, without interfering with CI or bisecting.

Signed-off-by: Cory Snider <csnider@mirantis.com>
2025-07-15 18:07:54 -04:00