use of io.fabric8.dosgi.tcp.ServerInvokerImpl in project fabric8 by jboss-fuse.
the class InvocationTest method testNoOverflow.
@Test(timeout = 30 * 1000)
public void testNoOverflow() throws Exception {
DispatchQueue queue = Dispatch.createQueue();
HashMap<String, SerializationStrategy> map = new HashMap<String, SerializationStrategy>();
map.put("protobuf", new ProtobufSerializationStrategy());
ServerInvokerImpl server = new ServerInvokerImpl("tcp://localhost:0", queue, map);
server.start();
ClientInvokerImpl client = new ClientInvokerImpl(queue, map);
client.start();
try {
server.registerService("service-id", new ServerInvoker.ServiceFactory() {
public Object get() {
return new HelloImpl();
}
public void unget() {
}
}, HelloImpl.class.getClassLoader());
InvocationHandler handler = client.getProxy(server.getConnectAddress(), "service-id", HelloImpl.class.getClassLoader());
Hello hello = (Hello) Proxy.newProxyInstance(HelloImpl.class.getClassLoader(), new Class[] { Hello.class }, handler);
char[] chars = new char[65 * 1024];
String payload = new String(chars);
for (int i = 0; i < 100; i++) {
hello.hello(payload);
}
} finally {
server.stop();
client.stop();
}
}
use of io.fabric8.dosgi.tcp.ServerInvokerImpl in project fabric8 by jboss-fuse.
the class TransportFailureTest method testInvoke.
@Test
public void testInvoke() throws Exception {
DispatchQueue queue = Dispatch.createQueue();
HashMap<String, SerializationStrategy> map = new HashMap<String, SerializationStrategy>();
map.put("protobuf", new ProtobufSerializationStrategy());
ServerInvokerImpl server = new ServerInvokerImpl("tcp://localhost:0", queue, map);
server.start();
ClientInvokerImpl client = new ClientInvokerImpl(queue, map);
client.start();
try {
server.registerService("service-id", new ServerInvoker.ServiceFactory() {
public Object get() {
return new HelloImpl();
}
public void unget() {
}
}, HelloImpl.class.getClassLoader());
InvocationHandler handler = client.getProxy(server.getConnectAddress(), "service-id", HelloImpl.class.getClassLoader());
Hello hello = (Hello) Proxy.newProxyInstance(HelloImpl.class.getClassLoader(), new Class[] { Hello.class }, handler);
AsyncCallbackFuture<String> future1 = new AsyncCallbackFuture<String>();
hello.hello("Guillaume", future1);
long t0 = System.currentTimeMillis();
try {
assertEquals("Hello Guillaume!", future1.get(MAX_DELAY, TimeUnit.MILLISECONDS));
fail("Should have thrown an exception");
} catch (Exception e) {
// Expected
long t1 = System.currentTimeMillis();
assertTrue(t1 - t0 > SLEEP_TIME / 2);
assertTrue(t1 - t0 < MAX_DELAY / 2);
}
} finally {
server.stop();
client.stop();
}
}
use of io.fabric8.dosgi.tcp.ServerInvokerImpl in project fabric8 by jboss-fuse.
the class Manager method init.
public void init() throws Exception {
// Create client and server
this.client = new ClientInvokerImpl(queue, timeout, serializationStrategies);
this.server = new ServerInvokerImpl(uri, queue, serializationStrategies);
this.client.start();
this.server.start();
// ZooKeeper tracking
try {
create(curator, DOSGI_REGISTRY, CreateMode.PERSISTENT);
} catch (KeeperException.NodeExistsException e) {
// The node already exists, that's fine
}
this.tree = new TreeCacheExtended(curator, DOSGI_REGISTRY, true);
this.tree.getListenable().addListener(this);
this.tree.start();
// UUID
this.uuid = Utils.getUUID(this.bundleContext);
// Service listener filter
String filter = "(" + RemoteConstants.SERVICE_EXPORTED_INTERFACES + "=*)";
// Initialization
this.bundleContext.addServiceListener(this, filter);
// Service registration
this.registration = this.bundleContext.registerService(new String[] { ListenerHook.class.getName(), EventHook.class.getName(), FindHook.class.getName() }, this, null);
// Check existing services
ServiceReference[] references = this.bundleContext.getServiceReferences((String) null, filter);
if (references != null) {
for (ServiceReference reference : references) {
exportService(reference);
}
}
}
Aggregations