Package org.hornetq.tests.integration.cluster.distribution

Source Code of org.hornetq.tests.integration.cluster.distribution.SymmetricClusterWithDiscoveryTest

/*
* Copyright 2009 Red Hat, Inc.
* Red Hat licenses this file to you under the Apache License, version
* 2.0 (the "License"); you may not use this file except in compliance
* with the License.  You may obtain a copy of the License at
*    http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied.  See the License for the specific language governing
* permissions and limitations under the License.
*/

package org.hornetq.tests.integration.cluster.distribution;

import org.hornetq.api.core.HornetQException;
import org.hornetq.core.config.ClusterConnectionConfiguration;
import org.hornetq.core.logging.Logger;
import org.hornetq.core.server.cluster.BroadcastGroup;
import org.hornetq.core.server.cluster.ClusterConnection;
import org.hornetq.core.server.cluster.MessageFlowRecord;
import org.hornetq.core.server.cluster.impl.ClusterConnectionBridge;
import org.hornetq.core.server.cluster.impl.ClusterConnectionImpl;

/**
* A SymmetricClusterWithDiscoveryTest
*
* @author <a href="mailto:tim.fox@jboss.com">Tim Fox</a>
*
* Created 3 Feb 2009 09:10:43
*
*
*/
public class SymmetricClusterWithDiscoveryTest extends SymmetricClusterTest
{
   private static final Logger log = Logger.getLogger(SymmetricClusterWithDiscoveryTest.class);

   protected final String groupAddress = getUDPDiscoveryAddress();

   protected final int groupPort = getUDPDiscoveryPort();

   protected boolean isNetty()
   {
      return false;
   }

   @Override
   protected void setupCluster() throws Exception
   {
      setupCluster(false);
   }

   @Override
   protected void setupCluster(final boolean forwardWhenNoConsumers) throws Exception
   {
      setupDiscoveryClusterConnection("cluster0", 0, "dg1", "queues", forwardWhenNoConsumers, 1, isNetty());

      setupDiscoveryClusterConnection("cluster1", 1, "dg1", "queues", forwardWhenNoConsumers, 1, isNetty());

      setupDiscoveryClusterConnection("cluster2", 2, "dg1", "queues", forwardWhenNoConsumers, 1, isNetty());

      setupDiscoveryClusterConnection("cluster3", 3, "dg1", "queues", forwardWhenNoConsumers, 1, isNetty());

      setupDiscoveryClusterConnection("cluster4", 4, "dg1", "queues", forwardWhenNoConsumers, 1, isNetty());
   }

   @Override
   protected void setupServers() throws Exception
   {
      setupLiveServerWithDiscovery(0, groupAddress, groupPort, isFileStorage(), isNetty(), false);
      setupLiveServerWithDiscovery(1, groupAddress, groupPort, isFileStorage(), isNetty(), false);
      setupLiveServerWithDiscovery(2, groupAddress, groupPort, isFileStorage(), isNetty(), false);
      setupLiveServerWithDiscovery(3, groupAddress, groupPort, isFileStorage(), isNetty(), false);
      setupLiveServerWithDiscovery(4, groupAddress, groupPort, isFileStorage(), isNetty(), false);
   }

   public void testTemporaryFailure() throws Throwable
   {
      setupCluster();

      for (ClusterConnectionConfiguration config : servers[0].getConfiguration().getClusterConfigurations())
      {
         config.setConnectionTTL(5000);
         config.setClientFailureCheckPeriod(1000);
      }

      startServers(0, 1);

      setupSessionFactory(0, isNetty());
      setupSessionFactory(1, isNetty());

      createQueue(0, "queues.testaddress", "queue0", null, false);
      createQueue(1, "queues.testaddress", "queue0", null, false);

      addConsumer(0, 0, "queue0", null);
      addConsumer(1, 1, "queue0", null);

      waitForBindings(0, "queues.testaddress", 1, 1, true);
      waitForBindings(1, "queues.testaddress", 1, 1, true);


      waitForBindings(0, "queues.testaddress", 1, 1, false);
      waitForBindings(1, "queues.testaddress", 1, 1, false);

      System.out.println(clusterDescription(servers[0]));


      for (BroadcastGroup group: servers[1].getClusterManager().getBroadcastGroups())
      {
         group.stop();
      }

      for (ClusterConnection conn : servers[0].getClusterManager().getClusterConnections())
      {
         ClusterConnectionImpl implConn = (ClusterConnectionImpl)conn;
         for (MessageFlowRecord record : implConn.getRecords().values())
         {
            ClusterConnectionBridge bridge = (ClusterConnectionBridge)record.getBridge();
            bridge.setupRetry(2, 1);
            bridge.connectionFailed(new HornetQException(1, "test"), false);
         }
         System.out.println("conn " + conn);
      }


      // More than 1 second timeout required to cleanup broadcasting
      Thread.sleep(1500);

      waitForTopology(servers[0], 1);

      waitForTopology(servers[1], 1);


      System.out.println(clusterDescription(servers[0]));

      waitForBindings(0, "queues.testaddress", 0, 0, false);
      waitForBindings(1, "queues.testaddress", 1, 1, false);



      for (BroadcastGroup group: servers[1].getClusterManager().getBroadcastGroups())
      {
         group.start();
      }

      waitForBindings(0, "queues.testaddress", 1, 1, false);
      waitForBindings(1, "queues.testaddress", 1, 1, false);

      waitForTopology(servers[0], 2);

      waitForTopology(servers[1], 2);

   }

   /*
    * This is like testStopStartServers but we make sure we pause longer than discovery group timeout
    * before restarting (5 seconds)
    */
   public void _testStartStopServersWithPauseBeforeRestarting() throws Exception
   {
      doTestStartStopServers(10000, 3000);
   }

}
TOP

Related Classes of org.hornetq.tests.integration.cluster.distribution.SymmetricClusterWithDiscoveryTest

TOP
Copyright © 2018 www.massapi.com. 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.