use of org.neo4j.cluster.protocol.heartbeat.Heartbeat in project neo4j by neo4j.
the class ObservedClusterMembersTest method leftMemberDisappearsFromList.
@Test
public void leftMemberDisappearsFromList() throws Exception {
// given
Cluster cluster = mock(Cluster.class);
Heartbeat heartbeat = mock(Heartbeat.class);
ClusterMemberEvents memberEvents = mock(ClusterMemberEvents.class);
ObservedClusterMembers members = new ObservedClusterMembers(logProvider, cluster, heartbeat, memberEvents, null);
ArgumentCaptor<ClusterListener> listener = ArgumentCaptor.forClass(ClusterListener.class);
verify(cluster).addClusterListener(listener.capture());
listener.getValue().enteredCluster(clusterConfiguration(clusterUri1, clusterUri2, clusterUri3));
// when
listener.getValue().leftCluster(clusterId3, clusterUri3);
// then
assertThat(members.getMembers(), not(hasItems(sameMemberAs(new ClusterMember(clusterId3)))));
}
use of org.neo4j.cluster.protocol.heartbeat.Heartbeat in project neo4j by neo4j.
the class ObservedClusterMembersTest method shouldContainMemberListAfterEnteringCluster.
@Test
public void shouldContainMemberListAfterEnteringCluster() throws Exception {
// given
Cluster cluster = mock(Cluster.class);
Heartbeat heartbeat = mock(Heartbeat.class);
ClusterMemberEvents memberEvents = mock(ClusterMemberEvents.class);
ObservedClusterMembers members = new ObservedClusterMembers(logProvider, cluster, heartbeat, memberEvents, null);
// when
ArgumentCaptor<ClusterListener> listener = ArgumentCaptor.forClass(ClusterListener.class);
verify(cluster).addClusterListener(listener.capture());
listener.getValue().enteredCluster(clusterConfiguration(clusterUri1, clusterUri2, clusterUri3));
// then
assertThat(members.getMembers(), hasItems(sameMemberAs(new ClusterMember(clusterId1)), sameMemberAs(new ClusterMember(clusterId2)), sameMemberAs(new ClusterMember(clusterId3))));
}
use of org.neo4j.cluster.protocol.heartbeat.Heartbeat in project neo4j by neo4j.
the class ObservedClusterMembersTest method availableSlaveShowsProperInformation.
@Test
public void availableSlaveShowsProperInformation() throws Exception {
// given
Cluster cluster = mock(Cluster.class);
Heartbeat heartbeat = mock(Heartbeat.class);
ClusterMemberEvents memberEvents = mock(ClusterMemberEvents.class);
ObservedClusterMembers members = new ObservedClusterMembers(logProvider, cluster, heartbeat, memberEvents, null);
ArgumentCaptor<ClusterListener> listener = ArgumentCaptor.forClass(ClusterListener.class);
verify(cluster).addClusterListener(listener.capture());
listener.getValue().enteredCluster(clusterConfiguration(clusterUri1, clusterUri2, clusterUri3));
ArgumentCaptor<ClusterMemberListener> memberListener = ArgumentCaptor.forClass(ClusterMemberListener.class);
verify(memberEvents).addClusterMemberListener(memberListener.capture());
// when
memberListener.getValue().memberIsAvailable(SLAVE, clusterId1, haUri1, StoreId.DEFAULT);
// then
assertThat(members.getMembers(), hasItem(sameMemberAs(new ClusterMember(clusterId1).availableAs(SLAVE, haUri1, StoreId.DEFAULT))));
}
use of org.neo4j.cluster.protocol.heartbeat.Heartbeat in project neo4j by neo4j.
the class ObservedClusterMembersTest method missingMasterUnavailabilityEventDoesNotClobberState.
@Test
public void missingMasterUnavailabilityEventDoesNotClobberState() throws Exception {
// given
Cluster cluster = mock(Cluster.class);
Heartbeat heartbeat = mock(Heartbeat.class);
ClusterMemberEvents memberEvents = mock(ClusterMemberEvents.class);
ObservedClusterMembers members = new ObservedClusterMembers(logProvider, cluster, heartbeat, memberEvents, clusterId1);
ArgumentCaptor<ClusterListener> listener = ArgumentCaptor.forClass(ClusterListener.class);
verify(cluster).addClusterListener(listener.capture());
listener.getValue().enteredCluster(clusterConfiguration(clusterUri1, clusterUri2, clusterUri3));
ArgumentCaptor<ClusterMemberListener> memberListener = ArgumentCaptor.forClass(ClusterMemberListener.class);
verify(memberEvents).addClusterMemberListener(memberListener.capture());
// when
// first we are available as slaves
memberListener.getValue().memberIsAvailable(SLAVE, clusterId1, haUri1, StoreId.DEFAULT);
// and then for some reason as master, without an unavailable message in between
memberListener.getValue().memberIsAvailable(MASTER, clusterId1, haUri1, StoreId.DEFAULT);
// then
assertThat(members.getCurrentMember().getHARole(), equalTo(MASTER));
}
use of org.neo4j.cluster.protocol.heartbeat.Heartbeat in project neo4j by neo4j.
the class ObservedClusterMembersTest method availableMasterShowsProperInformation.
@Test
public void availableMasterShowsProperInformation() throws Exception {
// given
Cluster cluster = mock(Cluster.class);
Heartbeat heartbeat = mock(Heartbeat.class);
ClusterMemberEvents memberEvents = mock(ClusterMemberEvents.class);
ObservedClusterMembers members = new ObservedClusterMembers(logProvider, cluster, heartbeat, memberEvents, null);
ArgumentCaptor<ClusterListener> listener = ArgumentCaptor.forClass(ClusterListener.class);
verify(cluster).addClusterListener(listener.capture());
listener.getValue().enteredCluster(clusterConfiguration(clusterUri1, clusterUri2, clusterUri3));
ArgumentCaptor<ClusterMemberListener> memberListener = ArgumentCaptor.forClass(ClusterMemberListener.class);
verify(memberEvents).addClusterMemberListener(memberListener.capture());
// when
memberListener.getValue().memberIsAvailable(MASTER, clusterId1, haUri1, StoreId.DEFAULT);
// then
assertThat(members.getMembers(), hasItem(sameMemberAs(new ClusterMember(clusterId1).availableAs(MASTER, haUri1, StoreId.DEFAULT))));
}
Aggregations