User: d_jencks
Date: 01/09/11 21:55:38
Added: src/main/org/jboss/test/bank/test BankStressTestCase.java
Removed: src/main/org/jboss/test/bank/test Main.java
Log:
Changed naming scheme of tests to *UnitTestCase.java for short running tests and
*StressTestCase.java for lengthy tests. Made tests-unit and tests-stress targets in
build.xml
Revision Changes Path
1.1
jbosstest/src/main/org/jboss/test/bank/test/BankStressTestCase.java
Index: BankStressTestCase.java
===================================================================
/*
* Copyright 1999 by dreamBean Software,
* All rights reserved.
*/
package org.jboss.test.bank.test;
import java.util.*;
import java.lang.reflect.*;
import javax.ejb.*;
import javax.naming.*;
import javax.management.*;
import org.jboss.test.bank.interfaces.*;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.jboss.test.util.Deploy;
/**
*
* @see <related>
* @author $Author: d_jencks $
* @version $Revision: 1.1 $
*/
public class BankStressTestCase
extends TestCase
{
// Constants -----------------------------------------------------
// Attributes ----------------------------------------------------
int idx = 1;
int iter;
Exception exc;
// Static --------------------------------------------------------
static boolean deployed = false;
// Constructors --------------------------------------------------
public BankStressTestCase(String name)
{
super(name);
}
// Public --------------------------------------------------------
public void testTeller()
throws Exception
{
TellerHome home = (TellerHome)new
InitialContext().lookup(TellerHome.JNDI_NAME);
Teller teller = home.create();
BankHome bankHome = (BankHome)new InitialContext().lookup(BankHome.JNDI_NAME);
Bank bank = bankHome.create();
System.out.println("Acquire customers");
Customer marc = teller.getCustomer("Marc");
Customer rickard = teller.getCustomer("Rickard");
System.out.println("Acquire accounts");
Account from = teller.getAccount(marc, 200);
Account to = teller.getAccount(rickard, 200);
System.out.println("Show balance");
System.out.println(from.getPrimaryKey()+":"+from.getBalance());
System.out.println(to.getPrimaryKey()+":"+to.getBalance());
System.out.println("Transfer money");
long start = System.currentTimeMillis();
int iter = 10;
for (int i = 0; i < iter; i++)
teller.transfer(from, to, 50);
long end = System.currentTimeMillis();
System.out.println("Average call time: "+((end - start) / (iter*6)));
System.out.println("Show balance");
AccountHome accountHome = (AccountHome)new
InitialContext().lookup(AccountHome.JNDI_NAME);
Collection accts = accountHome.findAll();
Iterator enum = accts.iterator();
while(enum.hasNext())
{
Account acct = (Account)enum.next();
AccountData data = acct.getData();
System.out.println(data.getId()+"("+data.getOwner().getName()+"):"+data.getBalance());
acct.withdraw(data.getBalance()); // Clear
}
teller.remove();
}
public void testBank()
throws Exception
{
System.out.println("Get code");
BankHome bankHome = (BankHome)new InitialContext().lookup(BankHome.JNDI_NAME);
Bank bank = bankHome.create();
System.out.println("Bank id="+bank.getId());
bank.remove();
}
/* public void testCustomer()
throws Exception
{
System.out.println("Customer test----------------------------------");
System.out.println("Create Customer");
CustomerHome customerHome = (CustomerHome)new
InitialContext().lookup("Customer");
Account from, to;
try
{
from = accountHome.findByPrimaryKey("Marc");
from.deposit(200);
} catch (FinderException e)
{
from = accountHome.create("Marc", 200);
}
try
{
to = accountHome.findByPrimaryKey("Rickard");
} catch (FinderException e)
{
to = accountHome.create("Rickard", 0);
}
System.out.println("Show balance");
System.out.println(from.getPrimaryKey()+":"+from.getBalance());
System.out.println(to.getPrimaryKey()+":"+to.getBalance());
System.out.println("Transfer money");
TellerHome home = (TellerHome)new InitialContext().lookup("Teller");
Teller teller = home.create();
long start = System.currentTimeMillis();
for (int i = 0; i < 100; i++)
teller.transfer(from, to, 50);
teller.remove();
System.out.println("Show balance");
Iterator enum = accountHome.findAll();
while(enum.hasNext())
{
Account acct = (Account)enum.next();
System.out.println(acct.getPrimaryKey()+":"+acct.getBalance());
acct.withdraw(acct.getBalance()); // Clear
}
System.out.println("Teller test done----------------------------------");
}
*/
public void testMultiThread()
throws Exception
{
TellerHome home = (TellerHome)new
InitialContext().lookup(TellerHome.JNDI_NAME);
final Teller teller = home.create();
System.out.println("Acquire customers");
Customer marc = teller.getCustomer("Marc");
Customer rickard = teller.getCustomer("Rickard");
System.out.println("Acquire accounts");
final Account from = teller.getAccount(marc, 50);
final Account to = teller.getAccount(rickard, 0);
final Object lock = new Object();
final int threadCount = 10;
final int threadIterations = 10;
iter = threadCount;
System.out.println("Start test. "+threadCount+ " threads, "+threadIterations+"
iterations");
long start = System.currentTimeMillis();
for (int i = 0; i < threadCount; i++)
{
Thread.sleep(50);
new Thread(new Runnable()
{
public void run()
{
try
{
for (int j = 0; j < threadIterations; j++)
{
if (exc != null) break;
teller.transfer(from,to,50);
teller.transfer(from,to,-50);
// Thread.currentThread().yield();
// System.out.println(idx++);
}
} catch (Exception e)
{
exc = e;
}
synchronized(lock)
{
iter--;
System.out.println("Only "+iter+" left");
lock.notifyAll();
}
}
}).start();
}
synchronized(lock)
{
while(iter>0)
{
lock.wait();
}
}
if (exc != null) throw exc;
long end = System.currentTimeMillis();
System.out.println("Show balance");
System.out.println(from.getPrimaryKey()+":"+from.getBalance());
System.out.println(to.getPrimaryKey()+":"+to.getBalance());
System.out.println("Time:"+(end-start));
System.out.println("Avg.
time/call(ms):"+((end-start)/(threadCount*threadIterations*6)));
}
public void testMultiThread2()
throws Exception
{
TellerHome home = (TellerHome)new
InitialContext().lookup(TellerHome.JNDI_NAME);
final Teller teller = home.create();
System.out.println("Acquire customers");
final Customer marc = teller.getCustomer("Marc");
final Customer rickard = teller.getCustomer("Rickard");
final Object lock = new Object();
final int threadCount = 50;
final int threadIterations = 100;
iter = threadCount;
System.out.println("Start test. "+threadCount+ " threads, "+threadIterations+"
iterations");
long start = System.currentTimeMillis();
for (int i = 0; i < threadCount; i++)
{
Thread.sleep(500); // Wait between each client
new Thread(new Runnable()
{
public void run()
{
try
{
Account from = teller.createAccount(marc, 50);
Account to = teller.createAccount(rickard, 0);
for (int j = 0; j < threadIterations; j++)
{
if (exc != null) break;
teller.transfer(from,to,50);
teller.transfer(from,to,-50);
// Thread.currentThread().yield();
// System.out.println(idx++);
}
} catch (Exception e)
{
exc = e;
}
synchronized(lock)
{
iter--;
System.out.println("Only "+iter+" left");
lock.notifyAll();
}
}
}).start();
}
synchronized(lock)
{
while(iter>0)
{
lock.wait();
}
}
if (exc != null) throw exc;
long end = System.currentTimeMillis();
System.out.println("Time:"+(end-start));
System.out.println("Avg.
time/call(ms):"+((end-start)/(threadCount*threadIterations*6)));
}
public void testTransaction()
throws Exception
{
TellerHome home = (TellerHome)new
InitialContext().lookup(TellerHome.JNDI_NAME);
Teller teller = home.create();
System.out.println("Acquire customers");
Customer marc = teller.getCustomer("Marc");
System.out.println("Marc acquired");
Customer rickard = teller.getCustomer("Rickard");
System.out.println("Rickard acquired");
System.out.println("Acquire accounts");
Account from = teller.getAccount(marc, 50);
Account to = teller.getAccount(rickard, 0);
System.out.println("Show balance");
System.out.println(from.getPrimaryKey()+":"+from.getBalance());
System.out.println(to.getPrimaryKey()+":"+to.getBalance());
System.out.println("Transfer money");
teller.transfer(from, to, 50);
System.out.println("Transfer done");
System.out.println("Show balance");
System.out.println(from.getPrimaryKey()+"("+from.getOwner().getName()+"):"+from.getBalance());
System.out.println(to.getPrimaryKey()+"("+to.getOwner().getName()+"):"+to.getBalance());
teller.remove();
}
public void testTransfer()
throws Exception
{
// Nr of transfers
iter = 100;
TellerHome home = (TellerHome)new
InitialContext().lookup(TellerHome.JNDI_NAME);
Teller teller = home.create();
System.out.println("Acquire customers");
Customer marc = teller.getCustomer("Marc");
System.out.println("Marc acquired");
Customer rickard = teller.getCustomer("Rickard");
System.out.println("Rickard acquired");
System.out.println("Acquire accounts");
Account from = teller.getAccount(marc, 50*iter);
Account to = teller.getAccount(rickard, 0);
System.out.println("Show balance");
System.out.println(from.getPrimaryKey()+":"+from.getBalance());
System.out.println(to.getPrimaryKey()+":"+to.getBalance());
System.out.println("Transfer money");
long start = System.currentTimeMillis();
teller.transferTest(from, to, 50, iter);
long end = System.currentTimeMillis();
System.out.println("Transfer done");
System.out.println("Total time(ms):"+(end-start));
System.out.println("Avg. time/call(ms):"+((end-start)/(iter*2)));
System.out.println("Show balance");
System.out.println(from.getPrimaryKey()+":"+from.getBalance());
System.out.println(to.getPrimaryKey()+":"+to.getBalance());
teller.remove();
}
public void testReadOnly()
throws Exception
{
// Nr of transfers
iter = 100;
TellerHome home = (TellerHome)new
InitialContext().lookup(TellerHome.JNDI_NAME);
Teller teller = home.create();
System.out.println("Acquire customers");
Customer marc = teller.getCustomer("Marc");
System.out.println("Marc acquired");
Customer rickard = teller.getCustomer("Rickard");
System.out.println("Rickard acquired");
System.out.println("Acquire accounts");
Account from = teller.getAccount(marc, 50*iter);
Account to = teller.getAccount(rickard, 0);
System.out.println("Do read calls");
long start = System.currentTimeMillis();
for (int i = 0; i < iter; i++)
{
marc.getName();
from.getBalance();
rickard.getName();
to.getBalance();
}
long end = System.currentTimeMillis();
System.out.println("Calls done");
System.out.println("Total time(ms):"+(end-start));
System.out.println("Avg. time/call(ms):"+((end-start)/(iter*4)));
teller.remove();
}
public void testPassivation()
throws Exception
{
// Create a bunch of customers, to test passivation
iter = 200;
CustomerHome home = (CustomerHome)new
InitialContext().lookup(CustomerHome.JNDI_NAME);
System.out.println("Create customers");
for (int i = 0; i < iter; i++)
home.create(i+"", "Smith_"+i);
System.out.println("Customers created");
}
public void testFinder()
throws Exception
{
AccountHome home = (AccountHome)new
InitialContext().lookup(AccountHome.JNDI_NAME);
System.out.println("Get large accounts");
Iterator enum = home.findLargeAccounts(-1).iterator();
while (enum.hasNext())
{
Account acct = (Account)enum.next();
System.out.println(acct.getOwner().getName()+":"+acct.getBalance());
}
}
protected void setUp()
throws Exception
{
if (deployed) return;
// System.out.println("Deploying");
// new org.jboss.jmx.client.Deployer().deploy("../deploy/bank.jar");
deployed = true;
System.out.println("Remove accounts");
{
AccountHome home = (AccountHome)new
InitialContext().lookup(AccountHome.JNDI_NAME);
Collection accounts = home.findAll();
Iterator enum = accounts.iterator();
while(enum.hasNext())
{
Account acct = (Account)enum.next();
System.out.println("Removing "+acct.getPrimaryKey());
acct.remove();
}
}
System.out.println("Remove customers");
{
CustomerHome home = (CustomerHome)new
InitialContext().lookup(CustomerHome.JNDI_NAME);
Collection customers = home.findAll();
Iterator enum = customers.iterator();
while(enum.hasNext())
{
Customer cust = (Customer)enum.next();
System.out.println("Removing "+cust.getPrimaryKey());
cust.remove();
}
}
}
/**
* Setup the test suite.
*/
public static Test suite() {
TestSuite suite = new TestSuite();
// add a test case to deploy our support applications
String filename = "bank.jar";
suite.addTest(new Deploy.Deployer(filename));
suite.addTest(new TestSuite(BankStressTestCase.class));
// add a test case to undeploy our support applications
suite.addTest(new Deploy.Undeployer(filename));
return suite;
}
}
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development