Search in sources :

Example 1 with State

use of org.neo4j.cluster.statemachine.State in project neo4j by neo4j.

the class LearnerStateTest method shouldUseLastKnownOnlineClusterMemberAndSetTimeoutForCatchup.

@Test
public void shouldUseLastKnownOnlineClusterMemberAndSetTimeoutForCatchup() throws Throwable {
    // Given
    LearnerState state = LearnerState.learner;
    LearnerContext ctx = mock(LearnerContext.class);
    MessageHolder outgoing = mock(MessageHolder.class);
    org.neo4j.cluster.InstanceId upToDateClusterMember = new org.neo4j.cluster.InstanceId(1);
    // What we know
    when(ctx.getLastLearnedInstanceId()).thenReturn(0L);
    when(ctx.getPaxosInstance(new org.neo4j.cluster.protocol.atomicbroadcast.multipaxos.InstanceId(1L))).thenReturn(new PaxosInstance(null, new org.neo4j.cluster.protocol.atomicbroadcast.multipaxos.InstanceId(1L)));
    when(ctx.getLastKnownAliveUpToDateInstance()).thenReturn(upToDateClusterMember);
    when(ctx.getUriForId(upToDateClusterMember)).thenReturn(new URI("c:/1"));
    // What we know the cluster knows
    when(ctx.getLastKnownLearnedInstanceInCluster()).thenReturn(1L);
    // When
    Message<LearnerMessage> message = Message.to(LearnerMessage.catchUp, new URI("c:/2"), 2L).setHeader(Message.FROM, "c:/2").setHeader(Message.INSTANCE_ID, "2");
    State newState = state.handle(ctx, message, outgoing);
    // Then
    assertThat(newState, equalTo((State) LearnerState.learner));
    verify(outgoing).offer(Message.to(LearnerMessage.learnRequest, new URI("c:/1"), new LearnerMessage.LearnRequestState()).setHeader(org.neo4j.cluster.protocol.atomicbroadcast.multipaxos.InstanceId.INSTANCE, Long.toString(1L)));
    verify(ctx).setTimeout("learn", Message.timeout(LearnerMessage.learnTimedout, message));
}
Also used : URI(java.net.URI) MessageHolder(org.neo4j.cluster.com.message.MessageHolder) State(org.neo4j.cluster.statemachine.State) Test(org.junit.Test)

Aggregations

URI (java.net.URI)1 Test (org.junit.Test)1 MessageHolder (org.neo4j.cluster.com.message.MessageHolder)1 State (org.neo4j.cluster.statemachine.State)1