DefaultXpipeMetaManager extends AbstractMetaManager implements XpipeMetaManager { @Override public List<ClusterMeta> getSpecificActiveDcClusters(String currentDc, String clusterActiveDc) { DcMeta directDcMeta = getDirectDcMeta(currentDc); if(directDcMeta == null){ throw new IllegalArgumentException(String.format("can not find currentDc %s, %s", currentDc, clusterActiveDc)); } List<ClusterMeta> result = new LinkedList<>(); directDcMeta.getClusters().forEach((clusterId, clusterMeta) -> { if(clusterActiveDc.equalsIgnoreCase(clusterMeta.getActiveDc())){ result.add(clone(clusterMeta)); } }); return result; } DefaultXpipeMetaManager(XpipeMeta xpipeMeta); private  DefaultXpipeMetaManager(String fileName); static XpipeMetaManager buildFromFile(String fileName); static XpipeMetaManager buildFromMeta(XpipeMeta xpipeMeta); XpipeMeta load(String fileName); @Override String getActiveDc(String clusterId, String shardId); @Override Set<String> getBackupDcs(String clusterId, String shardId); @Override Set<String> getRelatedDcs(String clusterId, String shardId); @Override Set<String> getDcClusters(String dc); @Override ClusterMeta getClusterMeta(String dc, String clusterId); @Override ClusterType getClusterType(String clusterId); ClusterMeta getDirectClusterMeta(String dc, String clusterId); @Override ShardMeta getShardMeta(String dc, String clusterId, String shardId); @SuppressWarnings("unchecked") @Override List<KeeperMeta> getKeepers(String dc, String clusterId, String shardId); @SuppressWarnings("unchecked") @Override List<RedisMeta> getRedises(String dc, String clusterId, String shardId); @Override KeeperMeta getKeeperActive(String dc, String clusterId, String shardId); @Override List<KeeperMeta> getKeeperBackup(String dc, String clusterId, String shardId); @Override MetaDesc findMetaDesc(HostPort hostPort); @Override Pair<String, RedisMeta> getRedisMaster(String clusterId, String shardId); @Override boolean noneKeeperActive(String dc, String clusterId, String shardId); @Override void setSurviveKeepers(String dcId, String clusterId, String shardId, List<KeeperMeta> surviveKeepers); @Override boolean updateKeeperActive(String dc, String clusterId, String shardId, KeeperMeta activeKeeper); String getFileName(); @Override List<MetaServerMeta> getMetaServers(String dc); @Override ZkServerMeta getZkServerMeta(String dc); @Override Set<String> getDcs(); @Override boolean updateRedisMaster(String dc, String clusterId, String shardId, RedisMeta redisMaster); @Override boolean dcExists(String dc); @Override KeeperContainerMeta getKeeperContainer(String dc, KeeperMeta keeperMeta); @Override void update(DcMeta dcMeta); @Override void update(String dcId, ClusterMeta clusterMeta); @Override ClusterMeta removeCluster(String dcId, String clusterId); @Override DcMeta getDcMeta(String dcId); @Override String getDcZone(String dcId); @Override List<KeeperMeta> getAllSurviceKeepers(String dcId, String clusterId, String shardId); @Override boolean hasCluster(String dcId, String clusterId); @Override boolean hasShard(String dcId, String clusterId, String shardId); @Override SentinelMeta getSentinel(String dc, String clusterId, String shardId); @Override String getSentinelMonitorName(String dc, String clusterId, String shardId); @Override void primaryDcChanged(String dc, String clusterId, String shardId, String newPrimaryDc); @Override List<RouteMeta> routes(String currentDc, String tag); @Override RouteMeta randomRoute(String currentDc, String tag, Integer orgId, String dstDc); @Override List<ClusterMeta> getSpecificActiveDcClusters(String currentDc, String clusterActiveDc); @Override String toString();  }
@Test public void testGetSpecificActiveDcClusters(){ List<ClusterMeta> specificActiveDcClusters1 = metaManager.getSpecificActiveDcClusters(dcBak2, dc); Assert.assertEquals(2, specificActiveDcClusters1.size()); Assert.assertEquals(clusterId1, specificActiveDcClusters1.get(0).getId()); Assert.assertEquals(clusterId2, specificActiveDcClusters1.get(1).getId()); List<ClusterMeta> specificActiveDcClusters2 = metaManager.getSpecificActiveDcClusters(dcBak2, dcBak1); Assert.assertEquals(1, specificActiveDcClusters2.size()); Assert.assertEquals("cluster3", specificActiveDcClusters2.get(0).getId()); List<ClusterMeta> specificActiveDcClusters3 = metaManager.getSpecificActiveDcClusters(dcBak2, "empty"); Assert.assertEquals(0, specificActiveDcClusters3.size()); }