User: salborini
Date: 00/10/09 11:12:28
Added: src/main/org/jboss/test/lock/test Main.java
Log:
New test for locking
Revision Changes Path
1.1 jbosstest/src/main/org/jboss/test/lock/test/Main.java
Index: Main.java
===================================================================
package org.jboss.test.lock.test;
import java.rmi.*;
import java.util.HashMap;
import java.util.StringTokenizer;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.ejb.FinderException;
import org.jboss.test.lock.interfaces.EnterpriseEntityHome;
import org.jboss.test.lock.interfaces.EnterpriseEntity;
public class Main {
boolean deployed = false;
int nbThreads;
int iterations;
boolean b2b;
HashMap param = new HashMap();
EnterpriseEntity entity;
public static void main(String arg[]) {
Main main = new Main(arg);
main.go();
}
public Main(String arg[]) {
// scanning parameters
int i = 0;
while (i < arg.length) {
StringTokenizer st = new StringTokenizer (arg[i++], "=");
param.put (st.nextToken (), st.hasMoreTokens () ?
st.nextToken () : "");
}
}
public void go() {
try {
if (param.containsKey("help") || param.containsKey("-help")) {
System.out.println("Valid Parameters:");
System.out.println(" threads=<t> run <t> threads
concurrently (default 2)");
System.out.println(" iterations=<n> each thread will
perform <n> calls (default 10)");
System.out.println(" b2b use bean to bean
calls (default: single bean call)");
System.out.println();
System.exit(0);
}
init(); // get params
deploy(); // deploy the bean
Context ctx = new InitialContext();
EnterpriseEntityHome home =
(EnterpriseEntityHome)ctx.lookup("EnterpriseEntity");
try {
entity = home.findByPrimaryKey("seb");
} catch (FinderException e) {
entity = home.create("seb");
}
if (b2b) entity.setNextEntity("daniel");
Worker[] threads = new Worker[nbThreads];
System.out.println("Spawning " + nbThreads + " threads for " +
iterations + " iterations" +
(b2b ? " with bean to bean call" : " with single bean
call"));
for (int i=0; i<nbThreads; i++) {
threads[i] = new Worker("thread no " + (i+1));
threads[i].start();
}
for (int i=0; i<nbThreads; i++) threads[i].join();
} catch (Exception e) {
e.printStackTrace();
}
}
private void init() {
nbThreads = 2;
try {
nbThreads = Integer.parseInt((String)param.get("threads"));
} catch (Exception e) {
// ignore
}
iterations = 10;
try {
iterations = Integer.parseInt((String)param.get("iterations"));
} catch (Exception e) {
// ignore
}
b2b=false;
try {
b2b = param.containsKey("b2b");
} catch (Exception e) {
// ignore
}
}
protected void deploy() throws Exception {
if (deployed) return;
System.out.println("_____________________________________________");
System.out.println();
System.out.println("jBoss, the EJB Open Source Server");
System.out.println("Copyright (C), The jBoss Organization, 2000");
System.out.println("_____________________________________________");
System.out.println();
System.out.println("Welcome to the lock test v0.1");
System.out.println("_____________________________________________");
System.out.println();
System.out.print("Deploying the bean...");
System.out.flush();
new org.jboss.jmx.client.Deployer().deploy("../deploy/locktest.jar");
deployed = true;
System.out.println("done!");
}
public class Worker extends Thread {
public String name;
public boolean running;
public Worker(String name) {
this.name = name;
running = true;
}
public void run() {
long start = System.currentTimeMillis();
int i;
for (i=0; i<iterations; i++) {
if (!running) break;
try {
if (b2b) {
entity.setAndCopyField(name);
} else {
entity.setField(name);
}
System.out.println(name + " " + (i+1) + "
iterations done");
} catch (Exception e) {
System.out.println(name + " caught an
exception, dying");
e.printStackTrace();
running = false;
}
}
long end = System.currentTimeMillis();
System.out.println(name + ": did " + i + " iterations in " +
(end-start) + "ms");
}
}
}