summaryrefslogtreecommitdiffstats
path: root/vdslib
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@verizonmedia.com>2019-02-12 15:32:20 +0000
committerTor Brede Vekterli <vekterli@verizonmedia.com>2019-02-12 15:35:19 +0000
commita5f49846238184c86a58147053e0f4aa2edd9cd7 (patch)
tree118e30c6fa2358f7466b1be3f1f3b79805a53ab6 /vdslib
parentc675f4cd46994eea075ce47a66bf4400ccf8ada8 (diff)
Derive correct distribution partition spec for grouped clusters
Simplify code by emitting wildcards for all groups instead of using explicit leaf counts. Distribution code will distribute replicas evenly across all wildcarded groups. This fixes #8475
Diffstat (limited to 'vdslib')
-rw-r--r--vdslib/src/tests/state/grouptest.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/vdslib/src/tests/state/grouptest.cpp b/vdslib/src/tests/state/grouptest.cpp
index 282e91e860f..94694154b83 100644
--- a/vdslib/src/tests/state/grouptest.cpp
+++ b/vdslib/src/tests/state/grouptest.cpp
@@ -181,6 +181,12 @@ void
GroupTest::testStarConversion()
{
{
+ MAKEGROUP(g, "group", 0, "*");
+ std::vector<double> distribution = g.getDistribution(3);
+ CPPUNIT_ASSERT_EQUAL((size_t) 1, distribution.size());
+ CPPUNIT_ASSERT_EQUAL((double) 3, distribution[0]);
+ }
+ {
MAKEGROUP(g, "group", 0, "1|*|*");
std::vector<double> distribution = g.getDistribution(5);
CPPUNIT_ASSERT_EQUAL((size_t) 3, distribution.size());
@@ -245,6 +251,14 @@ GroupTest::testStarConversion()
CPPUNIT_ASSERT_EQUAL((double) 1, distribution[2]);
}
{
+ MAKEGROUP(g, "group", 0, "*|*|*");
+ std::vector<double> distribution = g.getDistribution(12); // Shall be evenly divided
+ CPPUNIT_ASSERT_EQUAL((size_t) 3, distribution.size());
+ CPPUNIT_ASSERT_EQUAL((double) 4, distribution[0]);
+ CPPUNIT_ASSERT_EQUAL((double) 4, distribution[1]);
+ CPPUNIT_ASSERT_EQUAL((double) 4, distribution[2]);
+ }
+ {
MAKEGROUP(g, "group", 0, "*|*|*|*");
std::vector<double> distribution = g.getDistribution(5);
CPPUNIT_ASSERT_EQUAL((size_t) 4, distribution.size());