//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void shouldValidateReadReplicaAttrMapNullValues() public virtual void ShouldValidateReadReplicaAttrMapNullValues() { // given IDictionary <MemberId, ReadReplicaInfo> mockedRRs = new Dictionary <MemberId, ReadReplicaInfo>(); MemberId validMemberId = new MemberId(System.Guid.randomUUID()); MemberId invalidMemberId = new MemberId(System.Guid.randomUUID()); ReadReplicaInfo validReadReplicaInfo = GenerateReadReplicaInfo(); ReadReplicaInfo invalidReadReplicaInfo = GenerateReadReplicaInfo(); mockedRRs[validMemberId] = validReadReplicaInfo; mockedRRs[invalidMemberId] = invalidReadReplicaInfo; IDictionary <MemberId, ISet <string> > nullAttrValues = singletonMap(invalidMemberId, singleton(READ_REPLICA_TRANSACTION_SERVER_ADDRESS_MAP)); MockReadReplicaAttributes(mockedRRs, emptySet(), nullAttrValues); // when AssertableLogProvider logProvider = new AssertableLogProvider(); Log log = logProvider.getLog(this.GetType()); IDictionary <MemberId, ReadReplicaInfo> rrMap = HazelcastClusterTopology.ReadReplicas(_hzInstance, log); // then assertEquals(singletonMap(validMemberId, validReadReplicaInfo), rrMap); logProvider.RawMessageMatcher().assertContains(Matchers.allOf(Matchers.containsString("Missing attribute %s for read replica"))); }
/// <summary> /// Given a hazelcast member id and a set of non-null attribute maps, this method builds a discovery representation of a read replica /// (i.e. `Pair<MemberId,ReadReplicaInfo>`). Any missing attributes which are missing for a given hazelcast member id are logged and this /// method will return null. /// </summary> private static Pair <MemberId, ReadReplicaInfo> BuildReadReplicaFromAttrMap(string hzId, IDictionary <string, IMap <string, string> > simpleAttrMaps, MultiMap <string, string> serverGroupsMap, Log log) { //JAVA TO C# CONVERTER TODO TASK: Most Java stream collectors are not converted by Java to C# Converter: IDictionary <string, string> memberAttrs = simpleAttrMaps.SetOfKeyValuePairs().Select(e => Pair.of(e.Key, e.Value.get(hzId))).Where(p => HasAttribute(p, hzId, log)).collect(CollectorsUtil.pairsToMap()); //JAVA TO C# CONVERTER TODO TASK: There is no .NET equivalent to the java.util.Collection 'containsAll' method: if (!memberAttrs.Keys.containsAll(RrAttrKeys)) { return(null); } ICollection <string> memberServerGroups = serverGroupsMap.get(hzId); if (memberServerGroups == null) { log.Warn("Missing attribute %s for read replica with hz id %s", SERVER_GROUPS_MULTIMAP, hzId); return(null); } ClientConnectorAddresses boltAddresses = ClientConnectorAddresses.FromString(memberAttrs[READ_REPLICA_BOLT_ADDRESS_MAP]); //JAVA TO C# CONVERTER TODO TASK: Method reference constructor syntax is not converted by Java to C# Converter: AdvertisedSocketAddress catchupAddress = socketAddress(memberAttrs[READ_REPLICA_TRANSACTION_SERVER_ADDRESS_MAP], AdvertisedSocketAddress::new); MemberId memberId = new MemberId(System.Guid.Parse(memberAttrs[READ_REPLICA_MEMBER_ID_MAP])); string memberDbName = memberAttrs[READ_REPLICAS_DB_NAME_MAP]; ISet <string> serverGroupSet = asSet(memberServerGroups); ReadReplicaInfo rrInfo = new ReadReplicaInfo(boltAddresses, catchupAddress, serverGroupSet, memberDbName); return(Pair.of(memberId, rrInfo)); }
internal SharedDiscoveryReadReplicaClient(SharedDiscoveryService sharedDiscoveryService, Config config, MemberId memberId, LogProvider logProvider) { this._sharedDiscoveryService = sharedDiscoveryService; this._dbName = config.Get(CausalClusteringSettings.database); //JAVA TO C# CONVERTER TODO TASK: Method reference constructor syntax is not converted by Java to C# Converter: this._addresses = new ReadReplicaInfo(ClientConnectorAddresses.ExtractFromConfig(config), socketAddress(config.Get(CausalClusteringSettings.transaction_advertised_address).ToString(), AdvertisedSocketAddress::new), _dbName); this._memberId = memberId; this._log = logProvider.getLog(this.GetType()); }
internal void RegisterReadReplica(SharedDiscoveryReadReplicaClient client) { ReadReplicaInfo previousRR = _readReplicas.putIfAbsent(client.MemberId, client.ReadReplicainfo); if (previousRR == null) { NotifyCoreClients(); } }
public override bool Equals(object o) { if (this == o) { return(true); } if (o == null || this.GetType() != o.GetType()) { return(false); } ReadReplicaInfo that = ( ReadReplicaInfo )o; return(Objects.Equals(_catchupServerAddress, that._catchupServerAddress) && Objects.Equals(_clientConnectorAddresses, that._clientConnectorAddresses) && Objects.Equals(_groups, that._groups) && Objects.Equals(_dbName, that._dbName)); }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void shouldCollectReadReplicasAsMap() public virtual void ShouldCollectReadReplicasAsMap() { // given MemberId memberId = new MemberId(System.Guid.randomUUID()); ReadReplicaInfo readReplicaInfo = GenerateReadReplicaInfo(); IDictionary <MemberId, ReadReplicaInfo> mockedRRs = singletonMap(memberId, readReplicaInfo); MockReadReplicaAttributes(mockedRRs); // when IDictionary <MemberId, ReadReplicaInfo> rrMap = HazelcastClusterTopology.ReadReplicas(_hzInstance, NullLog.Instance); // then assertEquals(mockedRRs, rrMap); }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void shouldValidateNullReadReplicaAttrMaps() public virtual void ShouldValidateNullReadReplicaAttrMaps() { // given MemberId memberId = new MemberId(System.Guid.randomUUID()); ReadReplicaInfo readReplicaInfo = GenerateReadReplicaInfo(); MockReadReplicaAttributes(singletonMap(memberId, readReplicaInfo), singleton(READ_REPLICAS_DB_NAME_MAP), emptyMap()); // when AssertableLogProvider logProvider = new AssertableLogProvider(); Log log = logProvider.getLog(this.GetType()); IDictionary <MemberId, ReadReplicaInfo> rrMap = HazelcastClusterTopology.ReadReplicas(_hzInstance, log); // then assertEquals(emptyMap(), rrMap); logProvider.FormattedMessageMatcher().assertContains("Some, but not all, of the read replica attribute maps are null"); }
private void GenerateReadReplicaAttributes(System.Guid hzId, MemberId memberId, ReadReplicaInfo readReplicaInfo, ISet <string> missingAttrsMaps, ISet <string> nullAttrs) { IDictionary <string, System.Func <MemberId, ReadReplicaInfo, string> > attributeFactories = new Dictionary <string, System.Func <MemberId, ReadReplicaInfo, string> >(); attributeFactories[READ_REPLICAS_DB_NAME_MAP] = (ignored, rr) => rr.DatabaseName; attributeFactories[READ_REPLICA_TRANSACTION_SERVER_ADDRESS_MAP] = (ignored, rr) => rr.CatchupServer.ToString(); attributeFactories[READ_REPLICA_MEMBER_ID_MAP] = (mId, ignored) => mId.Uuid.ToString(); attributeFactories[READ_REPLICA_BOLT_ADDRESS_MAP] = (ignored, rr) => rr.connectors().ToString(); attributeFactories.SetOfKeyValuePairs().Where(e => !missingAttrsMaps.Contains(e.Key)).ForEach(e => { string attrValue = nullAttrs.Contains(e.Key) ? null : e.Value.apply(memberId, readReplicaInfo); MockReadReplicaAttribute(e.Key, hzId, attrValue); }); }
public static Config ConfigFor(ReadReplicaInfo readReplicaInfo) { return(Config.builder().withSetting("dbms.connector.bolt.listen_address", readReplicaInfo.Connectors().boltAddress().ToString()).withSetting("dbms.connector.bolt.enabled", true.ToString()).withSetting(CausalClusteringSettings.transaction_advertised_address, readReplicaInfo.CatchupServer.ToString()).withSetting(CausalClusteringSettings.server_groups, string.join(",", readReplicaInfo.Groups())).withSetting(CausalClusteringSettings.database, readReplicaInfo.DatabaseName).build()); }