//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void testElectionNotOkQuorumFailedTwoInstances() public virtual void TestElectionNotOkQuorumFailedTwoInstances() { ISet <InstanceId> failed = new HashSet <InstanceId>(); failed.Add(new InstanceId(2)); IDictionary <InstanceId, URI> members = new Dictionary <InstanceId, URI>(); members[new InstanceId(1)] = URI.create("server1"); members[new InstanceId(2)] = URI.create("server2"); Config config = mock(typeof(Config)); when(config.Get(ClusterSettings.max_acceptors)).thenReturn(10); ClusterConfiguration clusterConfiguration = mock(typeof(ClusterConfiguration)); when(clusterConfiguration.Members).thenReturn(members); ClusterContext clusterContext = mock(typeof(ClusterContext)); when(clusterContext.Configuration).thenReturn(clusterConfiguration); MultiPaxosContext context = new MultiPaxosContext(new InstanceId(1), Iterables.iterable(new ElectionRole("coordinator")), clusterConfiguration, mock(typeof(Executor)), NullLogProvider.Instance, mock(typeof(ObjectInputStreamFactory)), mock(typeof(ObjectOutputStreamFactory)), mock(typeof(AcceptorInstanceStore)), mock(typeof(Timeouts)), mock(typeof(ElectionCredentialsProvider)), config); context.HeartbeatContext.Failed.addAll(failed); ElectionContext toTest = context.ElectionContext; assertFalse(toTest.ElectionOk()); }
private void BaseTestForElectionOk(ISet <InstanceId> failed, bool moreThanQuorum) { IDictionary <InstanceId, URI> members = new Dictionary <InstanceId, URI>(); members[new InstanceId(1)] = URI.create("server1"); members[new InstanceId(2)] = URI.create("server2"); members[new InstanceId(3)] = URI.create("server3"); Config config = mock(typeof(Config)); when(config.Get(ClusterSettings.max_acceptors)).thenReturn(10); ClusterConfiguration clusterConfiguration = mock(typeof(ClusterConfiguration)); when(clusterConfiguration.Members).thenReturn(members); ClusterContext clusterContext = mock(typeof(ClusterContext)); when(clusterContext.Configuration).thenReturn(clusterConfiguration); MultiPaxosContext context = new MultiPaxosContext(new InstanceId(1), Iterables.iterable(new ElectionRole("coordinator")), clusterConfiguration, mock(typeof(Executor)), NullLogProvider.Instance, mock(typeof(ObjectInputStreamFactory)), mock(typeof(ObjectOutputStreamFactory)), mock(typeof(AcceptorInstanceStore)), mock(typeof(Timeouts)), mock(typeof(ElectionCredentialsProvider)), config); context.HeartbeatContext.Failed.addAll(failed); ElectionContext toTest = context.ElectionContext; assertEquals(moreThanQuorum, !toTest.ElectionOk()); }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void testElectionFromDemoteIsRejectedIfNoQuorum() throws Throwable //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: public virtual void TestElectionFromDemoteIsRejectedIfNoQuorum() { ElectionContext context = mock(typeof(ElectionContext)); ClusterContext clusterContextMock = mock(typeof(ClusterContext)); when(context.ElectionOk()).thenReturn(false); when(clusterContextMock.GetLog(ArgumentMatchers.any())).thenReturn(NullLog.Instance); when(context.GetLog(ArgumentMatchers.any())).thenReturn(NullLog.Instance); MessageHolder holder = mock(typeof(MessageHolder)); election.handle(context, Message.@internal(demote), holder); verifyZeroInteractions(holder); }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void electionShouldRemainLocalIfStartedBySingleInstanceWhichIsTheRoleHolder() throws Throwable //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: public virtual void ElectionShouldRemainLocalIfStartedBySingleInstanceWhichIsTheRoleHolder() { /* * Ensures that when an instance is alone in the cluster, elections for roles that it holds do not set * timeouts or try to reach other instances. */ // Given ElectionContext context = mock(typeof(ElectionContext)); ClusterContext clusterContextMock = mock(typeof(ClusterContext)); when(clusterContextMock.GetLog(ArgumentMatchers.any())).thenReturn(NullLog.Instance); MessageHolder holder = mock(typeof(MessageHolder)); // These mean the election can proceed normally, by us when(context.ElectionOk()).thenReturn(true); when(context.InCluster).thenReturn(true); when(context.Elector).thenReturn(true); // Like it says on the box, we are the only instance //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final org.neo4j.cluster.InstanceId myInstanceId = new org.neo4j.cluster.InstanceId(1); InstanceId myInstanceId = new InstanceId(1); IDictionary <InstanceId, URI> members = new Dictionary <InstanceId, URI>(); members[myInstanceId] = URI.create("ha://me"); when(context.Members).thenReturn(members); // Any role would do, just make sure we have it const string role = "master"; ElectionContext_VoteRequest voteRequest = new ElectionContext_VoteRequest(role, 13); when(context.PossibleRoles).thenReturn(Collections.singletonList(new ElectionRole(role))); when(context.GetElected(role)).thenReturn(myInstanceId); when(context.VoteRequestForRole(new ElectionRole(role))).thenReturn(voteRequest); // Required for logging when(context.GetLog(Mockito.any())).thenReturn(NullLog.Instance); // When election.handle(context, Message.@internal(performRoleElections), holder); // Then // Make sure that we asked ourselves to vote for that role and that no timer was set verify(holder, times(1)).offer(ArgumentMatchers.argThat(new MessageArgumentMatcher <ElectionMessage>() .onMessageType(ElectionMessage.Vote).withPayload(voteRequest))); verify(context, never()).setTimeout(ArgumentMatchers.any(), ArgumentMatchers.any()); }