/*
* 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.clusteredentity.test;
import java.util.Properties;
import javax.naming.InitialContext;
import org.jboss.test.cluster.clusteredentity.Customer;
import org.jboss.test.cluster.clusteredentity.EntityTest;
import org.jboss.test.JBossClusteredTestCase;
import junit.framework.Test;
/**
* Sample client for the jboss container.
*
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Id: EntityUnitTestCase.java 96150 2009-11-09 05:55:07Z bstansberry@jboss.com $
*/
public class EntityUnitTestCase
extends JBossClusteredTestCase
{
org.jboss.logging.Logger log = getLog();
private static final long SLEEP_TIME = 300l;
static boolean deployed = false;
static int test = 0;
private EntityTest tester0;
private EntityTest tester1;
public EntityUnitTestCase(String name)
{
super(name);
}
@Override
protected void tearDown() throws Exception
{
super.tearDown();
if (tester0 != null)
{
try
{
tester0.cleanup();
}
catch (Exception e)
{
log.error("Problem cleaning up tester0", e);
}
}
if (tester1 != null)
{
try
{
tester1.cleanup();
}
catch (Exception e)
{
log.error("Problem cleaning up tester1", e);
}
}
}
public void testAll() throws Exception
{
System.out.println("*** testServerFound()");
String node0 = System.getProperty("jbosstest.cluster.node0");
String node1 = System.getProperty("jbosstest.cluster.node1");
Properties prop0 = new Properties();
prop0.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
prop0.put("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");
prop0.put("java.naming.provider.url", "jnp://" + node0 + ":1099");
System.out.println("===== Node0 properties: ");
System.out.println(prop0);
Properties prop1 = new Properties();
prop1.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
prop1.put("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");
prop1.put("java.naming.provider.url", "jnp://" + node1 + ":1099");
System.out.println("===== Node1 properties: ");
System.out.println(prop1);
System.out.println("Lookup node 0");
InitialContext ctx0 = new InitialContext(prop0);
System.out.println("Create node 0");
tester0 = (EntityTest)ctx0.lookup("EntityTestBean/remote");
System.out.println("Lookup node 1");
InitialContext ctx1 = new InitialContext(prop1);
tester1 = (EntityTest)ctx1.lookup("EntityTestBean/remote");
tester0.getCache(getCacheConfigName());
Customer customer = tester0.createCustomer();
//Call finder twice since Hibernate seems to not actually save collections
//into cache on persist(), so make sure it is put into cache on find.
System.out.println("Find node 0");
customer = tester0.findByCustomerId(customer.getId());
System.out.println("Find(2) node 0");
customer = tester0.findByCustomerId(customer.getId());
//Check everything was in cache
System.out.println("Check cache 0");
try
{
tester0.loadedFromCache();
}
catch (Exception e)
{
log.info("Call to tester0 failed", e);
fail(e.getMessage());
}
// The above placement of the collection in the cache is replicated async
// so pause a bit before checking node 1
sleep(SLEEP_TIME);
//Now connect to cache on node2 and make sure it is all there
tester1.getCache(getCacheConfigName());
System.out.println("Find node 1");
customer = tester1.findByCustomerId(customer.getId());
//Check everything was in cache
System.out.println("Check cache 1");
assertEquals(null, tester1.loadedFromCache());
}
protected String getCacheConfigName()
{
return "pessimistic-shared";
}
public static Test suite() throws Exception
{
return getDeploySetup(EntityUnitTestCase.class, "clusteredentity-test.jar");
}
}