//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void shouldBootstrapWhenBootstrappable() throws Throwable //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: public virtual void ShouldBootstrapWhenBootstrappable() { // given //JAVA TO C# CONVERTER TODO TASK: Method reference arbitrary object instance method syntax is not converted by Java to C# Converter: IDictionary <MemberId, CoreServerInfo> members = IntStream.range(0, _minCoreHosts).mapToObj(i => Pair.of(new MemberId(System.Guid.randomUUID()), TestTopology.addressesForCore(i, false))).collect(Collectors.toMap(Pair::first, Pair::other)); CoreTopology bootstrappableTopology = new CoreTopology(null, true, members); CoreTopologyService topologyService = mock(typeof(CoreTopologyService)); when(topologyService.LocalCoreServers()).thenReturn(bootstrappableTopology); when(topologyService.SetClusterId(any(), eq("default"))).thenReturn(true); CoreSnapshot snapshot = mock(typeof(CoreSnapshot)); when(_coreBootstrapper.bootstrap(any())).thenReturn(snapshot); ClusterBinder binder = ClusterBinder(new StubSimpleStorage <ClusterId>(this), topologyService); // when BoundState boundState = binder.BindToCluster(); // then verify(_coreBootstrapper).bootstrap(any()); Optional <ClusterId> clusterId = binder.Get(); assertTrue(clusterId.Present); verify(topologyService).setClusterId(clusterId.get(), "default"); assertTrue(boundState.Snapshot().Present); assertEquals(boundState.Snapshot().get(), snapshot); }
private IList <Endpoint> RouteEndpoints(string dbName) { CoreTopology filtered = _topologyService.allCoreServers().filterTopologyByDb(dbName); Stream <CoreServerInfo> filteredCoreMemberInfo = filtered.Members().Values.stream(); return(filteredCoreMemberInfo.map(extractBoltAddress()).map(Endpoint.route).collect(Collectors.toList())); }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void ttlShouldBeInSeconds() throws Exception //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: public virtual void TtlShouldBeInSeconds() { // given //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final org.neo4j.causalclustering.discovery.CoreTopologyService coreTopologyService = mock(org.neo4j.causalclustering.discovery.CoreTopologyService.class); CoreTopologyService coreTopologyService = mock(typeof(CoreTopologyService)); LeaderLocator leaderLocator = mock(typeof(LeaderLocator)); //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final org.neo4j.causalclustering.discovery.CoreTopology clusterTopology = new org.neo4j.causalclustering.discovery.CoreTopology(clusterId, false, new java.util.HashMap<>()); CoreTopology clusterTopology = new CoreTopology(_clusterId, false, new Dictionary <MemberId, CoreServerInfo>()); when(coreTopologyService.LocalCoreServers()).thenReturn(clusterTopology); when(coreTopologyService.LocalReadReplicas()).thenReturn(new ReadReplicaTopology(emptyMap())); // set the TTL in minutes Config.augment(cluster_routing_ttl, "10m"); //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final LegacyGetServersProcedure proc = new LegacyGetServersProcedure(coreTopologyService, leaderLocator, config, getInstance()); LegacyGetServersProcedure proc = new LegacyGetServersProcedure(coreTopologyService, leaderLocator, Config, Instance); // when IList <object[]> results = new IList <object[]> { proc.Apply(null, new object[0], null) }; // then object[] rows = results[0]; long ttlInSeconds = ( long )rows[0]; assertEquals(600, ttlInSeconds); }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void shouldProvideReaderAndRouterForSingleCoreSetup() throws Exception //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: public virtual void ShouldProvideReaderAndRouterForSingleCoreSetup() { // given //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final org.neo4j.causalclustering.discovery.CoreTopologyService coreTopologyService = mock(org.neo4j.causalclustering.discovery.CoreTopologyService.class); CoreTopologyService coreTopologyService = mock(typeof(CoreTopologyService)); LeaderLocator leaderLocator = mock(typeof(LeaderLocator)); IDictionary <MemberId, CoreServerInfo> coreMembers = new Dictionary <MemberId, CoreServerInfo>(); coreMembers[member(0)] = addressesForCore(0, false); //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final org.neo4j.causalclustering.discovery.CoreTopology clusterTopology = new org.neo4j.causalclustering.discovery.CoreTopology(clusterId, false, coreMembers); CoreTopology clusterTopology = new CoreTopology(_clusterId, false, coreMembers); when(coreTopologyService.LocalCoreServers()).thenReturn(clusterTopology); when(coreTopologyService.LocalReadReplicas()).thenReturn(new ReadReplicaTopology(emptyMap())); //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final LegacyGetServersProcedure proc = new LegacyGetServersProcedure(coreTopologyService, leaderLocator, config, getInstance()); LegacyGetServersProcedure proc = new LegacyGetServersProcedure(coreTopologyService, leaderLocator, Config, Instance); // when ClusterView clusterView = Run(proc); // then ClusterView.Builder builder = new ClusterView.Builder(); builder.ReadAddress(addressesForCore(0, false).connectors().boltAddress()); builder.RouteAddress(addressesForCore(0, false).connectors().boltAddress()); assertEquals(builder.Build(), clusterView); }
private IList <Endpoint> ReadEndpoints(CoreTopology coreTopology, ReadReplicaTopology rrTopology, Policy policy) { //JAVA TO C# CONVERTER TODO TASK: Most Java stream collectors are not converted by Java to C# Converter: ISet <ServerInfo> possibleReaders = rrTopology.Members().SetOfKeyValuePairs().Select(entry => new ServerInfo(entry.Value.connectors().boltAddress(), entry.Key, entry.Value.groups())).collect(Collectors.toSet()); if (_allowReadsOnFollowers || possibleReaders.Count == 0) { ISet <MemberId> validCores = coreTopology.Members().Keys; try { MemberId leader = _leaderLocator.Leader; //JAVA TO C# CONVERTER TODO TASK: Most Java stream collectors are not converted by Java to C# Converter: validCores = validCores.Where(memberId => !memberId.Equals(leader)).collect(Collectors.toSet()); } catch (NoLeaderFoundException) { // we might end up using the leader for reading during this ttl, should be fine in general } foreach (MemberId validCore in validCores) { Optional <CoreServerInfo> coreServerInfo = coreTopology.find(validCore); coreServerInfo.ifPresent(coreServerInfo1 => possibleReaders.Add(new ServerInfo(coreServerInfo1.connectors().boltAddress(), validCore, coreServerInfo1.groups()))); } } ISet <ServerInfo> readers = policy.Apply(possibleReaders); return(readers.Select(r => Endpoint.read(r.boltAddress())).ToList()); }
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: //ORIGINAL LINE: public org.neo4j.causalclustering.routing.load_balancing.LoadBalancingProcessor_Result run(java.util.Map<String,String> context) throws org.neo4j.internal.kernel.api.exceptions.ProcedureException public override Org.Neo4j.causalclustering.routing.load_balancing.LoadBalancingProcessor_Result Run(IDictionary <string, string> context) { Policy policy = _policies.selectFor(context); CoreTopology coreTopology = _topologyService.localCoreServers(); ReadReplicaTopology rrTopology = _topologyService.localReadReplicas(); return(new LoadBalancingResult(RouteEndpoints(coreTopology), WriteEndpoints(coreTopology), ReadEndpoints(coreTopology, rrTopology, policy), _timeToLive.Value)); }
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: //ORIGINAL LINE: public java.util.Optional<org.neo4j.causalclustering.identity.MemberId> upstreamDatabase() throws org.neo4j.causalclustering.upstream.UpstreamDatabaseSelectionException public override Optional <MemberId> UpstreamDatabase() { //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final org.neo4j.causalclustering.discovery.CoreTopology coreTopology = topologyService.localCoreServers(); CoreTopology coreTopology = TopologyService.localCoreServers(); if (coreTopology.Members().Count == 0) { throw new UpstreamDatabaseSelectionException("No core servers available"); } int skippedServers = _random.Next(coreTopology.Members().Count); return(coreTopology.Members().Keys.Skip(skippedServers).First()); }
private IDictionary <string, IList <Endpoint> > RouteEndpoints() { CoreTopology core = _topologyService.allCoreServers(); Stream <CoreServerInfo> allCoreMemberInfo = _topologyService.allCoreServers().members().Values.stream(); //JAVA TO C# CONVERTER TODO TASK: Method reference arbitrary object instance method syntax is not converted by Java to C# Converter: IDictionary <string, IList <CoreServerInfo> > coresByDb = allCoreMemberInfo.collect(Collectors.groupingBy(CoreServerInfo::getDatabaseName)); System.Func <KeyValuePair <string, IList <CoreServerInfo> >, IList <Endpoint> > extractQualifiedBoltAddresses = entry => { IList <CoreServerInfo> cores = entry.Value; return(cores.Select(extractBoltAddress()).Select(Endpoint.route).ToList()); }; return(coresByDb.SetOfKeyValuePairs().ToDictionary(DictionaryEntry.getKey, extractQualifiedBoltAddresses)); }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void shouldReturnEndpointsInDifferentOrders() throws Exception //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: public virtual void ShouldReturnEndpointsInDifferentOrders() { // given //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final org.neo4j.causalclustering.discovery.CoreTopologyService coreTopologyService = mock(org.neo4j.causalclustering.discovery.CoreTopologyService.class); CoreTopologyService coreTopologyService = mock(typeof(CoreTopologyService)); LeaderLocator leaderLocator = mock(typeof(LeaderLocator)); when(leaderLocator.Leader).thenReturn(member(0)); IDictionary <MemberId, CoreServerInfo> coreMembers = new Dictionary <MemberId, CoreServerInfo>(); coreMembers[member(0)] = addressesForCore(0, false); coreMembers[member(1)] = addressesForCore(1, false); coreMembers[member(2)] = addressesForCore(2, false); //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final org.neo4j.causalclustering.discovery.CoreTopology clusterTopology = new org.neo4j.causalclustering.discovery.CoreTopology(clusterId, false, coreMembers); CoreTopology clusterTopology = new CoreTopology(_clusterId, false, coreMembers); when(coreTopologyService.LocalCoreServers()).thenReturn(clusterTopology); when(coreTopologyService.LocalReadReplicas()).thenReturn(new ReadReplicaTopology(emptyMap())); //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final LegacyGetServersProcedure proc = new LegacyGetServersProcedure(coreTopologyService, leaderLocator, config, getInstance()); LegacyGetServersProcedure proc = new LegacyGetServersProcedure(coreTopologyService, leaderLocator, _config, Instance); // when object[] endpoints = GetEndpoints(proc); //then object[] endpointsInDifferentOrder = GetEndpoints(proc); for (int i = 0; i < 100; i++) { if (Arrays.deepEquals(endpointsInDifferentOrder, endpoints)) { endpointsInDifferentOrder = GetEndpoints(proc); } else { //Different order of servers, no need to retry. break; } } assertFalse(Arrays.deepEquals(endpoints, endpointsInDifferentOrder)); }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test(expected = java.util.concurrent.TimeoutException.class) public void shouldTimeoutIfPublishContinuallyFailsWithTransientErrors() throws Throwable //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: public virtual void ShouldTimeoutIfPublishContinuallyFailsWithTransientErrors() { // given //JAVA TO C# CONVERTER TODO TASK: Method reference arbitrary object instance method syntax is not converted by Java to C# Converter: IDictionary <MemberId, CoreServerInfo> members = IntStream.range(0, _minCoreHosts).mapToObj(i => Pair.of(new MemberId(System.Guid.randomUUID()), TestTopology.addressesForCore(i, false))).collect(Collectors.toMap(Pair::first, Pair::other)); CoreTopology bootstrappableTopology = new CoreTopology(null, true, members); CoreTopologyService topologyService = mock(typeof(CoreTopologyService)); when(topologyService.SetClusterId(any(), anyString())).thenThrow(typeof(OperationTimeoutException)); // Causes a retry when(topologyService.LocalCoreServers()).thenReturn(bootstrappableTopology); ClusterBinder binder = ClusterBinder(new StubSimpleStorage <ClusterId>(this), topologyService); // when binder.BindToCluster(); }
private IList <Endpoint> WriteEndpoints(CoreTopology cores) { MemberId leader; try { leader = _leaderLocator.Leader; } catch (NoLeaderFoundException) { return(emptyList()); } Optional <Endpoint> endPoint = cores.find(leader).map(extractBoltAddress()).map(Endpoint.write); return(new IList <Endpoint> { endPoint }); }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void shouldBindToClusterIdPublishedByAnotherMember() throws Throwable //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: public virtual void ShouldBindToClusterIdPublishedByAnotherMember() { // given ClusterId publishedClusterId = new ClusterId(System.Guid.randomUUID()); CoreTopology unboundTopology = new CoreTopology(null, false, emptyMap()); CoreTopology boundTopology = new CoreTopology(publishedClusterId, false, emptyMap()); CoreTopologyService topologyService = mock(typeof(CoreTopologyService)); when(topologyService.LocalCoreServers()).thenReturn(unboundTopology).thenReturn(boundTopology); ClusterBinder binder = ClusterBinder(new StubSimpleStorage <ClusterId>(this), topologyService); // when binder.BindToCluster(); // then Optional <ClusterId> clusterId = binder.Get(); assertTrue(clusterId.Present); assertEquals(publishedClusterId, clusterId.get()); verify(topologyService, atLeast(2)).localCoreServers(); }
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()))); }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void shouldTimeoutWhenNotBootstrappableAndNobodyElsePublishesClusterId() throws Throwable //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: public virtual void ShouldTimeoutWhenNotBootstrappableAndNobodyElsePublishesClusterId() { // given CoreTopology unboundTopology = new CoreTopology(null, false, emptyMap()); CoreTopologyService topologyService = mock(typeof(CoreTopologyService)); when(topologyService.LocalCoreServers()).thenReturn(unboundTopology); ClusterBinder binder = ClusterBinder(new StubSimpleStorage <ClusterId>(this), topologyService); try { // when binder.BindToCluster(); fail("Should have timed out"); } catch (TimeoutException) { // expected } // then verify(topologyService, atLeast(2)).localCoreServers(); }
private IList <Endpoint> RouteEndpoints(CoreTopology cores) { return(cores.Members().Values.Select(extractBoltAddress()).Select(Endpoint.route).ToList()); }
public TopologyServiceAnonymousInnerClass(CoreTopology coreTopology, ReadReplicaTopology readReplicaTopology) { this._coreTopology = coreTopology; this._readReplicaTopology = readReplicaTopology; }
public override Optional <MemberId> UpstreamDatabase() { CoreTopology coreTopology = TopologyService.allCoreServers(); return(Optional.ofNullable(coreTopology.Members().Keys.GetEnumerator().next())); }
internal static TopologyService FakeTopologyService(CoreTopology coreTopology, ReadReplicaTopology readReplicaTopology) { return(new TopologyServiceAnonymousInnerClass(coreTopology, readReplicaTopology)); }