package test.servantscaling;
import org.omg.CosNaming.*;
public class Client
{
private SessionFactory sf;
private org.omg.CORBA.ORB orb;
private NamingContextExt nc;
public Client (String args[])
{
try {
orb = org.omg.CORBA.ORB.init(args,null);
nc = NamingContextExtHelper.narrow
(orb.resolve_initial_references("NameService"));
sf = SessionFactoryHelper.narrow
(nc.resolve(nc.to_name("ServantScaling/SessionFactory")));
}
catch(Exception e)
{
sf = null;
e.printStackTrace();
}
}
public void setPoa (POA_Kind pk)
{
System.out.println ("Setting poa to " + pk.value());
long startTime = System.currentTimeMillis();
sf.set_poa (pk);
long endTime = System.currentTimeMillis();
long delta = endTime - startTime;
System.out.println ("set poa took " + delta + " msec");
}
public void runTest() {
try {
int counts[] = {100, 2000, 5000, 20000, 100000, 200000};
for (int i = 0; i < counts.length; i++) {
System.out.println ("creating " + counts[i] + " objects");
long startTime = System.currentTimeMillis();
sf.create_sessions (counts[i]);
long endTime = System.currentTimeMillis();
long delta = endTime - startTime;
System.out.println ("creation took " + delta + " msec");
startTime = System.currentTimeMillis();
System.out.println ("sampling sessions");
int sample = 100;
for (int j = 0; j < counts[i]; j += counts[i]/sample) {
Session s = sf.get_session (j);
}
endTime = System.currentTimeMillis();
delta = endTime - startTime;
System.out.println ("sampling " + sample + " objects took " + delta + " msec, or " + (delta/sample) + " per call");
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String args[])
{
//Client
System.out.println(">testing client...");
Client c = new Client(args);
if (c.sf == null) {
System.out.println ("Unable to initialize client");
return;
}
// c.setPoa (POA_Kind.PK_SYSTEMID);
// c.runTest();
c.setPoa (POA_Kind.PK_USERID);
c.runTest();
c.setPoa (POA_Kind.PK_DEFSERVANT);
c.runTest();
c.setPoa (POA_Kind.PK_SERVANTLOC);
c.runTest();
}
}