use of jp.ossc.nimbus.core.ServiceName in project nimbus by nimbus-org.
the class FlowControlInterceptorServiceTest method test2.
public void test2() throws Throwable {
ServiceManagerFactory.registerManager("Test");
final ServiceMetaData interceptorServiceData = new ServiceMetaData();
interceptorServiceData.setCode(FlowControlInterceptorService.class.getName());
interceptorServiceData.setName("FlowControlInterceptor");
interceptorServiceData.addDepends(interceptorServiceData.createDependsMetaData("Test", "Semaphore"));
ServiceManagerFactory.registerService("Test", interceptorServiceData);
FlowControlInterceptorService interceptor = (FlowControlInterceptorService) ServiceManagerFactory.getService("Test", "FlowControlInterceptor");
final DefaultSemaphoreService semaphore = new DefaultSemaphoreService();
ServiceManagerFactory.registerService("Test", "Semaphore", semaphore);
try {
ServiceManagerFactory.findManager("Test").createAllService();
interceptor.setSemaphoreServiceName(new ServiceName("Test", "Semaphore"));
interceptor.setTimeout(200l);
semaphore.setResourceCapacity(1);
ServiceManagerFactory.findManager("Test").startAllService();
final InterceptorChain chain = new DefaultThreadLocalInterceptorChain(new DefaultInterceptorChainList(new Interceptor[] { interceptor }), new Invoker() {
public Object invoke(InvocationContext context) throws Throwable {
Thread.sleep(500);
return "test";
}
});
Runnable runner = new Runnable() {
public void run() {
try {
chain.invokeNext(new DefaultMethodInvocationContext());
} catch (Throwable th) {
}
}
};
Thread thread = new Thread(runner);
thread.start();
Thread.sleep(100);
try {
chain.invokeNext(new DefaultMethodInvocationContext());
fail();
} catch (FailToObtainSemaphoreException e) {
}
thread.join();
} finally {
ServiceManagerFactory.findManager("Test").stopAllService();
ServiceManagerFactory.findManager("Test").destroyAllService();
ServiceManagerFactory.unregisterManager("Test");
}
}
use of jp.ossc.nimbus.core.ServiceName in project nimbus by nimbus-org.
the class FlowControlInterceptorServiceTest method test1.
public void test1() throws Throwable {
ServiceManagerFactory.registerManager("Test");
final ServiceMetaData interceptorServiceData = new ServiceMetaData();
interceptorServiceData.setCode(FlowControlInterceptorService.class.getName());
interceptorServiceData.setName("FlowControlInterceptor");
interceptorServiceData.addDepends(interceptorServiceData.createDependsMetaData("Test", "Semaphore"));
ServiceManagerFactory.registerService("Test", interceptorServiceData);
FlowControlInterceptorService interceptor = (FlowControlInterceptorService) ServiceManagerFactory.getService("Test", "FlowControlInterceptor");
final DefaultSemaphoreService semaphore = new DefaultSemaphoreService();
ServiceManagerFactory.registerService("Test", "Semaphore", semaphore);
try {
ServiceManagerFactory.findManager("Test").createAllService();
interceptor.setSemaphoreServiceName(new ServiceName("Test", "Semaphore"));
semaphore.setResourceCapacity(2);
ServiceManagerFactory.findManager("Test").startAllService();
class Counter {
public volatile int count;
public boolean isAssertFail;
}
final Counter counter = new Counter();
final InterceptorChain chain = new DefaultThreadLocalInterceptorChain(new DefaultInterceptorChainList(new Interceptor[] { interceptor }), new Invoker() {
public Object invoke(InvocationContext context) throws Throwable {
try {
synchronized (counter) {
counter.count++;
}
Thread.sleep(new Random().nextInt(100));
return "test";
} finally {
synchronized (counter) {
counter.count--;
}
}
}
});
Runnable runner = new Runnable() {
public void run() {
for (int i = 0; i < 10; i++) {
counter.isAssertFail |= counter.count > semaphore.getResourceCapacity();
try {
chain.invokeNext(new DefaultMethodInvocationContext());
} catch (Throwable th) {
}
counter.isAssertFail |= counter.count > semaphore.getResourceCapacity();
}
}
};
Thread[] threads = new Thread[10];
for (int i = 0; i < threads.length; i++) {
threads[i] = new Thread(runner);
}
Random random = new Random();
for (int i = 0; i < threads.length; i++) {
threads[i].start();
Thread.sleep(random.nextInt(100));
}
for (int i = 0; i < threads.length; i++) {
threads[i].join();
}
assertFalse(counter.isAssertFail);
} finally {
ServiceManagerFactory.findManager("Test").stopAllService();
ServiceManagerFactory.findManager("Test").destroyAllService();
ServiceManagerFactory.unregisterManager("Test");
}
}
use of jp.ossc.nimbus.core.ServiceName in project nimbus by nimbus-org.
the class FlowControlInterceptorServiceTest method test3.
public void test3() throws Throwable {
ServiceManagerFactory.registerManager("Test");
final ServiceMetaData interceptorServiceData = new ServiceMetaData();
interceptorServiceData.setCode(FlowControlInterceptorService.class.getName());
interceptorServiceData.setName("FlowControlInterceptor");
interceptorServiceData.addDepends(interceptorServiceData.createDependsMetaData("Test", "Semaphore"));
ServiceManagerFactory.registerService("Test", interceptorServiceData);
FlowControlInterceptorService interceptor = (FlowControlInterceptorService) ServiceManagerFactory.getService("Test", "FlowControlInterceptor");
final DefaultSemaphoreService semaphore = new DefaultSemaphoreService();
ServiceManagerFactory.registerService("Test", "Semaphore", semaphore);
try {
ServiceManagerFactory.findManager("Test").createAllService();
interceptor.setSemaphoreServiceName(new ServiceName("Test", "Semaphore"));
interceptor.setTimeout(200l);
interceptor.setFailToObtainSemaphore(false);
semaphore.setResourceCapacity(1);
ServiceManagerFactory.findManager("Test").startAllService();
final InterceptorChain chain = new DefaultThreadLocalInterceptorChain(new DefaultInterceptorChainList(new Interceptor[] { interceptor }), new Invoker() {
public Object invoke(InvocationContext context) throws Throwable {
Thread.sleep(500);
return "test";
}
});
Runnable runner = new Runnable() {
public void run() {
try {
chain.invokeNext(new DefaultMethodInvocationContext());
} catch (Throwable th) {
}
}
};
Thread thread = new Thread(runner);
thread.start();
Thread.sleep(100);
assertNull(chain.invokeNext(new DefaultMethodInvocationContext()));
thread.join();
} finally {
ServiceManagerFactory.findManager("Test").stopAllService();
ServiceManagerFactory.findManager("Test").destroyAllService();
ServiceManagerFactory.unregisterManager("Test");
}
}
use of jp.ossc.nimbus.core.ServiceName in project nimbus by nimbus-org.
the class MethodAsynchronousInterceptorServiceTest method test4.
public void test4() throws Throwable {
ServiceManagerFactory.registerManager("Test");
final ServiceMetaData interceptorServiceData = new ServiceMetaData();
interceptorServiceData.setCode(MethodAsynchronousInterceptorService.class.getName());
interceptorServiceData.setName("MethodAsynchronousInterceptor");
interceptorServiceData.addDepends(interceptorServiceData.createDependsMetaData("Test", "Queue"));
ServiceManagerFactory.registerService("Test", interceptorServiceData);
MethodAsynchronousInterceptorService interceptor = (MethodAsynchronousInterceptorService) ServiceManagerFactory.getService("Test", "MethodAsynchronousInterceptor");
final ServiceMetaData queueServiceData = new ServiceMetaData();
queueServiceData.setCode(DefaultQueueService.class.getName());
queueServiceData.setName("Queue");
queueServiceData.setInstance(ServiceMetaData.INSTANCE_TYPE_THREADLOCAL);
ServiceManagerFactory.registerService("Test", queueServiceData);
try {
ServiceManagerFactory.findManager("Test").createAllService();
interceptor.setResponseQueueServiceName(new ServiceName("Test", "Queue"));
interceptor.setInvokerThreadSize(3);
interceptor.setReturnResponse(false);
ServiceManagerFactory.findManager("Test").startAllService();
for (int i = 0; i < 3; i++) {
Object ret = new DefaultInterceptorChain(new DefaultInterceptorChainList(new Interceptor[] { interceptor }), new Invoker() {
public Object invoke(InvocationContext context) throws Throwable {
Thread.sleep(500);
return "test";
}
}).invokeNext(new DefaultMethodInvocationContext(new Integer(i), Integer.class.getMethod("toString", (Class[]) null), null));
assertNull(ret);
}
Queue queue = (Queue) ServiceManagerFactory.getServiceObject("Test", "Queue");
for (int i = 0; i < 3; i++) {
AsynchronousResponse response = (AsynchronousResponse) queue.get();
assertNotNull(response);
assertEquals("test", response.getReturnObject());
}
assertNull(queue.get(500));
} finally {
ServiceManagerFactory.findManager("Test").stopAllService();
ServiceManagerFactory.findManager("Test").destroyAllService();
ServiceManagerFactory.unregisterManager("Test");
}
}
use of jp.ossc.nimbus.core.ServiceName in project nimbus by nimbus-org.
the class HttpResponseImplTest method testSetterGetter.
/**
* HttpResponseImplの各プロパティを設定、取得するテスト。
* <p>
* 条件:
* <ul>
* <li>HttpResponseImplインスタンスを生成する</li>
* <li>各getterメソッドを実行</li>
* </ul>
* 確認:
* <ul>
* <li>正常終了。設定した値が正しく取得できることを確認</li>
* </ul>
*/
public void testSetterGetter() {
HttpResponseImpl res = new HttpResponseImpl();
ServiceName name = new ServiceName("DataSetXMLConverter");
res.setStreamConverterServiceName(name);
DataSetXMLConverter xconv = new DataSetXMLConverter();
res.setStreamConverter(xconv);
res.setStatusCode(200);
res.setStatusMessage("OK");
assertEquals(xconv, res.getStreamConverter());
assertEquals(name, res.getStreamConverterServiceName());
assertEquals(200, res.getStatusCode());
assertEquals("OK", res.getStatusMessage());
}
Aggregations