internal FakeTopologyService(ICollection <MemberId> cores, ICollection <MemberId> replicas, MemberId myself, RoleInfo myselfRole) { this._myself = myself; _clusterId = new ClusterId(System.Guid.randomUUID()); _roles = new Dictionary <MemberId, RoleInfo>(); _coreMembers = new Dictionary <MemberId, CoreServerInfo>(); foreach (MemberId coreMemberId in cores) { CoreServerInfo coreServerInfo = coreServerInfo(_dbName); _coreMembers[coreMemberId] = coreServerInfo; _roles[coreMemberId] = RoleInfo.FOLLOWER; } _replicaMembers = new Dictionary <MemberId, ReadReplicaInfo>(); foreach (MemberId replicaMemberId in replicas) { ReadReplicaInfo readReplicaInfo = readReplicaInfo(_dbName); _replicaMembers[replicaMemberId] = readReplicaInfo; _roles[replicaMemberId] = RoleInfo.READ_REPLICA; } if (RoleInfo.READ_REPLICA.Equals(myselfRole)) { _replicaMembers[myself] = ReadReplicaInfo(_dbName); _roles[myself] = RoleInfo.READ_REPLICA; } else { _coreMembers[myself] = CoreServerInfo(_dbName); _roles[myself] = RoleInfo.FOLLOWER; } _roles[myself] = myselfRole; }
private static ReadReplicaInfo ReadReplicaInfo(params string[] groupNames) { ClientConnectorAddresses clientConnectorAddresses = new ClientConnectorAddresses(Collections.emptyList()); AdvertisedSocketAddress catchupServerAddress = new AdvertisedSocketAddress("hostname", 2468); ISet <string> groups = new HashSet <string>(Arrays.asList(groupNames)); ReadReplicaInfo readReplicaInfo = new ReadReplicaInfo(clientConnectorAddresses, catchupServerAddress, groups, "dbName"); return(readReplicaInfo); }
internal static ReadReplicaTopology FakeReadReplicaTopology(IList <string> wanted, MemberId[] memberIds, IList <string> unwanted, int unwantedNumber) { IDictionary <MemberId, ReadReplicaInfo> readReplicas = new Dictionary <MemberId, ReadReplicaInfo>(); int offset = 0; foreach (MemberId memberId in memberIds) { readReplicas[memberId] = new ReadReplicaInfo(new ClientConnectorAddresses(singletonList(new ClientConnectorAddresses.ConnectorUri(ClientConnectorAddresses.Scheme.bolt, new AdvertisedSocketAddress("localhost", 11000 + offset)))), new AdvertisedSocketAddress("localhost", 10000 + offset), new HashSet <string>(wanted), "default"); offset++; } for (int i = 0; i < unwantedNumber; i++) { readReplicas[new MemberId(System.Guid.randomUUID())] = new ReadReplicaInfo(new ClientConnectorAddresses(singletonList(new ClientConnectorAddresses.ConnectorUri(ClientConnectorAddresses.Scheme.bolt, new AdvertisedSocketAddress("localhost", 11000 + offset)))), new AdvertisedSocketAddress("localhost", 10000 + offset), new HashSet <string>(unwanted), "default"); offset++; } return(new ReadReplicaTopology(readReplicas)); }
public override RawIterator <object[], ProcedureException> Apply(Context ctx, object[] input, ResourceTracker resourceTracker) { IDictionary <MemberId, RoleInfo> roleMap = _topologyService.allCoreRoles(); IList <ReadWriteEndPoint> endpoints = new List <ReadWriteEndPoint>(); CoreTopology coreTopology = _topologyService.allCoreServers(); ISet <MemberId> coreMembers = coreTopology.Members().Keys; foreach (MemberId memberId in coreMembers) { Optional <CoreServerInfo> coreServerInfo = coreTopology.find(memberId); if (coreServerInfo.Present) { CoreServerInfo info = coreServerInfo.get(); RoleInfo role = roleMap.getOrDefault(memberId, RoleInfo.UNKNOWN); endpoints.Add(new ReadWriteEndPoint(info.Connectors(), role, memberId.Uuid, new IList <string> { info.Groups() }, info.DatabaseName)); } else { _log.debug("No Address found for " + memberId); } } foreach (KeyValuePair <MemberId, ReadReplicaInfo> readReplica in _topologyService.allReadReplicas().members().SetOfKeyValuePairs()) { ReadReplicaInfo readReplicaInfo = readReplica.Value; endpoints.Add(new ReadWriteEndPoint(readReplicaInfo.Connectors(), RoleInfo.READ_REPLICA, readReplica.Key.Uuid, new IList <string> { readReplicaInfo.Groups() }, readReplicaInfo.DatabaseName)); } endpoints.sort(comparing(o => o.addresses().ToString())); return(map(endpoint => new object[] { endpoint.memberId().ToString(), endpoint.addresses().uriList().Select(URI.toString).ToList(), endpoint.role().name(), endpoint.groups(), endpoint.dbName() }, asRawIterator(endpoints.GetEnumerator()))); }