Author: manik.surtani(a)jboss.com
Date: 2007-10-26 08:15:22 -0400 (Fri, 26 Oct 2007)
New Revision: 4691
Modified:
core/trunk/src/main/java/org/jboss/cache/CacheImpl.java
core/trunk/src/main/java/org/jboss/cache/config/Configuration.java
core/trunk/src/test/java/org/jboss/cache/factories/UnitTestCacheConfigurationFactory.java
core/trunk/src/test/java/org/jboss/cache/replicated/ExceptionTest.java
Log:
Updated cfg to use jgroups flush-udp.xml file by default, and added helpers to
UnitTestCacheConfigurationFactory to inject delays.
Modified: core/trunk/src/main/java/org/jboss/cache/CacheImpl.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/CacheImpl.java 2007-10-26 10:46:14 UTC (rev
4690)
+++ core/trunk/src/main/java/org/jboss/cache/CacheImpl.java 2007-10-26 12:15:22 UTC (rev
4691)
@@ -4273,28 +4273,32 @@
if (log.isDebugEnabled())
{
log.debug("Created Multiplexer Channel for cache cluster " +
configuration.getClusterName() +
- " using stack " + configuration.getMultiplexerStack());
+ " using stack " +
configuration.getMultiplexerStack());
}
}
else
{
- if (configuration.getClusterConfig() == null)
- {
- log.debug("setting cluster properties to default value");
- configuration.setClusterConfig(configuration.getDefaultClusterConfig());
- }
+
try
{
- channel = new JChannel(configuration.getClusterConfig());
+ if (configuration.getClusterConfig() == null)
+ {
+ log.debug("setting cluster properties to default value");
+ channel = new JChannel(configuration.getDefaultClusterConfig());
+ }
+ else
+ {
+ if (log.isTraceEnabled())
+ {
+ log.trace("Cache cluster properties: " +
configuration.getClusterConfig());
+ }
+ channel = new JChannel(configuration.getClusterConfig());
+ }
}
- catch (Exception e)
+ catch (ChannelException el)
{
- throw new CacheException("Unable to create JGroups channel",
e);
+ el.printStackTrace();
}
- if (log.isTraceEnabled())
- {
- log.trace("cache properties: " +
configuration.getClusterConfig());
- }
}
configuration.getRuntimeConfig().setChannel(channel);
Modified: core/trunk/src/main/java/org/jboss/cache/config/Configuration.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/config/Configuration.java 2007-10-26 10:46:14
UTC (rev 4690)
+++ core/trunk/src/main/java/org/jboss/cache/config/Configuration.java 2007-10-26 12:15:22
UTC (rev 4691)
@@ -12,6 +12,7 @@
import org.jboss.cache.lock.IsolationLevel;
import org.w3c.dom.Element;
+import java.net.URL;
import java.util.Locale;
/**
@@ -629,23 +630,14 @@
}
/**
- * Returns the default JGroup properties.
+ * Returns a {@link java.net.URL} to a default JGroups configuration file.
+ * @return a default JGroups config file
*/
- public String getDefaultClusterConfig()
+ public URL getDefaultClusterConfig()
{
- return "UDP(mcast_addr=224.0.0.36;mcast_port=55566;ip_ttl=32;" +
- "mcast_send_buf_size=150000;mcast_recv_buf_size=80000):" +
- "PING(timeout=1000;num_initial_members=2):" +
- "MERGE2(min_interval=5000;max_interval=10000):" +
- "FD_SOCK:" +
- "VERIFY_SUSPECT(timeout=1500):" +
- "pbcast.NAKACK(gc_lag=50;retransmit_timeout=600,1200,2400,4800):"
+
- "UNICAST(timeout=600,1200,2400,4800):" +
- "pbcast.STABLE(desired_avg_gossip=20000):" +
- "FRAG(frag_size=8192):" +
- "pbcast.GMS(join_timeout=5000;join_retry_timeout=2000;" +
- "shun=false;print_local_addr=true):" +
- "pbcast.STATE_TRANSFER";
+ URL url = getClass().getClassLoader().getResource("flush-udp.xml");
+ if (log.isTraceEnabled()) log.trace("Using default JGroups configuration file
" + url);
+ return url;
}
Modified:
core/trunk/src/test/java/org/jboss/cache/factories/UnitTestCacheConfigurationFactory.java
===================================================================
---
core/trunk/src/test/java/org/jboss/cache/factories/UnitTestCacheConfigurationFactory.java 2007-10-26
10:46:14 UTC (rev 4690)
+++
core/trunk/src/test/java/org/jboss/cache/factories/UnitTestCacheConfigurationFactory.java 2007-10-26
12:15:22 UTC (rev 4691)
@@ -12,10 +12,12 @@
import org.jboss.cache.config.ConfigurationException;
import org.jboss.cache.transaction.TransactionSetup;
import org.jboss.cache.xml.XmlHelper;
+import org.jgroups.conf.XmlConfigurator;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import java.io.InputStream;
+import java.net.URL;
/**
* Cache configuration factory used by unit tests.
@@ -89,6 +91,47 @@
return XmlConfigurationParser.parseCacheLoaderConfig(element);
}
+ /**
+ * Helper method that takes a <b>JGroups</b> configuration file and
creates an old-style JGroups config {@link String} that can be used
+ * in {@link org.jboss.cache.config.Configuration#setClusterConfig(String)}. Note
that expressions
+ * in the file - such as <tt>${jgroups.udp.mcast_port:45588}</tt> are
expanded out accordingly.
+ * @param url url to the cfg file
+ * @return a String
+ */
+ public static String getClusterConfigFromFile(URL url)
+ {
+ try
+ {
+ XmlConfigurator conf = XmlConfigurator.getInstance(url);
+ String tmp = conf.getProtocolStackString();
+ // parse this string for ${} substitutions
+ // Highly crappy approach!!
+ tmp = tmp.replace("${jgroups.udp.mcast_addr:228.10.10.10}",
"228.10.10.10");
+ tmp = tmp.replace("${jgroups.udp.mcast_port:45588}",
"45588");
+ tmp = tmp.replace("${jgroups.udp.ip_ttl:2}", "2");
+ System.out.println("config string: " + tmp);
+ return tmp;
+
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Problems with url " + url, e);
+ }
+ }
+
+ /**
+ * Takes a JGroups configuration "old-style" String and injects the
"DELAY" protcol.
+ * @param jgroupsConfigString JGroups config string
+ * @param incomingDelay incoming delay
+ * @param outgoingDelay outgoing delay
+ * @return new string
+ */
+ public static String injectDelay(String jgroupsConfigString, int incomingDelay, int
outgoingDelay)
+ {
+ String delay = ":DELAY(in_delay=" +incomingDelay+
";out_delay="+outgoingDelay+")";
+ return jgroupsConfigString.substring(0, jgroupsConfigString.indexOf(":"))
+ delay + jgroupsConfigString.substring(jgroupsConfigString.indexOf(":"));
+ }
+
private static class UnitTestXmlConfigurationParser extends XmlConfigurationParser
{
Modified: core/trunk/src/test/java/org/jboss/cache/replicated/ExceptionTest.java
===================================================================
--- core/trunk/src/test/java/org/jboss/cache/replicated/ExceptionTest.java 2007-10-26
10:46:14 UTC (rev 4690)
+++ core/trunk/src/test/java/org/jboss/cache/replicated/ExceptionTest.java 2007-10-26
12:15:22 UTC (rev 4691)
@@ -1,11 +1,11 @@
package org.jboss.cache.replicated;
import org.jboss.cache.Cache;
-import org.jboss.cache.CacheImpl;
import org.jboss.cache.DefaultCacheFactory;
import org.jboss.cache.Fqn;
import org.jboss.cache.ReplicationException;
import org.jboss.cache.config.Configuration;
+import org.jboss.cache.factories.UnitTestCacheConfigurationFactory;
import org.jboss.cache.lock.TimeoutException;
import org.jboss.cache.misc.TestingUtil;
import org.jboss.cache.transaction.DummyTransactionManagerLookup;
@@ -58,11 +58,9 @@
{
cache1.getConfiguration().setSyncReplTimeout(1); // 1ms. this is *bound* to fail.
cache2.getConfiguration().setSyncReplTimeout(1);
+ String s =
UnitTestCacheConfigurationFactory.getClusterConfigFromFile(cache1.getConfiguration().getDefaultClusterConfig());
+ String newCfg = UnitTestCacheConfigurationFactory.injectDelay(s, 100, 100);
- String jgroupsCfg = cache1.getConfiguration().getDefaultClusterConfig();
- String delay = ":DELAY(in_delay=100;out_delay=100)";
- String newCfg = jgroupsCfg.substring(0, jgroupsCfg.indexOf(":")) + delay
+ jgroupsCfg.substring(jgroupsCfg.indexOf(":"));
-
cache1.getConfiguration().setClusterConfig(newCfg);
cache2.getConfiguration().setClusterConfig(newCfg);
Show replies by date