[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