Package org.apache.sling.discovery.impl.setup

Examples of org.apache.sling.discovery.impl.setup.Instance


        }
    }
   
    @Test
    public void testTwoNodes() throws Throwable {
        Instance instance1 = TopologyTestHelper.createInstance(instances, "instance1");
        Instance instance2 = TopologyTestHelper.createInstance(instances, "instance2");
        instance1.getConfig().setHeartbeatTimeout(2);
        instance1.getConfig().setHeartbeatInterval(1);
        instance2.getConfig().setHeartbeatTimeout(1);
        instance2.getConfig().setHeartbeatInterval(1);
       
        Set<InstanceDescription> instances1 = instance1.getDiscoveryService().getTopology().getInstances();
        Set<InstanceDescription> instances2 = instance2.getDiscoveryService().getTopology().getInstances();
       
        assertEquals(1, instances1.size());
        assertEquals(1, instances2.size());
        assertEquals(instance1.getSlingId(), instances1.iterator().next().getSlingId());
        assertEquals(instance2.getSlingId(), instances2.iterator().next().getSlingId());
       
        new Connector(instance1, instance2);
       
        // check instance 1's announcements
        Collection<Announcement> instance1LocalAnnouncements =
                instance1.getAnnouncementRegistry().listLocalAnnouncements();
        assertEquals(1, instance1LocalAnnouncements.size());
        Announcement instance1LocalAnnouncement = instance1LocalAnnouncements.iterator().next();
        assertEquals(instance2.getSlingId(), instance1LocalAnnouncement.getOwnerId());
        assertEquals(true, instance1LocalAnnouncement.isInherited());

        // check instance 2's announcements
        Collection<Announcement> instance2LocalAnnouncements =
                instance2.getAnnouncementRegistry().listLocalAnnouncements();
        assertEquals(1, instance2LocalAnnouncements.size());
        Announcement instance2LocalAnnouncement = instance2LocalAnnouncements.iterator().next();
        assertEquals(instance1.getSlingId(), instance2LocalAnnouncement.getOwnerId());
        assertEquals(false, instance2LocalAnnouncement.isInherited());
       
        // check topology
        TopologyTestHelper.assertTopologyConsistsOf(instance1.getDiscoveryService().getTopology(), instance1.getSlingId(), instance2.getSlingId());
        TopologyTestHelper.assertTopologyConsistsOf(instance2.getDiscoveryService().getTopology(), instance1.getSlingId(), instance2.getSlingId());

        instance1LocalAnnouncements =
                instance1.getAnnouncementRegistry().listLocalAnnouncements();
        assertEquals(1, instance1LocalAnnouncements.size());
        instance2LocalAnnouncements =
                instance2.getAnnouncementRegistry().listLocalAnnouncements();
        assertEquals(1, instance2LocalAnnouncements.size());

        Thread.sleep(1500);
       
        instance1LocalAnnouncements =
                instance1.getAnnouncementRegistry().listLocalAnnouncements();
        assertEquals(1, instance1LocalAnnouncements.size());
        instance2LocalAnnouncements =
                instance2.getAnnouncementRegistry().listLocalAnnouncements();
        assertEquals(0, instance2LocalAnnouncements.size());

        TopologyTestHelper.assertTopologyConsistsOf(instance1.getDiscoveryService().getTopology(), instance1.getSlingId(), instance2.getSlingId());
        TopologyTestHelper.assertTopologyConsistsOf(instance2.getDiscoveryService().getTopology(), instance2.getSlingId());
       
        Thread.sleep(1000);
        instance1LocalAnnouncements =
                instance1.getAnnouncementRegistry().listLocalAnnouncements();
        assertEquals(0, instance1LocalAnnouncements.size());
        instance2LocalAnnouncements =
                instance2.getAnnouncementRegistry().listLocalAnnouncements();
        assertEquals(0, instance2LocalAnnouncements.size());

        TopologyTestHelper.assertTopologyConsistsOf(instance1.getDiscoveryService().getTopology(), instance1.getSlingId());
        TopologyTestHelper.assertTopologyConsistsOf(instance2.getDiscoveryService().getTopology(), instance2.getSlingId());
    }
View Full Code Here


    public void tearDown() throws Exception {
      if (instances==null || instances.size()==0) {
        return;
      }
      for (Iterator<Instance> it = instances.iterator(); it.hasNext();) {
      Instance i = it.next();
      i.stop();
      it.remove();
    }
    }
View Full Code Here

    }
    }

    @Test
    public void testFramework() throws Exception {
    Instance firstInstance = Instance.newStandaloneInstance("/var/discovery/impl/ClusterLoadTest/testFramework/", "firstInstance", false, 2, 0);
    instances.add(firstInstance);
      Thread.sleep(2000);
      // without any heartbeat action, the discovery service reports its local instance
      // in so called 'isolated' mode - lets test for that
        assertEquals(IsolatedInstanceDescription.class, firstInstance
                .getClusterViewService().getClusterView().getInstances().get(0)
                .getClass());
        firstInstance.startHeartbeats(1);
        Thread.sleep(4000);
        // after a heartbeat and letting it settle, the discovery service must have
        // established a view - test for that
        assertEquals(EstablishedInstanceDescription.class, firstInstance
                .getClusterViewService().getClusterView().getInstances().get(0)
                .getClass());

        Instance secondInstance = Instance.newClusterInstance("/var/discovery/impl/ClusterLoadTest/testFramework/", "secondInstance", firstInstance, false, 2, 0);
        instances.add(secondInstance);
        secondInstance.startHeartbeats(1);
        Thread.sleep(4000);
        assertEquals(firstInstance.getClusterViewService().getClusterView().getInstances().size(), 2);
        assertEquals(secondInstance.getClusterViewService().getClusterView().getInstances().size(), 2);
    }
