blob: 2ba5d99fea7ddf83703c0441a646b53612b05f65 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009 EclipseSource and others. All rights reserved. This
* program and the accompanying materials are made available under the terms of
* the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* EclipseSource - initial API and implementation
******************************************************************************/
package org.eclipse.ecf.tests.remoteservice.generic;
import java.io.IOException;
import java.net.ServerSocket;
import org.eclipse.ecf.remoteservice.IRemoteCall;
import org.eclipse.ecf.remoteservice.IRemoteCallListener;
import org.eclipse.ecf.remoteservice.IRemoteService;
import org.eclipse.ecf.remoteservice.events.IRemoteCallCompleteEvent;
import org.eclipse.ecf.remoteservice.events.IRemoteCallEvent;
import org.eclipse.ecf.tests.remoteservice.IConcatService;
import org.eclipse.equinox.concurrent.future.IFuture;
import junit.framework.TestCase;
public class SimpleTest extends TestCase {
public static final String TEST_STRING_1 = "foo";
public static final String TEST_STRING_2 = "bar";
SimpleConcatServer server;
SimpleConcatClient client;
protected void setUp() throws Exception {
super.setUp();
int freePort = getFreePort();
if (freePort == -1) throw new Exception("could not run test because could not find open port for server");
server = new SimpleConcatServer();
server.start(freePort);
client = new SimpleConcatClient();
client.start(freePort);
}
private int getFreePort() {
int port = -1;
try {
ServerSocket ss = new ServerSocket(0);
port = ss.getLocalPort();
ss.close();
} catch (IOException e) {
return -1;
}
return port;
}
protected void tearDown() throws Exception {
super.tearDown();
client.stop();
client = null;
server.stop();
server = null;
}
public void testSimpleClientAndServerWithProxy() throws Exception {
IRemoteService remoteService = client.getRemoteService();
assertNotNull(remoteService);
// Use proxy
String result = ((IConcatService) remoteService.getProxy()).concat(TEST_STRING_1,TEST_STRING_2);
assertTrue(result != null && result.equals(TEST_STRING_1+TEST_STRING_2));
}
private IRemoteCall getRemoteConcatCall(final String first, final String second) {
return new IRemoteCall() {
public String getMethod() {
return "concat";
}
public Object[] getParameters() {
return new String[] { first, second };
}
public long getTimeout() {
return 3000;
}};
}
public void testSimpleClientAndServerWithCallSync() throws Exception {
IRemoteService remoteService = client.getRemoteService();
assertNotNull(remoteService);
// Use callSync
String result = (String) remoteService.callSync(getRemoteConcatCall(TEST_STRING_2, TEST_STRING_1));
assertTrue(result != null && result.equals(TEST_STRING_2+TEST_STRING_1));
}
public void testSimpleClientAndServerWithFireAsync() throws Exception {
IRemoteService remoteService = client.getRemoteService();
assertNotNull(remoteService);
// Use callSync
remoteService.fireAsync(getRemoteConcatCall(TEST_STRING_2, TEST_STRING_1));
Thread.sleep(1000);
}
public void testSimpleClientAndServerWithCallAsync() throws Exception {
IRemoteService remoteService = client.getRemoteService();
assertNotNull(remoteService);
// Use callSync
remoteService.callAsync(getRemoteConcatCall(TEST_STRING_2, TEST_STRING_1));
Thread.sleep(1000);
}
String result = null;
public void testSimpleClientAndServerWithCallAsyncListener() throws Exception {
IRemoteService remoteService = client.getRemoteService();
assertNotNull(remoteService);
// Use callSync
remoteService.callAsync(getRemoteConcatCall(TEST_STRING_2, TEST_STRING_1),new IRemoteCallListener(){
public void handleEvent(IRemoteCallEvent event) {
if (event instanceof IRemoteCallCompleteEvent) {
result = (String) ((IRemoteCallCompleteEvent) event).getResponse();
}
}
});
Thread.sleep(1000);
assertNotNull(result);
assertTrue(result.equals(TEST_STRING_2+TEST_STRING_1));
}
public void testSimpleClientAndServerWithFuture() throws Exception {
IRemoteService remoteService = client.getRemoteService();
assertNotNull(remoteService);
// Use callSync
IFuture future = remoteService.callAsync(getRemoteConcatCall(TEST_STRING_2, TEST_STRING_1));
assertNotNull(future);
String result = (String) future.get();
assertTrue(result.equals(TEST_STRING_2+TEST_STRING_1));
}
}