// Agency output of .[0].arango.Plan.Collections std::shared_ptr> planCollections = R"=( { "someDb": { "10000001": { "name": "prototype", "replicationFactor": 3, "shards": { "s11": [ "PRMR-AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA", "PRMR-BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB", "PRMR-CCCCCCCC-CCCC-CCCC-CCCC-CCCCCCCCCCCC" ], "s12": [ "PRMR-AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA", "PRMR-BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB", "PRMR-CCCCCCCC-CCCC-CCCC-CCCC-CCCCCCCCCCCC" ], "s13": [ "PRMR-AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA", "PRMR-BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB", "PRMR-CCCCCCCC-CCCC-CCCC-CCCC-CCCCCCCCCCCC" ], "s14": [ "PRMR-AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA", "PRMR-BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB", "PRMR-CCCCCCCC-CCCC-CCCC-CCCC-CCCCCCCCCCCC" ] } }, "10000002": { "name": "follower", "replicationFactor": 3, "distributeShardsLike": "10000001", "shards": { "s21": [ "PRMR-AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA", "PRMR-DDDDDDDD-DDDD-DDDD-DDDD-DDDDDDDDDDDD", "PRMR-BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB" ], "s22": [ "PRMR-AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA", "PRMR-BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB", "PRMR-DDDDDDDD-DDDD-DDDD-DDDD-DDDDDDDDDDDD" ], "s23": [ "PRMR-AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA", "PRMR-CCCCCCCC-CCCC-CCCC-CCCC-CCCCCCCCCCCC", "PRMR-DDDDDDDD-DDDD-DDDD-DDDD-DDDDDDDDDDDD" ], "s24": [ "PRMR-AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA", "PRMR-DDDDDDDD-DDDD-DDDD-DDDD-DDDDDDDDDDDD", "PRMR-CCCCCCCC-CCCC-CCCC-CCCC-CCCCCCCCCCCC" ] } } } } )="_vpack; // Agency output of .[0].arango.Supervision.Health // Coordinators are unused in the test, but must be ignored std::shared_ptr> supervisionHealth4Healthy0Bad = R"=( { "CRDN-976e3d6a-9148-4ece-99e9-326dc69834b2": { }, "PRMR-AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA": { "Status": "GOOD" }, "CRDN-94ea8912-ff22-43d0-a005-bfc87f22709b": { }, "CRDN-34b46cab-6f06-40a8-ac24-5eec1cf78f67": { }, "PRMR-BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB": { "Status": "GOOD" }, "PRMR-CCCCCCCC-CCCC-CCCC-CCCC-CCCCCCCCCCCC": { "Status": "GOOD" }, "PRMR-DDDDDDDD-DDDD-DDDD-DDDD-DDDDDDDDDDDD": { "Status": "GOOD" } } )="_vpack; std::map>> expectedResultsWithFollowerOrder{ {"10000002", {{// rename distributeShardsLike to repairingDistributeShardsLike BeginRepairsOperation{ _database = "someDb", _collectionId = "10000002", _collectionName = "follower", _protoCollectionId = "10000001", _protoCollectionName = "prototype", _collectionReplicationFactor = 3, _protoReplicationFactor = 3, _renameDistributeShardsLike = true }, // After a move, the new follower (here PRMR-C) will appear *last* // in the list, while the old (here PRMR-D) is removed. Thus the // order should be correct after this move, no FixServerOrder // should be needed for s21! MoveShardOperation{ _database = "someDb", _collectionId = "10000002", _collectionName = "follower", _shard = "s21", _from = "PRMR-DDDDDDDD-DDDD-DDDD-DDDD-DDDDDDDDDDDD", _to = "PRMR-CCCCCCCC-CCCC-CCCC-CCCC-CCCCCCCCCCCC", _isLeader = false }, // No FixServerOrder should be necessary for s22, either. MoveShardOperation{ _database = "someDb", _collectionId = "10000002", _collectionName = "follower", _shard = "s22", _from = "PRMR-DDDDDDDD-DDDD-DDDD-DDDD-DDDDDDDDDDDD", _to = "PRMR-CCCCCCCC-CCCC-CCCC-CCCC-CCCCCCCCCCCC", _isLeader = false }, // In contrast, for both s23 and s24 the order is wrong afterwards // and must be fixed! MoveShardOperation{ _database = "someDb", _collectionId = "10000002", _collectionName = "follower", _shard = "s23", _from = "PRMR-DDDDDDDD-DDDD-DDDD-DDDD-DDDDDDDDDDDD", _to = "PRMR-BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB", _isLeader = false }, FixServerOrderOperation{ _database = "someDb", _collectionId = "10000002", _collectionName = "follower", _protoCollectionId = "10000001", _protoCollectionName = "prototype", _shard = "s23", _protoShard = "s13", _leader = "PRMR-AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA", _followers = { "PRMR-CCCCCCCC-CCCC-CCCC-CCCC-CCCCCCCCCCCC", "PRMR-BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB" }, _protoFollowers = { "PRMR-BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB", "PRMR-CCCCCCCC-CCCC-CCCC-CCCC-CCCCCCCCCCCC" } }, MoveShardOperation{ _database = "someDb", _collectionId = "10000002", _collectionName = "follower", _shard = "s24", _from = "PRMR-DDDDDDDD-DDDD-DDDD-DDDD-DDDDDDDDDDDD", _to = "PRMR-BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB", _isLeader = false }, FixServerOrderOperation{ _database = "someDb", _collectionId = "10000002", _collectionName = "follower", _protoCollectionId = "10000001", _protoCollectionName = "prototype", _shard = "s24", _protoShard = "s14", _leader = "PRMR-AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA", _followers = { "PRMR-CCCCCCCC-CCCC-CCCC-CCCC-CCCCCCCCCCCC", "PRMR-BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB" }, _protoFollowers = { "PRMR-BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB", "PRMR-CCCCCCCC-CCCC-CCCC-CCCC-CCCCCCCCCCCC" } }, FinishRepairsOperation{ _database = "someDb", _collectionId = "10000002", _collectionName = "follower", _protoCollectionId = "10000001", _protoCollectionName = "prototype", _shards = { std::make_tuple( "s21", "s11", {"PRMR-AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA", "PRMR-BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB", "PRMR-CCCCCCCC-CCCC-CCCC-CCCC-CCCCCCCCCCCC"}), std::make_tuple( "s22", "s12", { "PRMR-AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA", "PRMR-BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB", "PRMR-CCCCCCCC-CCCC-CCCC-CCCC-CCCCCCCCCCCC" }), std::make_tuple( "s23", "s13", { "PRMR-AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA", "PRMR-BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB", "PRMR-CCCCCCCC-CCCC-CCCC-CCCC-CCCCCCCCCCCC" }), std::make_tuple( "s24", "s14", { "PRMR-AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA", "PRMR-BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB", "PRMR-CCCCCCCC-CCCC-CCCC-CCCC-CCCCCCCCCCCC" }) }, _replicationFactor = 3 }}}} };