package com.sun.s1asdev.jdbc.pooling.client;
import javax.naming.*;
import java.rmi.*;
import java.util.*;
import javax.sql.DataSource;
import com.sun.s1asdev.jdbc.pooling.ejb.SimpleSessionHome;
import com.sun.s1asdev.jdbc.pooling.ejb.SimpleSession;
import com.sun.ejte.ccl.reporter.SimpleReporterAdapter;
public class Client {
private static SimpleReporterAdapter stat = new SimpleReporterAdapter();
private static boolean rollback;
private static boolean isXA;
private static String testSuite = "Pooling ";
private static InitialContext ic;
public static void main(String[] args)
throws Exception {
try {
ic = new InitialContext();
} catch(NamingException ex) {
ex.printStackTrace();
}
Object objRef = ic.lookup("java:comp/env/ejb/SimpleSessionHome");
SimpleSessionHome simpleSessionHome = (SimpleSessionHome)
javax.rmi.PortableRemoteObject.narrow(objRef, SimpleSessionHome.class);
stat.addDescription("Running pooling testSuite ");
SimpleSession simpleSession = simpleSessionHome.create();
System.out.println("verifying uniqueness of all connection");
if(simpleSession.openAndCloseConnection(40)) {
stat.addStatus( testSuite + " openAndCloseConnection (non-xa) : ", stat.PASS );
} else {
stat.addStatus( testSuite + " openAndCloseConnection (non-xa) : ", stat.PASS );
}
System.out.println("creating connection upto max-pool-size of 32");
if(simpleSession.openMaxConnections(32)) {
stat.addStatus( testSuite + " openMaxConnections (non-xa) : ", stat.PASS );
} else {
stat.addStatus( testSuite + " openMaxConnections (non-xa) : ", stat.PASS );
}
rollback = false;
System.out.println("rollback set to " + rollback);
runTest(simpleSession, rollback);
rollback = true;
System.out.println("rollback set to " + rollback);
runTest(simpleSession, rollback);
stat.printSummary();
}
private static void runTest(SimpleSession simpleSession, boolean rollback) {
try {
//Connection opened and closed within transaction
//non-xa resource
isXA = false;
if ( simpleSession.test1(isXA, rollback) ) {
stat.addStatus( testSuite + " test1 rollback=" + rollback + " (non-xa. con opened closed within tx) : ", stat.PASS );
} else {
stat.addStatus( testSuite + " test1 rollback=" + rollback + " (non-xa. con opened closed within tx) : ", stat.FAIL );
}
//xa resource
isXA = true;
if ( simpleSession.test1(isXA, rollback) ) {
stat.addStatus( testSuite + " test1 rollback=" + rollback + " (xa. con opened closed within tx) : ", stat.PASS );
} else {
stat.addStatus( testSuite + " test1 rollback=" + rollback + " (xa. con opened closed within tx) : ", stat.FAIL );
}
//Connection opened within transaction
//but closed after transaction
isXA = false;
//non-xa resource
if ( simpleSession.test2(isXA, rollback) ) {
stat.addStatus( testSuite + " test2 rollback=" + rollback + " (non-xa. con opened closed after tx) : ", stat.PASS );
} else {
stat.addStatus( testSuite + " test2 rollback=" + rollback + " (non-xa. con opened closed after tx) : ", stat.FAIL );
}
//xa resource
isXA = true;
if ( simpleSession.test2(isXA, rollback) ) {
stat.addStatus( testSuite + " test2 rollback=" + rollback + " (xa. con opened closed after tx) : ", stat.PASS );
} else {
stat.addStatus( testSuite + " test2 rollback=" + rollback + " (xa. con opened closed after tx) : ", stat.FAIL );
}
//XA and Non-XA resource within same transaction
//non-xa resource and xa resource together
if ( simpleSession.test3(rollback) ) {
stat.addStatus( testSuite + " test3 rollback=" + rollback + " (xa non-xa within same tx) : ", stat.PASS );
} else {
stat.addStatus( testSuite + " test3 rollback=" + rollback + " (xa non-xa within same tx) : ", stat.FAIL );
}
}catch(Exception ex) {
ex.printStackTrace();
}
}
}