/*
* JBoss, Home of Professional Open Source.
* Copyright 2006, Red Hat Middleware LLC, and individual contributors
* as indicated by the @author tags. See the copyright.txt file in the
* distribution for a full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jboss.test.cluster.defaultcfg.ejb2.test;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.util.Properties;
import javax.naming.InitialContext;
import junit.framework.Test;
import org.jboss.logging.Logger;
import org.jboss.test.cluster.testutil.DBSetup;
import org.jnp.interfaces.NamingContext;
/**
* Tests the RetryInterceptor with HA-JNDI autodiscovery.
* This test is separate from the other SingleRetryInterceptor tests
* so it can be excluded in tests of configs that disable HA-JNDI auto-discovery.
*
* @author <a href="mailto://brian.stansberry@jboss.com">Brian Stansberry</a>
* @version $Revision $
*/
public class RetryInterceptorAutoDiscoveryUnitTestCase extends RetryInterceptorTestBase
{
// NOTE: these variables must be static as apparently a separate instance
// of this class is created for each test.
private static boolean deployed0 = false;
private static boolean deployed1 = false;
/**
* Create a new RetryInterceptorUnitTestCase.
*
* @param name
*/
public RetryInterceptorAutoDiscoveryUnitTestCase(String name)
{
super(name);
log = Logger.getLogger(getClass());
}
public static Test suite() throws Exception
{
return DBSetup.getDeploySetup(RetryInterceptorAutoDiscoveryUnitTestCase.class, "cif-ds.xml");
}
/**
* Tests that the retry interceptor works properly if the naming context
* is established by using org.jnp.interfaces.NamingContextFactory
* and auto-discovery is enabled.
*
* @throws Exception
*/
public void testRetryWithJnpAndAutoDiscovery() throws Exception
{
getLog().debug("+++ Enter testRetryWithJnpAndAutoDiscovery()");
// Create a jndi.properties in the temp dir with special configs
// to prevent autodiscovery spuriously discovering random servers
// on the network. When the RetryCaller runs, it will create a
// special classloader that will pick up this file
if (customJndiDir == null)
customJndiDir = new File(System.getProperty("java.io.tmpdir"),
"retry-int-test");
if (!customJndiDir.exists())
customJndiDir.mkdir();
customJndiProperties = new File(customJndiDir, "jndi.properties");
FileOutputStream fos = new FileOutputStream(customJndiProperties);
OutputStreamWriter writer = new OutputStreamWriter(fos);
writer.write(NamingContext.JNP_DISCOVERY_TTL + "=" + DISCOVERY_TTL + "\n");
if (DISCOVERY_GROUP != null && "".equals(DISCOVERY_GROUP) == false)
{
// The server isn't listening on the std multicast address
writer.write(NamingContext.JNP_DISCOVERY_GROUP + "=" + DISCOVERY_GROUP + "\n");
}
if (DISCOVERY_PARTITION != null && "".equals(DISCOVERY_PARTITION) == false)
{
// Limit to the partition this test environment is using
writer.write(NamingContext.JNP_PARTITION_NAME + "=" + DISCOVERY_PARTITION + "\n");
}
writer.close();
getLog().debug("Created custom jndi.properties at " + customJndiProperties +
" -- DISCOVERY_GROUP is " + DISCOVERY_GROUP +
" -- DISCOVERY_PARTITION is " + DISCOVERY_PARTITION);
Properties env = getNamingProperties("org.jnp.interfaces.NamingContextFactory", true);
InitialContext ctx = new InitialContext(env);
sfsbTest(ctx, env);
}
protected boolean isDeployed0()
{
return deployed0;
}
protected void setDeployed0(boolean deployed)
{
deployed0 = deployed;
}
protected boolean isDeployed1()
{
return deployed1;
}
protected void setDeployed1(boolean deployed)
{
deployed1 = deployed;
}
}