diff options
author | Tor Egge <Tor.Egge@broadpark.no> | 2020-11-03 15:15:20 +0100 |
---|---|---|
committer | Tor Egge <Tor.Egge@broadpark.no> | 2020-11-03 15:59:45 +0100 |
commit | 288daaf3cee2deac1a40fc996450856ac4322396 (patch) | |
tree | abc7d4de2f89cefd2ae143f25dd9003f1531f8b3 /vdslib/src/tests/distribution/distributiontest.cpp | |
parent | b5cd73513c0a8c701829edc572de5095897c818b (diff) |
Remove diskstate from vdslib.
Diffstat (limited to 'vdslib/src/tests/distribution/distributiontest.cpp')
-rw-r--r-- | vdslib/src/tests/distribution/distributiontest.cpp | 173 |
1 files changed, 0 insertions, 173 deletions
diff --git a/vdslib/src/tests/distribution/distributiontest.cpp b/vdslib/src/tests/distribution/distributiontest.cpp index 5a337433bdb..d9ebba39916 100644 --- a/vdslib/src/tests/distribution/distributiontest.cpp +++ b/vdslib/src/tests/distribution/distributiontest.cpp @@ -280,30 +280,6 @@ struct MyTest { } return result; } - std::vector<uint16_t> getDiskCounts(uint16_t node) const { - std::vector<uint16_t> result(3, 0); - for (uint32_t i=0; i<_bucketsToTest; ++i) { - document::BucketId bucket(16, i); - std::vector<uint16_t> nodes; - ClusterState clusterState(_state); - _distribution->getIdealNodes( - *_nodeType, clusterState, bucket, nodes, - _upStates, _redundancy); - for (uint32_t j=0; j<nodes.size(); ++j) { - if (nodes[j] == node) { - const NodeState& nodeState(clusterState.getNodeState( - Node(NodeType::STORAGE, node))); - // If disk was down, bucket should not map to this - // node at all - uint16_t disk = _distribution->getIdealDisk( - nodeState, node, bucket, - Distribution::IDEAL_DISK_EVEN_IF_DOWN); - ++result[disk]; - } - } - } - return result; - } }; MyTest::MyTest() @@ -350,13 +326,6 @@ std::vector<uint16_t> createNodeCountList(const std::string& source, EXPECT_EQ(exp123, cnt123); \ } -#define ASSERT_BUCKET_DISK_COUNTS(node, test, result) \ -{ \ - std::vector<uint16_t> cnt123(test.getDiskCounts(node)); \ - std::vector<uint16_t> exp123(createNodeCountList(result, cnt123)); \ - EXPECT_EQ(exp123, cnt123); \ -} - TEST(DistributionTest, test_down) { ASSERT_BUCKET_NODE_COUNTS( @@ -370,14 +339,6 @@ TEST(DistributionTest, test_down) "0:+ 1:+ 2:+ 3:+ 8:+ 9:+"); } -TEST(DistributionTest, testDiskDown) -{ - ASSERT_BUCKET_DISK_COUNTS( - 2, - MyTest().state("storage:10 .2.d:3 .2.d.0:d"), - "1:+ 2:+"); -} - TEST(DistributionTest, test_serialize_deserialize) { MyTest t1; @@ -386,14 +347,6 @@ TEST(DistributionTest, test_serialize_deserialize) EXPECT_EQ(t1.getNodeCounts(), t2.getNodeCounts()); } -TEST(DistributionTest, test_disk_down_maintenance) -{ - ASSERT_BUCKET_DISK_COUNTS( - 2, - MyTest().state("storage:10 .2.s:m .2.d:3 .2.d.0:d").upStates("um"), - "1:+ 2:+"); -} - TEST(DistributionTest, test_initializing) { ASSERT_BUCKET_NODE_COUNTS( @@ -448,132 +401,6 @@ TEST(DistributionTest, testHighSplitBit) EXPECT_EQ(ost1.str(), ost2.str()); } -TEST(DistributionTest, test_disk_capacity_weights) -{ - uint16_t num_disks = 10; - std::vector<double> capacities(num_disks); - - RandomGen rg(13); - std::ostringstream ost; - ost << "d:" << num_disks; - for (unsigned i = 0; i < num_disks; ++i) { - capacities[i] = rg.nextDouble(); - ost << " d." << i << ".c:" << capacities[i]; - } - - NodeState nodeState(ost.str(), &NodeType::STORAGE); - - Distribution distr(Distribution::getDefaultDistributionConfig(2, 3)); - - for(int j=0; j < 10; ++j) { - std::vector<float> diskDist(num_disks); - for(int i=0; i < 1000; ++i) { - document::BucketId id(16, i); - int index = distr.getPreferredAvailableDisk(nodeState, j, id); - diskDist[index]+=1; - } - - //normalization - for (unsigned i = 0; i < num_disks; ++i) { - diskDist[i] /= capacities[i]; - } - - std::sort(diskDist.begin(), diskDist.end()); - - double avg=0.0; - for (unsigned i = 0; i < num_disks; ++i) { - avg+=diskDist[i]; - } - avg /= num_disks; - - double skew = (diskDist[num_disks-1]-avg)/(diskDist[num_disks-1]); - - EXPECT_LT(skew, 0.3); - } -} - -TEST(DistributionTest, test_disk_skew_local) -{ - Distribution distr(Distribution::getDefaultDistributionConfig(2, 3, Distribution::MODULO_INDEX)); - std::vector<float> diskDist(100); - NodeState nodeState; - nodeState.setDiskCount(100); - for(int i=0; i < 65536; i++) { - document::BucketId id(16, i); - int index = distr.getPreferredAvailableDisk(nodeState, 7, id); - diskDist[index]+=1; - } - - std::sort(diskDist.begin(), diskDist.end()); - - EXPECT_LT((diskDist[99]-diskDist[0])/(diskDist[99]), 0.05); -} - -TEST(DistributionTest, test_disk_skew_global) -{ - uint16_t num_disks = 10; - uint16_t num_nodes = 10; - Distribution distr(Distribution::getDefaultDistributionConfig(2, num_nodes, Distribution::MODULO_INDEX)); - std::vector<std::vector<float> > diskDist(num_nodes, std::vector<float>(num_disks)); - NodeState nodeState; - nodeState.setDiskCount(num_disks); - for(uint16_t idx=0; idx < num_nodes; idx++) { - for(int i=0; i < 1000; i++) { - document::BucketId id(16, i); - int diskIndex = distr.getPreferredAvailableDisk(nodeState, idx, id); - diskDist[idx][diskIndex]+=1; - } - } - - std::vector<float> diskDist2; - for(uint16_t idx=0; idx < num_nodes; idx++) { - for(uint16_t d=0; d < num_disks; d++) { - diskDist2.push_back(diskDist[idx][d]); - } - } - - std::sort(diskDist2.begin(), diskDist2.end()); - - double skew = (diskDist2[num_nodes*num_disks-1]-diskDist2[0])/(diskDist2[num_nodes*num_disks-1]); - - EXPECT_LT(skew, 0.2); -} - -TEST(DistributionTest, test_disk_intersection) -{ - uint16_t num_disks = 8; - uint16_t num_nodes = 20; - float max = 0; - Distribution distr(Distribution::getDefaultDistributionConfig(2, num_nodes, Distribution::MODULO_INDEX)); - - NodeState nodeState; - nodeState.setDiskCount(num_disks); - - for(uint16_t i=0; i < num_nodes-1; i++) { - for(uint16_t j=i+1; j < num_nodes; j++) { - uint64_t count =0; -//std::cerr << "Comparing node " << i << " and node " << j << ":\n"; - for(int b=0; b < 1000; b++) { - document::BucketId id(16, b); - int idxI = distr.getPreferredAvailableDisk(nodeState, i, id); - int idxJ = distr.getPreferredAvailableDisk(nodeState, j, id); -//if (b < 50) std::cerr << " " << b << ": " << idxI << ", " << idxJ << "\n"; - if(idxI == idxJ){ - count++; - } - } - if(count > max){ - max = count; - } - } - } - if (max / 1000 > 0.5) { - std::ostringstream ost; - ost << "Value of " << max << " / " << 1000 << " is more than 0.5"; - FAIL() << ost.str(); - } -} - TEST(DistributionTest, test_distribution) { const int min_buckets = 1024*64; |