View Full Code Here

   
  private void doDoTest(final int size, final int loopCnt) throws Throwable {
    if (size<2) {
      fail("can only test 2 or more instances");
    }
    Instance firstInstance = Instance.newStandaloneInstance("/var/discovery/impl/ClusterLoadTest/doTest-"+size+"-"+loopCnt+"/", "firstInstance", false, 2, 0);
    firstInstance.startHeartbeats(1);
    instances.add(firstInstance);
    for(int i=1; i<size; i++) {
      Instance subsequentInstance = Instance.newClusterInstance("/var/discovery/impl/ClusterLoadTest/doTest-"+size+"-"+loopCnt+"/", "subsequentInstance-"+i, firstInstance, false, 2, 0);
      instances.add(subsequentInstance);
      subsequentInstance.startHeartbeats(1);
    }

    for(int i=0; i<loopCnt; i++) {
      logger.info("=====================");
      logger.info(" START of LOOP "+i);
      logger.info("=====================");

      // count how many instances had heartbeats running in the first place
      int aliveCnt = 0;
      for (Iterator<Instance> it = instances.iterator(); it.hasNext();) {
        Instance instance = it.next();
        if (instance.isHeartbeatRunning()) {
          aliveCnt++;
        }
      }
      logger.info("=====================");
      logger.info(" original aliveCnt "+aliveCnt);
      logger.info("=====================");
      if (aliveCnt==0) {
        // if no one is sending heartbeats, all instances go back to isolated mode
        aliveCnt=1;
      }

            final int aliveCntFinal = aliveCnt;

      for (Iterator<Instance> it = instances.iterator(); it.hasNext();) {
        Instance instance = it.next();
        try {
                    instance.dumpRepo();
                } catch (Exception e) {
                    logger.error("Failed dumping repo for instance " + instance.getSlingId(), e);
                }
      }

      // then verify that each instance sees that many instances
      for (Iterator<Instance> it = instances.iterator(); it.hasNext();) {
                final Instance instance = it.next();
        if (!instance.isHeartbeatRunning()) {
          // if the heartbeat is not running, this instance is considered dead
          // hence we're not doing any assert here (as the count is only
          // valid if heartbeat/checkView is running and that would void the test)
        } else {
                    new RetryLoop(new ConditionImplementation(instance, aliveCntFinal), INSTANCE_VIEW_WAIT_TIME_MILLIS,
                            INSTANCE_VIEW_POLL_INTERVAL_MILLIS);
        }
      }

      // start/stop heartbeats accordingly
      logger.info("Starting/Stopping heartbeats with count="+instances.size());
      for (Iterator<Instance> it = instances.iterator(); it.hasNext();) {
        Instance instance = it.next();
        if (random.nextBoolean()) {
          logger.info("Starting heartbeats with "+instance.slingId);
          instance.startHeartbeats(1);
          logger.info("Started heartbeats with "+instance.slingId);
        } else {
          logger.info("Stopping heartbeats with "+instance.slingId);
          instance.stopHeartbeats();
          logger.info("Stopped heartbeats with "+instance.slingId);
        }
      }

    }
View Full Code Here

        slingIds = new LinkedList<String>();
        slingIds.add(hub.getSlingId());
        logger.info("setUp: using heartbeatTimeout of "+heartbeatTimeout+"sec "
                + "(default: "+defaultHeartbeatTimeout+")");
        for(int i=0; i<TEST_SIZE; i++) {
            Instance instance = TopologyTestHelper.createInstance(instances, "instance"+i);
            instance.getConfig().setHeartbeatTimeout(heartbeatTimeout);
            new Connector(instance, hub);
            slingIds.add(instance.getSlingId());
        }
    }
View Full Code Here

    }
   
    @AfterClass
    public static void tearDown() throws Exception {
        for (Iterator<Instance> it = instances.iterator(); it.hasNext();) {
            final Instance instance = it.next();
            instance.stop();
        }
    }
View Full Code Here

            assertTrue(found);
        }
    }
   
    public static Instance createInstance(Collection<Instance> instances, String debugName) throws Exception {
        final Instance instance = Instance.newStandaloneInstance(debugName, true);
        instances.add(instance);
        return instance;
    }
View Full Code Here

public class ConnectorRegistryTest {

    @Test
    public void testRegisterUnregister() throws Exception {
        Instance i = Instance.newStandaloneInstance("i", true);
        Config config = new Config() {
            @Override
            public long getHeartbeatTimeout() {
                return 20000;
            }
        };
        AnnouncementRegistry announcementRegistry = OSGiFactory
                .createITopologyAnnouncementRegistry(MockFactory
                        .mockResourceResolverFactory(), config, UUID.randomUUID()
                        .toString());

        ConnectorRegistry c = OSGiFactory.createConnectorRegistry(
                announcementRegistry, config);

        final URL url = new URL("http://localhost:1234/connector");
        final ClusterViewService cvs = i.getClusterViewService();
        try {
            c.registerOutgoingConnector(null, url);
            fail("should have complained");
        } catch (IllegalArgumentException e) {
            // ok
View Full Code Here

    private final List<Instance> instances = new LinkedList<Instance>();
   
    @After
    public void tearDown() throws Exception {
        for (Iterator<Instance> it = instances.iterator(); it.hasNext();) {
            final Instance instance = it.next();
            instance.stop();
        }
    }
View Full Code Here

TOP

Related Classes of org.apache.sling.discovery.impl.setup.Instance

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.