1
package org.jboss.test.remoting.transport.socket.ssl.handshake;
3
import org.apache.log4j.Level;
4
import org.jboss.jrunit.extensions.ServerTestCase;
5
import org.jboss.logging.Logger;
6
import org.jboss.remoting.InvokerLocator;
7
import org.jboss.remoting.ServerInvocationHandler;
8
import org.jboss.remoting.security.SSLSocketBuilder;
9
import org.jboss.remoting.transport.Connector;
10
import org.jboss.test.remoting.TestUtil;
11
import org.jboss.test.remoting.transport.mock.MockServerInvocationHandler;
12
import org.jboss.test.remoting.transport.socket.ssl.SSLInvokerConstants;
14
import javax.net.ServerSocketFactory;
15
import java.io.IOException;
16
import java.security.KeyManagementException;
17
import java.security.KeyStoreException;
18
import java.security.NoSuchAlgorithmException;
19
import java.security.UnrecoverableKeyException;
20
import java.security.cert.CertificateException;
21
import java.util.Iterator;
26
* This is the concrete test for invoker server.
28
* @author <a href="mailto:telrod@e2technologies.net">Tom Elrod</a>
30
public class InvokerServerTest extends ServerTestCase implements SSLInvokerConstants
32
private int serverPort = port;
33
private Connector connector = null;
35
private static final Logger log = Logger.getLogger(InvokerServerTest.class);
37
public void init(Map metatdata) throws Exception
41
serverPort = TestUtil.getRandomPort();
43
InvokerServerTest.log.debug("port = " + serverPort);
45
connector = new Connector();
46
InvokerLocator locator = new InvokerLocator(buildLocatorURI(metatdata));
47
connector.setInvokerLocator(locator.getLocatorURI());
49
ServerSocketFactory svrSocketFactory = createServerSocketFactory();
50
connector.setServerSocketFactory(svrSocketFactory);
54
connector.addInvocationHandler(getSubsystem(), getServerInvocationHandler());
58
protected String getTransport()
63
private ServerSocketFactory createServerSocketFactory()
64
throws NoSuchAlgorithmException, KeyManagementException, IOException,
65
CertificateException, UnrecoverableKeyException, KeyStoreException
67
ServerSocketFactory serverSocketFactory = null;
69
// since doing basic (using default ssl server socket factory)
70
// need to set the system properties to the keystore and password
71
String keyStoreFilePath = this.getClass().getResource("../.keystore").getFile();
72
System.setProperty("javax.net.ssl.keyStore", keyStoreFilePath);
73
System.setProperty("javax.net.ssl.keyStorePassword", "unit-tests-server");
75
SSLSocketBuilder server = new SSLSocketBuilder();
76
serverSocketFactory = server.createSSLServerSocketFactory();
78
return serverSocketFactory;
81
private String buildLocatorURI(Map metadata)
83
if (metadata == null || metadata.size() == 0)
85
return getTransport() + "://" + host + ":" + serverPort;
89
StringBuffer uriBuffer = new StringBuffer(getTransport() + "://localhost:" + serverPort);
91
Set keys = metadata.keySet();
94
uriBuffer.append("/?");
97
Iterator itr = keys.iterator();
100
String key = (String) itr.next();
101
String value = (String) metadata.get(key);
102
uriBuffer.append(key + "=" + value + "&");
104
return uriBuffer.substring(0, uriBuffer.length() - 1);
108
protected String getSubsystem()
113
protected ServerInvocationHandler getServerInvocationHandler()
115
return new MockServerInvocationHandler();
118
protected void setUp() throws Exception
123
protected void tearDown() throws Exception
125
if (connector != null)
132
public static void main(String[] args)
134
org.apache.log4j.BasicConfigurator.configure();
135
org.apache.log4j.Category.getRoot().setLevel(Level.INFO);
136
org.apache.log4j.Category.getInstance("org.jgroups").setLevel(Level.INFO);
137
org.apache.log4j.Category.getInstance("org.jboss.remoting").setLevel(Level.DEBUG);
138
org.apache.log4j.Category.getInstance("test").setLevel(Level.DEBUG);
140
InvokerServerTest server = new InvokerServerTest();