use of org.neo4j.causalclustering.discovery.CoreTopologyService in project neo4j by neo4j.
the class ClusterBinderTest method shouldFailToPublishMismatchingStoredClusterId.
@Test
public void shouldFailToPublishMismatchingStoredClusterId() throws Throwable {
// given
ClusterId previouslyBoundClusterId = new ClusterId(UUID.randomUUID());
CoreTopologyService topologyService = mock(CoreTopologyService.class);
when(topologyService.setClusterId(previouslyBoundClusterId)).thenReturn(false);
StubClusterIdStorage clusterIdStorage = new StubClusterIdStorage();
clusterIdStorage.writeState(previouslyBoundClusterId);
ClusterBinder binder = new ClusterBinder(clusterIdStorage, topologyService, NullLogProvider.getInstance(), clock, () -> clock.forward(1, TimeUnit.SECONDS), 3_000, coreBootstrapper);
// when
try {
binder.bindToCluster(null);
fail("Should have thrown exception");
} catch (BindingException e) {
// expected
}
}
use of org.neo4j.causalclustering.discovery.CoreTopologyService in project neo4j by neo4j.
the class GetServersProcedureV1Test method shouldProvideReaderAndRouterForSingleCoreSetup.
@Test
public void shouldProvideReaderAndRouterForSingleCoreSetup() throws Exception {
// given
final CoreTopologyService coreTopologyService = mock(CoreTopologyService.class);
LeaderLocator leaderLocator = mock(LeaderLocator.class);
Map<MemberId, CoreServerInfo> coreMembers = new HashMap<>();
coreMembers.put(member(0), adressesForCore(0));
final CoreTopology clusterTopology = new CoreTopology(clusterId, false, coreMembers);
when(coreTopologyService.coreServers()).thenReturn(clusterTopology);
when(coreTopologyService.readReplicas()).thenReturn(new ReadReplicaTopology(emptyMap()));
final LegacyGetServersProcedure proc = new LegacyGetServersProcedure(coreTopologyService, leaderLocator, config, getInstance());
// when
ClusterView clusterView = run(proc);
// then
ClusterView.Builder builder = new ClusterView.Builder();
builder.readAddress(adressesForCore(0).connectors().boltAddress());
builder.routeAddress(adressesForCore(0).connectors().boltAddress());
assertEquals(builder.build(), clusterView);
}
use of org.neo4j.causalclustering.discovery.CoreTopologyService in project neo4j by neo4j.
the class GetServersProcedureV1Test method shouldReturnCoreServersWithRouteAllCoresButLeaderAsReadAndSingleWriteActions.
@Test
public void shouldReturnCoreServersWithRouteAllCoresButLeaderAsReadAndSingleWriteActions() throws Exception {
// given
final CoreTopologyService coreTopologyService = mock(CoreTopologyService.class);
LeaderLocator leaderLocator = mock(LeaderLocator.class);
when(leaderLocator.getLeader()).thenReturn(member(0));
Map<MemberId, CoreServerInfo> coreMembers = new HashMap<>();
coreMembers.put(member(0), adressesForCore(0));
coreMembers.put(member(1), adressesForCore(1));
coreMembers.put(member(2), adressesForCore(2));
final CoreTopology clusterTopology = new CoreTopology(clusterId, false, coreMembers);
when(coreTopologyService.coreServers()).thenReturn(clusterTopology);
when(coreTopologyService.readReplicas()).thenReturn(new ReadReplicaTopology(emptyMap()));
final LegacyGetServersProcedure proc = new LegacyGetServersProcedure(coreTopologyService, leaderLocator, config, getInstance());
// when
ClusterView clusterView = run(proc);
// then
ClusterView.Builder builder = new ClusterView.Builder();
builder.writeAddress(adressesForCore(0).connectors().boltAddress());
builder.readAddress(adressesForCore(1).connectors().boltAddress());
builder.readAddress(adressesForCore(2).connectors().boltAddress());
builder.routeAddress(adressesForCore(0).connectors().boltAddress());
builder.routeAddress(adressesForCore(1).connectors().boltAddress());
builder.routeAddress(adressesForCore(2).connectors().boltAddress());
assertEquals(builder.build(), clusterView);
}
use of org.neo4j.causalclustering.discovery.CoreTopologyService in project neo4j by neo4j.
the class GetServersProcedureV1Test method shouldReturnSelfIfOnlyMemberOfTheCluster.
@Test
public void shouldReturnSelfIfOnlyMemberOfTheCluster() throws Exception {
// given
final CoreTopologyService coreTopologyService = mock(CoreTopologyService.class);
LeaderLocator leaderLocator = mock(LeaderLocator.class);
when(leaderLocator.getLeader()).thenReturn(member(0));
Map<MemberId, CoreServerInfo> coreMembers = new HashMap<>();
coreMembers.put(member(0), adressesForCore(0));
final CoreTopology clusterTopology = new CoreTopology(clusterId, false, coreMembers);
when(coreTopologyService.coreServers()).thenReturn(clusterTopology);
when(coreTopologyService.readReplicas()).thenReturn(new ReadReplicaTopology(emptyMap()));
final LegacyGetServersProcedure proc = new LegacyGetServersProcedure(coreTopologyService, leaderLocator, config, getInstance());
// when
ClusterView clusterView = run(proc);
// then
ClusterView.Builder builder = new ClusterView.Builder();
builder.writeAddress(adressesForCore(0).connectors().boltAddress());
builder.readAddress(adressesForCore(0).connectors().boltAddress());
builder.routeAddress(adressesForCore(0).connectors().boltAddress());
assertEquals(builder.build(), clusterView);
}
use of org.neo4j.causalclustering.discovery.CoreTopologyService in project neo4j by neo4j.
the class GetServersProcedureV1Test method shouldReturnTheCoreLeaderForWriteAndReadReplicasAndCoresForReads.
@Test
public void shouldReturnTheCoreLeaderForWriteAndReadReplicasAndCoresForReads() throws Exception {
// given
final CoreTopologyService topologyService = mock(CoreTopologyService.class);
Map<MemberId, CoreServerInfo> coreMembers = new HashMap<>();
MemberId theLeader = member(0);
coreMembers.put(theLeader, adressesForCore(0));
when(topologyService.coreServers()).thenReturn(new CoreTopology(clusterId, false, coreMembers));
when(topologyService.readReplicas()).thenReturn(new ReadReplicaTopology(readReplicaInfoMap(1)));
LeaderLocator leaderLocator = mock(LeaderLocator.class);
when(leaderLocator.getLeader()).thenReturn(theLeader);
LegacyGetServersProcedure procedure = new LegacyGetServersProcedure(topologyService, leaderLocator, config, getInstance());
// when
ClusterView clusterView = run(procedure);
// then
ClusterView.Builder builder = new ClusterView.Builder();
builder.writeAddress(adressesForCore(0).connectors().boltAddress());
if (expectFollowersAsReadEndPoints) {
builder.readAddress(adressesForCore(0).connectors().boltAddress());
}
builder.readAddress(addressesForReadReplica(1).connectors().boltAddress());
builder.routeAddress(adressesForCore(0).connectors().boltAddress());
assertEquals(builder.build(), clusterView);
}
Aggregations