//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void something() throws Throwable //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: public virtual void Something() { object acceptorValue = new object(); object bookedValue = new object(); Org.Neo4j.cluster.protocol.atomicbroadcast.multipaxos.InstanceId instanceId = new Org.Neo4j.cluster.protocol.atomicbroadcast.multipaxos.InstanceId(42); PaxosInstanceStore paxosInstanceStore = new PaxosInstanceStore(); ProposerContext context = Mockito.mock(typeof(ProposerContext)); when(context.GetPaxosInstance(instanceId)).thenReturn(paxosInstanceStore.GetPaxosInstance(instanceId)); when(context.GetMinimumQuorumSize(Mockito.anyList())).thenReturn(2); // The instance is closed PaxosInstance paxosInstance = new PaxosInstance(paxosInstanceStore, instanceId); // the instance paxosInstance.Propose(2001, Iterables.asList(Iterables.iterable(create("http://something1"), create("http://something2"), create("http://something3")))); Message message = Message.to(ProposerMessage.Promise, create("http://something1"), new ProposerMessage.PromiseState(2001, acceptorValue)); message.setHeader(Org.Neo4j.cluster.protocol.atomicbroadcast.multipaxos.InstanceId.INSTANCE, instanceId.ToString()); MessageHolder mockHolder = mock(typeof(MessageHolder)); ProposerState.Proposer.handle(context, message, mockHolder); }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @SuppressWarnings({ "unchecked", "rawtypes" }) @Test public void ifProposingWithClosedInstanceThenRetryWithNextInstance() throws Throwable //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: public virtual void IfProposingWithClosedInstanceThenRetryWithNextInstance() { ProposerContext context = Mockito.mock(typeof(ProposerContext)); when(context.GetLog(any(typeof(Type)))).thenReturn(NullLog.Instance); Org.Neo4j.cluster.protocol.atomicbroadcast.multipaxos.InstanceId instanceId = new Org.Neo4j.cluster.protocol.atomicbroadcast.multipaxos.InstanceId(42); PaxosInstanceStore paxosInstanceStore = new PaxosInstanceStore(); // The instance is closed PaxosInstance paxosInstance = new PaxosInstance(paxosInstanceStore, instanceId); // the instance paxosInstance.Closed(instanceId, "1/15#"); // is closed for that conversation, not really important when(context.UnbookInstance(instanceId)).thenReturn(Message.@internal(ProposerMessage.Accepted, "the closed payload")); when(context.GetPaxosInstance(instanceId)).thenReturn(paxosInstance); // required for // But in the meantime it was reused and has now (of course) timed out string theTimedoutPayload = "the timed out payload"; Message message = Message.@internal(ProposerMessage.Phase1Timeout, theTimedoutPayload); message.setHeader(Org.Neo4j.cluster.protocol.atomicbroadcast.multipaxos.InstanceId.INSTANCE, instanceId.ToString()); // Handle it MessageHolder mockHolder = mock(typeof(MessageHolder)); ProposerState.Proposer.handle(context, message, mockHolder); // Verify it was resent as a propose with the same value //JAVA TO C# CONVERTER WARNING: Java wildcard generics have no direct equivalent in .NET: //ORIGINAL LINE: verify(mockHolder, times(1)).offer(org.mockito.ArgumentMatchers.argThat<org.neo4j.cluster.com.message.Message<? extends org.neo4j.cluster.com.message.MessageType>>(new org.neo4j.cluster.protocol.MessageArgumentMatcher().onMessageType(ProposerMessage.propose).withPayload(theTimedoutPayload))); verify(mockHolder, times(1)).offer(ArgumentMatchers.argThat <Message <MessageType> >((new MessageArgumentMatcher()).onMessageType(ProposerMessage.Propose).withPayload(theTimedoutPayload))); verify(context, times(1)).unbookInstance(instanceId); }
public override bool Equals(object o) { if (this == o) { return(true); } if (o == null || this.GetType() != o.GetType()) { return(false); } PaxosInstanceStore that = ( PaxosInstanceStore )o; if (_queued != that._queued) { return(false); } //JAVA TO C# CONVERTER WARNING: LINQ 'SequenceEqual' is not always identical to Java AbstractList 'equals': //ORIGINAL LINE: if (!delivered.equals(that.delivered)) if (!_delivered.SequenceEqual(that._delivered)) { return(false); } return(_instances.Equals(that._instances)); }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void shouldKeepAtMostGivenNumberOfInstances() public virtual void ShouldKeepAtMostGivenNumberOfInstances() { // Given const int instancesToKeep = 10; PaxosInstanceStore theStore = new PaxosInstanceStore(instancesToKeep); // Keeps the first instance inserted, which is the first to be removed PaxosInstance firstInstance = null; // When for (int i = 0; i < instancesToKeep + 1; i++) { InstanceId currentInstanceId = new InstanceId(i); PaxosInstance currentInstance = theStore.GetPaxosInstance(currentInstanceId); theStore.Delivered(currentInstance.Id); if (firstInstance == null) { firstInstance = currentInstance; } } // Then // The first instance must have been removed now PaxosInstance toTest = theStore.GetPaxosInstance(firstInstance.Id); assertNotSame(firstInstance, toTest); }
public virtual PaxosInstanceStore Snapshot() { PaxosInstanceStore snapshotStore = new PaxosInstanceStore(); snapshotStore._queued = _queued; snapshotStore._delivered = new LinkedList <InstanceId>(_delivered); foreach (KeyValuePair <InstanceId, PaxosInstance> instance in _instances.SetOfKeyValuePairs()) { snapshotStore._instances[instance.Key] = instance.Value.snapshot(snapshotStore); } return(snapshotStore); }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void shouldReturnSameObjectWhenAskedById() public virtual void ShouldReturnSameObjectWhenAskedById() { // Given PaxosInstanceStore theStore = new PaxosInstanceStore(); InstanceId currentInstanceId = new InstanceId(1); // When PaxosInstance currentInstance = theStore.GetPaxosInstance(currentInstanceId); // Then assertSame(currentInstance, theStore.GetPaxosInstance(currentInstanceId)); }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void leaveShouldClearStoredInstances() public virtual void LeaveShouldClearStoredInstances() { // Given PaxosInstanceStore theStore = new PaxosInstanceStore(); InstanceId currentInstanceId = new InstanceId(1); // When PaxosInstance currentInstance = theStore.GetPaxosInstance(currentInstanceId); theStore.Leave(); // Then assertNotSame(currentInstance, theStore.GetPaxosInstance(currentInstanceId)); }
public virtual PaxosInstance Snapshot(PaxosInstanceStore store) { PaxosInstance snap = new PaxosInstance(store, Id); snap.State = State; snap.BallotConflict = BallotConflict; snap.AcceptorsConflict = AcceptorsConflict == null ? null : new List <URI>(AcceptorsConflict); snap.Promises = Promises == null ? null : new List <ProposerMessage.PromiseState>(Promises); snap.Accepts = Accepts == null ? null : new List <ProposerMessage.AcceptedState>(Accepts); snap.RejectedAccepts = RejectedAccepts == null ? null : new List <ProposerMessage.RejectAcceptState>(RejectedAccepts); snap.Value_1 = Value_1; snap.Phase1Ballot = Phase1Ballot; snap.Value_2 = Value_2; snap.ClientValue = ClientValue; snap.ConversationIdHeader = ConversationIdHeader; return(snap); }
public PaxosInstance(PaxosInstanceStore store, InstanceId instanceId) { this.Store = store; this.Id = instanceId; }