[jboss-cvs] JBossCache/old/tests/functional/org/jboss/cache/aop/memory ...
Ben Wang
bwang at jboss.com
Tue Oct 31 03:01:16 EST 2006
User: bwang
Date: 06/10/31 03:01:16
Added: old/tests/functional/org/jboss/cache/aop/memory
ReplicatedAopTest.java
Log:
Deprecated files moved to old dir.
Revision Changes Path
1.1 date: 2006/10/31 08:01:16; author: bwang; state: Exp;JBossCache/old/tests/functional/org/jboss/cache/aop/memory/ReplicatedAopTest.java
Index: ReplicatedAopTest.java
===================================================================
/*
* JBoss, Home of Professional Open Source
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jboss.cache.aop.memory;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jboss.cache.aop.PojoCache;
import org.jboss.cache.aop.test.Address;
import org.jboss.cache.aop.test.Person;
import org.jboss.cache.aop.test.SerializedAddress;
import org.jboss.cache.factories.XmlConfigurationParser;
import org.jboss.cache.marshall.SelectedClassnameClassLoader;
import org.jboss.cache.misc.TestingUtil;
import javax.naming.Context;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Properties;
/**
*
* @author Ben Wang
*/
public class ReplicatedAopTest extends TestCase
{
Log log_= LogFactory.getLog(ReplicatedAopTest.class);
PojoCache cache_;
PojoCache cache1_;
public ReplicatedAopTest(String name)
{
super(name);
}
protected void setUp() throws Exception
{
super.setUp();
Properties prop = new Properties();
prop.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.cache.transaction.DummyContextFactory");
cache_ = new PojoCache();
cache_.setConfiguration(new XmlConfigurationParser().parseFile("META-INF/replSync-service.xml"));
cache1_ = new PojoCache();
cache1_.setConfiguration(new XmlConfigurationParser().parseFile("META-INF/replSync-service.xml"));
cache_.start();
cache1_.start();
}
protected void tearDown() throws Exception
{
super.tearDown();
cache_.stop();
cache1_.stop();
}
// public void testDummy() {}
/**
* Test replication with classloaders.
* @throws Exception
*/
public void testCLLeakageBasic() throws Exception
{
SerializedAddress add = new SerializedAddress();
add.setCity("Taipei");
ClassLoader cla = getClassLoader();
WeakReference refa = new WeakReference(cla);
cache_.registerClassLoader("/aop", cla);
ClassLoader clb = getClassLoader();
WeakReference refb = new WeakReference(clb);
cache1_.registerClassLoader("/aop", clb);
cache_.put("/aop", "add", add);
TestingUtil.sleepThread(100);
try
{
Object ben = cache1_.get("/aop", "add");
assertEquals(add.toString(), ben.toString());
ben = null;
} catch (Exception ex)
{
fail("Test fails with exception " +ex);
}
cache_.remove("/aop", "add");
ClassLoader clc = getClassLoader();
cla=null;
clb=null;
cache_.registerClassLoader("/aop", clc); // replace cla
cache1_.registerClassLoader("/aop", clc); // replace cla
System.gc(); // force gc
Thread.currentThread().sleep(1000);
assertNull("Classloader should be gced ", refa.get());
assertNull("Classloader should be gced ", refb.get());
}
private static void forceOutOfMemoryError() throws Exception
{
ArrayList list = new ArrayList();
try
{
long i=0;
while(true)
{
list.add("BigBigBigBigBigBigBigBigBigBigBigBigBigBigBigBigBigBigBigBigBigBigBigBig" + (i++));
}
}
catch (Throwable ignored)
{
}
list.clear();
list=null;
System.gc();
Thread.currentThread().sleep(1000);
}
/**
* Test replication with classloaders.
* @throws Exception
*/
public void testCLLeakage() throws Exception
{
Person p = new Person();
p.setName("Ben");
Address add = new Address();
add.setCity("Taipei");
ClassLoader cla = getClassLoader();
WeakReference refa = new WeakReference(cla);
cache_.registerClassLoader("/aop", cla);
ClassLoader clb = getClassLoader();
cache1_.registerClassLoader("/aop", clb);
WeakReference refb = new WeakReference(clb);
cache_.putObject("/aop", p);
TestingUtil.sleepThread(100);
try
{
Object ben = cache1_.getObject("/aop");
assertEquals(p.toString(), ben.toString());
ben = null;
} catch (Exception ex)
{
fail("Test fails with exception " +ex);
}
cache_.removeObject("/aop");
ClassLoader clc = getClassLoader();
cache_.registerClassLoader("/aop", clc); // replace cla
cache1_.registerClassLoader("/aop", clc); // replace cla
cla = null;
clb = null;
forceOutOfMemoryError();
assertNull("Classloader should be gced ", refa.get());
assertNull("Classloader should be gced ", refb.get());
}
protected ClassLoader getClassLoader() throws Exception {
String[] includesClasses = { "org.jboss.cache.aop.test.Person",
"org.jboss.cache.aop.test.Address" };
String [] excludesClasses = {};
ClassLoader cl = Thread.currentThread().getContextClassLoader();
return new SelectedClassnameClassLoader(includesClasses, excludesClasses, cl);
}
public static Test suite() throws Exception
{
return new TestSuite(ReplicatedAopTest.class);
}
public static void main(String[] args) throws Exception
{
junit.textui.TestRunner.run(ReplicatedAopTest.suite());
}
}
More information about the jboss-cvs-commits
mailing list