blob: 2b5777557097a8d551a094cc089c9fe3384819f4 [file] [log] [blame]
/*
* Copyright (c) 2001, 2018 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the
* Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
* version 2 with the GNU Classpath Exception, which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
*/
package com.sun.s1peqe.loadbalancing.client;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;
import java.util.*;
import com.sun.s1peqe.ejb.bmp.enroller.ejb.*;
import com.sun.ejte.ccl.reporter.SimpleReporterAdapter;
import java.util.LinkedList;
import java.util.Vector;
import java.net.InetAddress;
import java.net.MalformedURLException;
import java.net.UnknownHostException;
import org.glassfish.jndi.cosnaming.IiopUrl;
public class EnrollerClient {
private SimpleReporterAdapter stat =
new SimpleReporterAdapter("appserv-tests");
public static void main(String[] args) {
EnrollerClient client = new EnrollerClient();
// run the tests
client.runTestClient(args);
}
public void runTestClient(String[] args) {
try{
Hashtable env = new Hashtable();
stat.addDescription("Testing loadbalancing app ...");
test01(env, args);
stat.printSummary("loadbalancingAppID");
} catch (Exception ex) {
System.out.println("Exception in runTestClient: " + ex.toString());
ex.printStackTrace();
}
}
private void test01(Hashtable env, String[] args) {
try {
env.put("java.naming.factory.initial",
"com.sun.appserv.naming.S1ASCtxFactory");
Context initial = new InitialContext(env);
System.out.println("Looking up MEJB...");
Object objref = initial.lookup("ejb/mgmt/MEJB");
System.out.println("Looked up ejb/mgmt/MEJB with context 0");
String jndi = "";
if (args.length == 3 && args[2].equals("standalone")) {
jndi = "ejb/MyStudent";
} else jndi = "java:comp/env/ejb/SimpleStudent";
Context initial1 = new InitialContext(env);
objref = initial1.lookup(jndi);
System.out.println("Looked up " + jndi + " with context 1");
StudentHome sHome =
(StudentHome) PortableRemoteObject.narrow(objref,
StudentHome.class);
Student denise = sHome.create("823", "Denise Smith");
Context initial2 = new InitialContext(env);
objref= initial2.lookup(jndi);
System.out.println("Looked up " + jndi + " with context 2");
sHome =
(StudentHome) PortableRemoteObject.narrow(objref,
StudentHome.class);
Student jim = sHome.create("828", "Jim Goodyear");
Context initial3 = new InitialContext(env);
objref= initial3.lookup("ejb/MyStudent");
System.out.println("Looked up ejb/MyStudent with context 3");
sHome =
(StudentHome) PortableRemoteObject.narrow(objref,
StudentHome.class);
Student scott = sHome.create("826", "Scott White");
Context initial4 = new InitialContext(env);
objref= initial4.lookup("ejb/MyStudent");
System.out.println("Looked up ejb/MyStudent with context 4");
sHome =
(StudentHome) PortableRemoteObject.narrow(objref,
StudentHome.class);
Student john = sHome.create("844", "John Wayne");
Context initial5 = new InitialContext(env);
objref = initial5.lookup("corbaname:iiop:" + args[0] + ":" + args[1] + "#ejb/MyStudent");
System.out.println("Looked up corbaname:iiop:" + args[0] + ":" + args[1] + "#ejb/MyStudent");
sHome =
(StudentHome) PortableRemoteObject.narrow(objref,
StudentHome.class);
Student tim = sHome.create("555", "Tim Duncan");
System.out.println("**************************************");
System.out.println("Loadbalancing for java:comp names :");
String[] deniseEndpoint = denise.getServerHostPort();
System.out.println("Denise Smith created on " +
deniseEndpoint[0] + ":" + deniseEndpoint[1]);
String[] jimEndpoint = jim.getServerHostPort();
System.out.println("Jim Goodyear created on " +
jimEndpoint[0] + ":" + jimEndpoint[1]);
System.out.println("**************************************");
System.out.println("**************************************");
System.out.println("Loadbalancing for global jndi names :");
String[] scottEndpoint = scott.getServerHostPort();
System.out.println("Scott White created on " +
scottEndpoint[0] + ":" + scottEndpoint[1]);
String[] johnEndpoint = john.getServerHostPort();
System.out.println("John Wayne created on " +
johnEndpoint[0] + ":" + johnEndpoint[1]);
System.out.println("**************************************");
System.out.println("**************************************");
String[] timEndpoint = tim.getServerHostPort();
System.out.println("Tim Duncan created on " +
timEndpoint[0] + ":" + timEndpoint[1]);
System.out.println("**************************************");
boolean pass = false;
String[] addr = getAddressPortList(args[0] + ":" + args[1]);
for (int j = 0; j < addr.length; j++) {
System.out.println("addr[j]..." + addr[j]);
if ((addr[j].trim()).equals((timEndpoint[0] + ":" + timEndpoint[1]).trim())) {
System.out.println("found right address..." + addr[j]);
pass = true;
break;
}
}
if (!deniseEndpoint[0].equals(jimEndpoint[0]) &&
!johnEndpoint[0].equals(scottEndpoint[0]) && pass == true) {
System.out.println("timEndpoint[0] =" + timEndpoint[0]);
System.out.println("LOADBALANCING SUCCESSFUL!!");
stat.addStatus("load balancing", stat.PASS);
} else if (!deniseEndpoint[1].equals(jimEndpoint[1]) &&
!johnEndpoint[1].equals(scottEndpoint[1]) && pass == true) {
System.out.println("LOADBALANCING SUCCESSFUL!!");
stat.addStatus("load balancing", stat.PASS);
}
} catch (Exception ex) {
stat.addStatus("load balancing", stat.FAIL);
System.err.println("Caught an unexpected exception!");
ex.printStackTrace();
}
}
/**
* following methods (over-loaded) for getting all IP addresses corresponding
* to a particular host.
* (multi-homed hosts).
*/
private String [] getAddressPortList(String host) {
Vector addressPortVector = new Vector();
try {
IiopUrl url = new IiopUrl("iiop://"+host);
String [] apList = getAddressPortList(url);
for (int j=0; j<apList.length; j++) {
addressPortVector.addElement(apList[j]);
}
} catch (MalformedURLException me) {
me.printStackTrace();
}
String [] ret = new String[addressPortVector.size()];
for (int i=0; i<ret.length; i++) {
ret[i] = (String)addressPortVector.elementAt(i);
}
// We return a list of <IP ADDRESS>:<PORT> values
return ret;
}
private String [] getAddressPortList(IiopUrl iiopUrl) {
// Pull out the host name and port
IiopUrl.Address iiopUrlAddress =
(IiopUrl.Address)(iiopUrl.getAddresses().elementAt(0));
String host = iiopUrlAddress.host;
int portNumber = iiopUrlAddress.port;
String port = Integer.toString(portNumber);
// We return a list of <IP ADDRESS>:<PORT> values
return getAddressPortList(host, port);
}
private String [] getAddressPortList(String host, String port) {
// Get the ip addresses corresponding to the host
try {
InetAddress [] addresses = InetAddress.getAllByName(host);
String[] ret = new String[addresses.length];
for (int i = 0; i < addresses.length; i++) {
ret[i] = addresses[i].getHostAddress() + ":" + port;
}
// We return a list of <IP ADDRESS>:<PORT> values
return ret;
} catch (UnknownHostException ukhe) {
ukhe.printStackTrace();
return null;
}
}
}