[jboss-cvs] jboss-serialization/tests/org/jboss/serial/soaktest ...
Clebert Suconic
csuconic at jboss.com
Mon Aug 28 14:35:33 EDT 2006
User: csuconic
Date: 06/08/28 14:35:33
Added: tests/org/jboss/serial/soaktest
DataContainerMultiThreadTestCase.java
Log:
JBSER-88 - implementation of .clone method
Revision Changes Path
1.1 date: 2006/08/28 18:35:33; author: csuconic; state: Exp;jboss-serialization/tests/org/jboss/serial/soaktest/DataContainerMultiThreadTestCase.java
Index: DataContainerMultiThreadTestCase.java
===================================================================
package org.jboss.serial.soaktest;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import org.jboss.serial.DataSerializationTest;
import org.jboss.serial.data.TestReadResolve;
import org.jboss.serial.objectmetamodel.DataContainer;
public class DataContainerMultiThreadTestCase extends DataSerializationTest
{
static class TestThread extends Thread
{
Exception e;
DataContainer container;
Object originalObject;
public TestThread (DataContainer container, Object source)
{
this.container = container;
this.originalObject=source;
}
public void run()
{
for (int i=0;i<100;i++)
{
try
{
Thread.yield();
ObjectInput input = container.getInput();
Object newObject = input.readObject();
if (newObject==originalObject)
{
throw new Exception ("Object was the same for " + newObject.getClass().getName());
}
if (!newObject.equals(originalObject))
{
throw new Exception ("Object was not equals");
}
}
catch (Exception e)
{
e.printStackTrace();
this.e=e;
}
}
}
}
public void executTest(Object dataObject) throws Throwable {
if (dataObject instanceof String || dataObject instanceof String[] || dataObject instanceof TestReadResolve)
{
return;
}
System.out.println("Testing " + dataObject.getClass().getName());
DataContainer container = new DataContainer(null, null, null, false);
ObjectOutput output = container.getOutput();
output.writeObject(dataObject);
output.flush();
container.flush();
TestThread threads[] = new TestThread[100];
for (int i=0;i<threads.length;i++)
{
ObjectInput input = container.getInput();
Object newObject = input.readObject();
assertNotSame(dataObject, newObject);
assertEquals(dataObject,newObject);
threads[i] = new TestThread(container.cloneContainer(),newObject);
}
for (int i=0;i<threads.length;i++)
{
threads[i].start();
}
for (int i=0;i<threads.length;i++)
{
threads[i].join();
}
for (int i=0;i<threads.length;i++)
{
if (threads[i].e!=null)
{
throw threads[i].e;
}
}
}
}
More information about the jboss-cvs-commits
mailing list