use of org.exoplatform.services.rpc.jgv3.RPCServiceImpl in project kernel by exoplatform.
the class TestRPCServiceImpl method testParameters.
public void testParameters() {
InitParams params = null;
try {
new RPCServiceImpl(container.getContext(), params, configManager);
fail("We expect a IllegalArgumentException since the jgroups config cannot be found");
} catch (IllegalArgumentException e) {
// OK
}
params = new InitParams();
try {
new RPCServiceImpl(container.getContext(), params, configManager);
fail("We expect a IllegalArgumentException since the jgroups config cannot be found");
} catch (IllegalArgumentException e) {
// OK
}
ValueParam paramConf = new ValueParam();
paramConf.setName(RPCServiceImpl.PARAM_JGROUPS_CONFIG);
params.addParameter(paramConf);
try {
new RPCServiceImpl(container.getContext(), params, configManager);
fail("We expect a IllegalArgumentException since the jgroups config cannot be found");
} catch (IllegalArgumentException e) {
// OK
}
paramConf.setValue("fakePath");
try {
new RPCServiceImpl(container.getContext(), params, configManager);
fail("We expect a IllegalArgumentException since the jgroups config cannot be found");
} catch (IllegalArgumentException e) {
// OK
}
paramConf.setValue("jar:/conf/portal/udp.xml");
RPCServiceImpl service = null;
try {
service = new RPCServiceImpl(container.getContext(), params, configManager);
assertEquals(RPCServiceImpl.DEFAULT_TIMEOUT, service.getDefaultTimeout());
assertEquals(RPCServiceImpl.DEFAULT_RETRY_TIMEOUT, service.getRetryTimeout());
assertEquals(true, service.isAllowFailover());
assertEquals(RPCServiceImpl.CLUSTER_NAME + "-" + container.getContext().getName(), service.getClusterName());
} finally {
if (service != null) {
service.stop();
}
}
ValueParam paramTimeout = new ValueParam();
paramTimeout.setName(RPCServiceImpl.PARAM_DEFAULT_TIMEOUT);
paramTimeout.setValue("fakeValue");
params.addParameter(paramTimeout);
try {
new RPCServiceImpl(container.getContext(), params, configManager);
fail("We expect a NumberFormatException since the timeout is not properly set");
} catch (NumberFormatException e) {
// OK
}
paramTimeout.setValue("60");
try {
service = new RPCServiceImpl(container.getContext(), params, configManager);
assertEquals(60, service.getDefaultTimeout());
assertEquals(RPCServiceImpl.DEFAULT_RETRY_TIMEOUT, service.getRetryTimeout());
assertEquals(true, service.isAllowFailover());
assertEquals(RPCServiceImpl.CLUSTER_NAME + "-" + container.getContext().getName(), service.getClusterName());
} finally {
if (service != null) {
service.stop();
}
}
ValueParam paramRetryTimeout = new ValueParam();
paramRetryTimeout.setName(RPCServiceImpl.PARAM_RETRY_TIMEOUT);
paramRetryTimeout.setValue("fakeValue");
params.addParameter(paramRetryTimeout);
try {
new RPCServiceImpl(container.getContext(), params, configManager);
fail("We expect a NumberFormatException since the retry timeout is not properly set");
} catch (NumberFormatException e) {
// OK
}
paramRetryTimeout.setValue("60");
try {
service = new RPCServiceImpl(container.getContext(), params, configManager);
assertEquals(60, service.getDefaultTimeout());
assertEquals(60, service.getRetryTimeout());
assertEquals(true, service.isAllowFailover());
assertEquals(RPCServiceImpl.CLUSTER_NAME + "-" + container.getContext().getName(), service.getClusterName());
} finally {
if (service != null) {
service.stop();
}
}
ValueParam paramAllowFailover = new ValueParam();
paramAllowFailover.setName(RPCServiceImpl.PARAM_ALLOW_FAILOVER);
paramAllowFailover.setValue("fakeValue");
params.addParameter(paramAllowFailover);
try {
service = new RPCServiceImpl(container.getContext(), params, configManager);
assertEquals(60, service.getDefaultTimeout());
assertEquals(60, service.getRetryTimeout());
assertEquals(false, service.isAllowFailover());
assertEquals(RPCServiceImpl.CLUSTER_NAME + "-" + container.getContext().getName(), service.getClusterName());
} finally {
if (service != null) {
service.stop();
}
}
paramAllowFailover.setValue("TRUE");
try {
service = new RPCServiceImpl(container.getContext(), params, configManager);
assertEquals(60, service.getDefaultTimeout());
assertEquals(60, service.getRetryTimeout());
assertEquals(true, service.isAllowFailover());
assertEquals(RPCServiceImpl.CLUSTER_NAME + "-" + container.getContext().getName(), service.getClusterName());
} finally {
if (service != null) {
service.stop();
}
}
ValueParam paramClusterName = new ValueParam();
paramClusterName.setName(RPCServiceImpl.PARAM_CLUSTER_NAME);
paramClusterName.setValue("MyName");
params.addParameter(paramClusterName);
try {
service = new RPCServiceImpl(container.getContext(), params, configManager);
assertEquals(60, service.getDefaultTimeout());
assertEquals(paramClusterName.getValue() + "-" + container.getContext().getName(), service.getClusterName());
} finally {
if (service != null) {
service.stop();
}
}
}
use of org.exoplatform.services.rpc.jgv3.RPCServiceImpl in project kernel by exoplatform.
the class TestRPCServiceImpl method testExecOnCoordinator.
public void testExecOnCoordinator() throws Exception {
InitParams params = new InitParams();
ValueParam paramConf = new ValueParam();
paramConf.setName(RPCServiceImpl.PARAM_JGROUPS_CONFIG);
paramConf.setValue("jar:/conf/portal/udp.xml");
params.addParameter(paramConf);
final List<Boolean> calledCommands = Collections.synchronizedList(new ArrayList<Boolean>());
RPCServiceImpl service1 = null;
RPCServiceImpl service2 = null;
try {
service1 = new RPCServiceImpl(container.getContext(), params, configManager);
RemoteCommand service1Cmd = new RemoteCommand() {
public String getId() {
return "CoordinatorExecutedCommand";
}
public String execute(Serializable[] args) throws Throwable {
calledCommands.add(Boolean.TRUE);
return "service 1";
}
};
service1.registerCommand(service1Cmd);
service2 = new RPCServiceImpl(container.getContext(), params, configManager);
RemoteCommand service2Cmd = new RemoteCommand() {
public String getId() {
return "CoordinatorExecutedCommand";
}
public String execute(Serializable[] args) throws Throwable {
calledCommands.add(Boolean.TRUE);
return "service 2";
}
};
service2.registerCommand(service2Cmd);
// starting services
service1.start();
service2.start();
Object o = service1.executeCommandOnCoordinator(service1Cmd, true);
assertEquals("service 1", o);
// it should be executed once
assertEquals(1, calledCommands.size());
} finally {
if (service1 != null) {
service1.stop();
}
if (service2 != null) {
service2.stop();
}
}
}
use of org.exoplatform.services.rpc.jgv3.RPCServiceImpl in project kernel by exoplatform.
the class TestSimpleReplicatedExoCache method init.
@Before
public void init() throws Exception {
container = PortalContainer.getInstance();
ConfigurationManager configManager = container.getComponentInstanceOfType(ConfigurationManager.class);
InitParams params = new InitParams();
ValueParam paramConf = new ValueParam();
paramConf.setName("jgroups-configuration");
paramConf.setValue("jar:/conf/portal/udp.xml");
params.addParameter(paramConf);
service1 = new RPCServiceImpl(container.getContext(), params, configManager);
service2 = new RPCServiceImpl(container.getContext(), params, configManager);
cache1 = new SimpleReplicatedExoCache<String, String>(container.getContext(), service1);
cache2 = new SimpleReplicatedExoCache<String, String>(container.getContext(), service2);
cache1.setName("TestSimpleReplicatedExoCache");
cache2.setName("TestSimpleReplicatedExoCache");
service1.start();
service2.start();
}
use of org.exoplatform.services.rpc.jgv3.RPCServiceImpl in project kernel by exoplatform.
the class TestRPCServiceImpl method testStates.
public void testStates() throws Exception {
InitParams params = new InitParams();
ValueParam paramConf = new ValueParam();
paramConf.setName(RPCServiceImpl.PARAM_JGROUPS_CONFIG);
paramConf.setValue("jar:/conf/portal/udp.xml");
params.addParameter(paramConf);
RPCServiceImpl service = null;
RemoteCommand foo = new RemoteCommand() {
public String getId() {
return "foo";
}
public String execute(Serializable[] args) throws Throwable {
return null;
}
};
try {
service = new RPCServiceImpl(container.getContext(), params, configManager);
service.registerCommand(foo);
try {
service.executeCommandOnAllNodes(foo, true);
fail("We expect a RPCException since the current state is not the expected one");
} catch (RPCException e) {
// OK
}
try {
service.executeCommandOnAllNodes(foo, 10);
fail("We expect a RPCException since the current state is not the expected one");
} catch (RPCException e) {
// OK
}
try {
service.executeCommandOnCoordinator(foo, true);
fail("We expect a RPCException since the current state is not the expected one");
} catch (RPCException e) {
// OK
}
try {
service.executeCommandOnCoordinator(foo, 10);
fail("We expect a RPCException since the current state is not the expected one");
} catch (RPCException e) {
// OK
}
try {
service.isCoordinator();
fail("We expect a RPCException since the current state is not the expected one");
} catch (RPCException e) {
// OK
}
service.start();
assertEquals(true, service.isCoordinator());
service.executeCommandOnAllNodes(foo, true);
service.executeCommandOnAllNodes(foo, 10);
service.executeCommandOnCoordinator(foo, true);
service.executeCommandOnCoordinator(foo, 10);
} finally {
if (service != null) {
service.stop();
}
}
try {
service.executeCommandOnAllNodes(foo, true);
fail("We expect a RPCException since the current state is not the expected one");
} catch (RPCException e) {
// OK
}
try {
service.executeCommandOnAllNodes(foo, 10);
fail("We expect a RPCException since the current state is not the expected one");
} catch (RPCException e) {
// OK
}
try {
service.executeCommandOnCoordinator(foo, true);
fail("We expect a RPCException since the current state is not the expected one");
} catch (RPCException e) {
// OK
}
try {
service.executeCommandOnCoordinator(foo, 10);
fail("We expect a RPCException since the current state is not the expected one");
} catch (RPCException e) {
// OK
}
}
use of org.exoplatform.services.rpc.jgv3.RPCServiceImpl in project kernel by exoplatform.
the class TestRPCServiceImpl method testSingleMethodCallCommand.
public void testSingleMethodCallCommand() throws Exception {
try {
new SingleMethodCallCommand(null, null);
fail("we expect an IllegalArgumentException");
} catch (IllegalArgumentException e) {
// OK
}
MyService myService = new MyService();
try {
new SingleMethodCallCommand(myService, null);
fail("we expect an IllegalArgumentException");
} catch (IllegalArgumentException e) {
// OK
}
try {
new SingleMethodCallCommand(myService, "foo");
fail("we expect an NoSuchMethodException");
} catch (NoSuchMethodException e) {
// OK
}
try {
new SingleMethodCallCommand(myService, "getPrivateName");
fail("we expect an IllegalArgumentException since only the public methods are allowed");
} catch (IllegalArgumentException e) {
// OK
}
InitParams params = new InitParams();
ValueParam paramConf = new ValueParam();
paramConf.setName(RPCServiceImpl.PARAM_JGROUPS_CONFIG);
paramConf.setValue("jar:/conf/portal/udp.xml");
params.addParameter(paramConf);
RPCServiceImpl service = null;
try {
service = new RPCServiceImpl(container.getContext(), params, configManager);
RemoteCommand getName = service.registerCommand(new SingleMethodCallCommand(myService, "getName"));
RemoteCommand add = service.registerCommand(new SingleMethodCallCommand(myService, "add", int.class));
RemoteCommand evaluate1 = service.registerCommand(new SingleMethodCallCommand(myService, "evaluate", int[].class));
RemoteCommand evaluate2 = service.registerCommand(new SingleMethodCallCommand(myService, "evaluate", List.class));
RemoteCommand total1 = service.registerCommand(new SingleMethodCallCommand(myService, "total", int.class));
RemoteCommand total2 = service.registerCommand(new SingleMethodCallCommand(myService, "total", int.class, int.class));
RemoteCommand total3 = service.registerCommand(new SingleMethodCallCommand(myService, "total", int[].class));
RemoteCommand total4 = service.registerCommand(new SingleMethodCallCommand(myService, "total", String.class, long.class, int[].class));
RemoteCommand testTypes1 = service.registerCommand(new SingleMethodCallCommand(myService, "testTypes", String[].class));
RemoteCommand testTypes2 = service.registerCommand(new SingleMethodCallCommand(myService, "testTypes", int[].class));
RemoteCommand testTypes3 = service.registerCommand(new SingleMethodCallCommand(myService, "testTypes", long[].class));
RemoteCommand testTypes4 = service.registerCommand(new SingleMethodCallCommand(myService, "testTypes", byte[].class));
RemoteCommand testTypes5 = service.registerCommand(new SingleMethodCallCommand(myService, "testTypes", short[].class));
RemoteCommand testTypes6 = service.registerCommand(new SingleMethodCallCommand(myService, "testTypes", char[].class));
RemoteCommand testTypes7 = service.registerCommand(new SingleMethodCallCommand(myService, "testTypes", double[].class));
RemoteCommand testTypes8 = service.registerCommand(new SingleMethodCallCommand(myService, "testTypes", float[].class));
RemoteCommand testTypes9 = service.registerCommand(new SingleMethodCallCommand(myService, "testTypes", boolean[].class));
service.start();
List<Object> result;
assertEquals("name", service.executeCommandOnCoordinator(getName, true));
result = service.executeCommandOnAllNodes(getName, true);
assertTrue(result != null && result.size() == 1);
assertEquals("name", result.get(0));
assertEquals(10, service.executeCommandOnCoordinator(add, true, 10));
result = service.executeCommandOnAllNodes(add, true, 10);
assertTrue(result != null && result.size() == 1);
assertEquals(20, result.get(0));
assertEquals(100, service.executeCommandOnCoordinator(evaluate1, true, new int[] { 10, 10, 10, 30, 40 }));
result = service.executeCommandOnAllNodes(evaluate1, true, new int[] { 10, 10, 10, 30, 40 });
assertTrue(result != null && result.size() == 1);
assertEquals(100, result.get(0));
List<Integer> values = new ArrayList<Integer>();
values.add(10);
values.add(10);
values.add(10);
values.add(30);
values.add(40);
assertEquals(100, service.executeCommandOnCoordinator(evaluate2, true, (Serializable) values));
result = service.executeCommandOnAllNodes(evaluate2, true, (Serializable) values);
assertTrue(result != null && result.size() == 1);
assertEquals(100, result.get(0));
assertEquals(10, service.executeCommandOnCoordinator(total1, true, 10));
result = service.executeCommandOnAllNodes(total1, true, 10);
assertTrue(result != null && result.size() == 1);
assertEquals(10, result.get(0));
assertEquals(20, service.executeCommandOnCoordinator(total2, true, 10, 10));
result = service.executeCommandOnAllNodes(total2, true, 10, 10);
assertTrue(result != null && result.size() == 1);
assertEquals(20, result.get(0));
assertEquals(100, service.executeCommandOnCoordinator(total3, true, new int[] { 10, 10, 10, 30, 40 }));
result = service.executeCommandOnAllNodes(total3, true, new int[] { 10, 10, 10, 30, 40 });
assertTrue(result != null && result.size() == 1);
assertEquals(100, result.get(0));
assertEquals(100, service.executeCommandOnCoordinator(total4, true, "foo", 50, new int[] { 10, 10, 10, 30, 40 }));
result = service.executeCommandOnAllNodes(total4, true, "foo", 50, new int[] { 10, 10, 10, 30, 40 });
assertTrue(result != null && result.size() == 1);
assertEquals(100, result.get(0));
assertEquals(0, service.executeCommandOnCoordinator(total4, true, "foo", 50, null));
result = service.executeCommandOnAllNodes(total4, true, "foo", 50, null);
assertTrue(result != null && result.size() == 1);
assertEquals(0, result.get(0));
try {
service.executeCommandOnCoordinator(total4, true, "foo", 50);
fail("We expect a RPCException since the list of arguments mismatch with what is expected");
} catch (RPCException e) {
// OK
}
result = service.executeCommandOnAllNodes(total4, true, "foo", 50);
assertTrue(result != null && result.size() == 1);
assertTrue("We expect a RPCException since the list of arguments mismatch with what is expected", result.get(0) instanceof RPCException);
assertEquals("foo", service.executeCommandOnCoordinator(testTypes1, true, (Serializable) new String[] { "foo" }));
result = service.executeCommandOnAllNodes(testTypes1, true, (Serializable) new String[] { "foo" });
assertTrue(result != null && result.size() == 1);
assertEquals("foo", result.get(0));
assertEquals(10, service.executeCommandOnCoordinator(testTypes2, true, new int[] { 10 }));
result = service.executeCommandOnAllNodes(testTypes2, true, new int[] { 10 });
assertTrue(result != null && result.size() == 1);
assertEquals(10, result.get(0));
assertEquals(11L, service.executeCommandOnCoordinator(testTypes3, true, new long[] { 10 }));
result = service.executeCommandOnAllNodes(testTypes3, true, new long[] { 10 });
assertTrue(result != null && result.size() == 1);
assertEquals(11L, result.get(0));
assertEquals((byte) 12, service.executeCommandOnCoordinator(testTypes4, true, new byte[] { 10 }));
result = service.executeCommandOnAllNodes(testTypes4, true, new byte[] { 10 });
assertTrue(result != null && result.size() == 1);
assertEquals((byte) 12, result.get(0));
assertEquals((short) 13, service.executeCommandOnCoordinator(testTypes5, true, new short[] { 10 }));
result = service.executeCommandOnAllNodes(testTypes5, true, new short[] { 10 });
assertTrue(result != null && result.size() == 1);
assertEquals((short) 13, result.get(0));
assertEquals('a', service.executeCommandOnCoordinator(testTypes6, true, new char[] { 'a' }));
result = service.executeCommandOnAllNodes(testTypes6, true, new char[] { 'a' });
assertTrue(result != null && result.size() == 1);
assertEquals('a', result.get(0));
assertEquals(10.5, service.executeCommandOnCoordinator(testTypes7, true, new double[] { 10 }));
result = service.executeCommandOnAllNodes(testTypes7, true, new double[] { 10 });
assertTrue(result != null && result.size() == 1);
assertEquals(10.5, result.get(0));
assertEquals((float) 11.5, service.executeCommandOnCoordinator(testTypes8, true, new float[] { 10 }));
result = service.executeCommandOnAllNodes(testTypes8, true, new float[] { 10 });
assertTrue(result != null && result.size() == 1);
assertEquals((float) 11.5, result.get(0));
assertEquals(true, service.executeCommandOnCoordinator(testTypes9, true, new boolean[] { true }));
result = service.executeCommandOnAllNodes(testTypes9, true, new boolean[] { true });
assertTrue(result != null && result.size() == 1);
assertEquals(true, result.get(0));
} finally {
if (service != null) {
service.stop();
}
}
}
Aggregations