Search in sources :

Example 1 with ManagedClusterMetadataService

use of io.atomix.cluster.ManagedClusterMetadataService in project atomix by atomix.

the class DefaultClusterMetadataServiceTest method testSingleNodeBootstrap.

@Test
public void testSingleNodeBootstrap() throws Exception {
    TestMessagingServiceFactory messagingServiceFactory = new TestMessagingServiceFactory();
    ClusterMetadata clusterMetadata = buildClusterMetadata(1);
    Node localNode1 = buildNode(1, Node.Type.CORE);
    ManagedClusterMetadataService metadataService1 = new DefaultClusterMetadataService(clusterMetadata, messagingServiceFactory.newMessagingService(localNode1.endpoint()).start().join());
    metadataService1.start().join();
    assertEquals(1, metadataService1.getMetadata().bootstrapNodes().size());
    Node localNode2 = buildNode(2, Node.Type.CORE);
    ManagedClusterMetadataService metadataService2 = new DefaultClusterMetadataService(clusterMetadata, messagingServiceFactory.newMessagingService(localNode2.endpoint()).start().join());
    metadataService2.start().join();
    metadataService2.addNode(localNode2);
    assertEquals(2, metadataService2.getMetadata().bootstrapNodes().size());
}
Also used : ClusterMetadata(io.atomix.cluster.ClusterMetadata) ManagedClusterMetadataService(io.atomix.cluster.ManagedClusterMetadataService) Node(io.atomix.cluster.Node) TestMessagingServiceFactory(io.atomix.cluster.messaging.impl.TestMessagingServiceFactory) Test(org.junit.Test)

Example 2 with ManagedClusterMetadataService

use of io.atomix.cluster.ManagedClusterMetadataService in project atomix by atomix.

the class DefaultClusterMetadataServiceTest method testClusterMetadataService.

@Test
public void testClusterMetadataService() throws Exception {
    TestMessagingServiceFactory messagingServiceFactory = new TestMessagingServiceFactory();
    ClusterMetadata clusterMetadata = buildClusterMetadata(1, 2, 3);
    Node localNode1 = buildNode(1, Node.Type.CORE);
    ManagedClusterMetadataService metadataService1 = new DefaultClusterMetadataService(clusterMetadata, messagingServiceFactory.newMessagingService(localNode1.endpoint()).start().join());
    Node localNode2 = buildNode(2, Node.Type.CORE);
    ManagedClusterMetadataService metadataService2 = new DefaultClusterMetadataService(clusterMetadata, messagingServiceFactory.newMessagingService(localNode2.endpoint()).start().join());
    Node localNode3 = buildNode(3, Node.Type.CORE);
    ManagedClusterMetadataService metadataService3 = new DefaultClusterMetadataService(clusterMetadata, messagingServiceFactory.newMessagingService(localNode3.endpoint()).start().join());
    List<CompletableFuture<ClusterMetadataService>> futures = new ArrayList<>();
    futures.add(metadataService1.start());
    futures.add(metadataService2.start());
    futures.add(metadataService3.start());
    Futures.allOf(futures).join();
    assertEquals(3, metadataService1.getMetadata().bootstrapNodes().size());
    assertEquals(3, metadataService2.getMetadata().bootstrapNodes().size());
    assertEquals(3, metadataService3.getMetadata().bootstrapNodes().size());
    Node localNode4 = buildNode(4, Node.Type.CORE);
    ManagedClusterMetadataService metadataService4 = new DefaultClusterMetadataService(clusterMetadata, messagingServiceFactory.newMessagingService(localNode4.endpoint()).start().join());
    metadataService4.start().join();
    assertEquals(3, metadataService4.getMetadata().bootstrapNodes().size());
    TestClusterMetadataEventListener localEventListener = new TestClusterMetadataEventListener();
    metadataService4.addListener(localEventListener);
    TestClusterMetadataEventListener remoteEventListener1 = new TestClusterMetadataEventListener();
    metadataService1.addListener(remoteEventListener1);
    TestClusterMetadataEventListener remoteEventListener2 = new TestClusterMetadataEventListener();
    metadataService2.addListener(remoteEventListener2);
    TestClusterMetadataEventListener remoteEventListener3 = new TestClusterMetadataEventListener();
    metadataService3.addListener(remoteEventListener3);
    metadataService4.addNode(localNode4);
    assertEquals(4, metadataService4.getMetadata().bootstrapNodes().size());
    assertEquals(4, localEventListener.event().subject().bootstrapNodes().size());
    assertEquals(4, remoteEventListener1.event().subject().bootstrapNodes().size());
    assertEquals(4, metadataService1.getMetadata().bootstrapNodes().size());
    assertEquals(4, remoteEventListener2.event().subject().bootstrapNodes().size());
    assertEquals(4, metadataService2.getMetadata().bootstrapNodes().size());
    assertEquals(4, remoteEventListener3.event().subject().bootstrapNodes().size());
    assertEquals(4, metadataService3.getMetadata().bootstrapNodes().size());
    Node localNode5 = buildNode(5, Node.Type.CORE);
    ManagedClusterMetadataService metadataService5 = new DefaultClusterMetadataService(clusterMetadata, messagingServiceFactory.newMessagingService(localNode5.endpoint()).start().join());
    metadataService5.start().join();
    assertEquals(4, metadataService5.getMetadata().bootstrapNodes().size());
}
Also used : ClusterMetadata(io.atomix.cluster.ClusterMetadata) ManagedClusterMetadataService(io.atomix.cluster.ManagedClusterMetadataService) CompletableFuture(java.util.concurrent.CompletableFuture) Node(io.atomix.cluster.Node) ArrayList(java.util.ArrayList) TestMessagingServiceFactory(io.atomix.cluster.messaging.impl.TestMessagingServiceFactory) Test(org.junit.Test)

Aggregations

ClusterMetadata (io.atomix.cluster.ClusterMetadata)2 ManagedClusterMetadataService (io.atomix.cluster.ManagedClusterMetadataService)2 Node (io.atomix.cluster.Node)2 TestMessagingServiceFactory (io.atomix.cluster.messaging.impl.TestMessagingServiceFactory)2 Test (org.junit.Test)2 ArrayList (java.util.ArrayList)1 CompletableFuture (java.util.concurrent.CompletableFuture)1