private void testInterceptorExceptions(Test.MyObjectPrx prx) { var exceptions = new List <(string operation, string kind)>(); exceptions.Add(("raiseBeforeDispatch", "user")); exceptions.Add(("raiseBeforeDispatch", "notExist")); exceptions.Add(("raiseBeforeDispatch", "system")); exceptions.Add(("raiseAfterDispatch", "user")); exceptions.Add(("raiseAfterDispatch", "notExist")); exceptions.Add(("raiseAfterDispatch", "system")); foreach (var e in exceptions) { var ctx = new Dictionary <string, string>(); ctx.Add(e.operation, e.kind); try { prx.IcePing(ctx); test(false); } catch (UnknownUserException) when(e.kind.Equals("user")) { } catch (ObjectNotExistException) when(e.kind.Equals("notExist")) { } catch (UnknownException) when(e.kind.Equals("system")) // non-collocated { } catch (MySystemException) when(e.kind.Equals("system")) // collocated { } } }
private void testInterceptorExceptions(Test.MyObjectPrx prx) { var exceptions = new List <Tuple <string, string> >(); exceptions.Add(new Tuple <string, string>("raiseBeforeDispatch", "user")); exceptions.Add(new Tuple <string, string>("raiseBeforeDispatch", "notExist")); exceptions.Add(new Tuple <string, string>("raiseBeforeDispatch", "system")); exceptions.Add(new Tuple <string, string>("raiseAfterDispatch", "user")); exceptions.Add(new Tuple <string, string>("raiseAfterDispatch", "notExist")); exceptions.Add(new Tuple <string, string>("raiseAfterDispatch", "system")); foreach (var e in exceptions) { var ctx = new Dictionary <string, string>(); ctx.Add(e.Item1, e.Item2); try { prx.ice_ping(ctx); test(false); } catch (Ice.UnknownUserException) { test(e.Item2.Equals("user")); } catch (Ice.ObjectNotExistException) { test(e.Item2.Equals("notExist")); } catch (Ice.UnknownException) { test(e.Item2.Equals("system")); // non-collocated } catch (MySystemException) { test(e.Item2.Equals("system")); // collocated } { Ice.ObjectPrx batch = prx.ice_batchOneway(); batch.ice_ping(ctx); batch.ice_ping(); batch.ice_flushBatchRequests(); // Force the last batch request to be dispatched by the server thread using invocation timeouts // This is required to preven threading issue with the test interceptor implementation which // isn't thread safe prx.ice_invocationTimeout(10000).ice_ping(); } } }
public override void run(string[] args) { var properties = createTestProperties(ref args); properties.setProperty("Ice.Package.Test", "Ice.interceptor"); using (var communicator = initialize(properties)) { // // Create OA and servants // communicator.getProperties().setProperty("MyOA.AdapterId", "myOA"); Ice.ObjectAdapter oa = communicator.createObjectAdapterWithEndpoints("MyOA2", "tcp -h localhost"); Ice.Object servant = new MyObjectI(); InterceptorI interceptor = new InterceptorI(servant); Test.MyObjectPrx prx = Test.MyObjectPrxHelper.uncheckedCast(oa.addWithUUID(interceptor)); var output = getWriter(); output.WriteLine("Collocation optimization on"); runTest(prx, interceptor); output.WriteLine("Now with AMD"); interceptor.clear(); runAmdTest(prx, interceptor); oa.activate(); // Only necessary for non-collocation optimized tests output.WriteLine("Collocation optimization off"); interceptor.clear(); prx = Test.MyObjectPrxHelper.uncheckedCast(prx.ice_collocationOptimized(false)); runTest(prx, interceptor); output.WriteLine("Now with AMD"); interceptor.clear(); runAmdTest(prx, interceptor); } }
private void testInterceptorExceptions(Test.MyObjectPrx prx) { var exceptions = new List <Tuple <string, string> >(); exceptions.Add(new Tuple <string, string>("raiseBeforeDispatch", "user")); exceptions.Add(new Tuple <string, string>("raiseBeforeDispatch", "notExist")); exceptions.Add(new Tuple <string, string>("raiseBeforeDispatch", "system")); exceptions.Add(new Tuple <string, string>("raiseAfterDispatch", "user")); exceptions.Add(new Tuple <string, string>("raiseAfterDispatch", "notExist")); exceptions.Add(new Tuple <string, string>("raiseAfterDispatch", "system")); foreach (var e in exceptions) { var ctx = new Dictionary <string, string>(); ctx.Add(e.Item1, e.Item2); try { prx.ice_ping(ctx); test(false); } catch (Ice.UnknownUserException) { test(e.Item2.Equals("user")); } catch (Ice.ObjectNotExistException) { test(e.Item2.Equals("notExist")); } catch (Ice.UnknownException) { test(e.Item2.Equals("system")); // non-collocated } catch (MySystemException) { test(e.Item2.Equals("system")); // collocated } } }
private void runAmdTest(Test.MyObjectPrx prx, InterceptorI interceptor) { var output = getWriter(); output.Write("testing simple interceptor... "); output.Flush(); test(interceptor.getLastOperation() == null); test(!interceptor.getLastStatus()); test(prx.amdAdd(33, 12) == 45); test(interceptor.getLastOperation().Equals("amdAdd")); test(interceptor.getLastStatus()); output.WriteLine("ok"); output.Write("testing retry... "); output.Flush(); test(prx.amdAddWithRetry(33, 12) == 45); test(interceptor.getLastOperation().Equals("amdAddWithRetry")); test(interceptor.getLastStatus()); output.WriteLine("ok"); output.Write("testing user exception... "); try { prx.amdBadAdd(33, 12); test(false); } catch (Test.InvalidInputException) { // expected } test(interceptor.getLastOperation().Equals("amdBadAdd")); test(interceptor.getLastStatus()); Console.WriteLine("ok"); output.Write("testing ONE... "); output.Flush(); interceptor.clear(); try { prx.amdNotExistAdd(33, 12); test(false); } catch (Ice.ObjectNotExistException) { // expected } test(interceptor.getLastOperation().Equals("amdNotExistAdd")); test(interceptor.getLastStatus()); output.WriteLine("ok"); output.Write("testing system exception... "); output.Flush(); interceptor.clear(); try { prx.amdBadSystemAdd(33, 12); test(false); } catch (Ice.UnknownException) { test(!prx.ice_isCollocationOptimized()); } catch (MySystemException) { test(prx.ice_isCollocationOptimized()); } catch (Exception) { test(false); } test(interceptor.getLastOperation().Equals("amdBadSystemAdd")); test(interceptor.getLastStatus()); output.WriteLine("ok"); }
private void runTest(Test.MyObjectPrx prx, InterceptorI <MyObject, MyObjectTraits> interceptor) { var output = getWriter(); output.Write("testing simple interceptor... "); output.Flush(); test(interceptor.getLastOperation() == null); test(!interceptor.getLastStatus()); prx.IcePing(); test(interceptor.getLastOperation().Equals("ice_ping")); test(!interceptor.getLastStatus()); string typeId = prx.IceId(); test(interceptor.getLastOperation().Equals("ice_id")); test(!interceptor.getLastStatus()); test(prx.IceIsA(typeId)); test(interceptor.getLastOperation().Equals("ice_isA")); test(!interceptor.getLastStatus()); test(prx.add(33, 12) == 45); test(interceptor.getLastOperation().Equals("add")); test(!interceptor.getLastStatus()); output.WriteLine("ok"); output.Write("testing retry... "); output.Flush(); test(prx.addWithRetry(33, 12) == 45); test(interceptor.getLastOperation().Equals("addWithRetry")); test(!interceptor.getLastStatus()); output.WriteLine("ok"); output.Write("testing user exception... "); output.Flush(); try { prx.badAdd(33, 12); test(false); } catch (Test.InvalidInputException) { // expected } test(interceptor.getLastOperation().Equals("badAdd")); test(!interceptor.getLastStatus()); output.WriteLine("ok"); output.Write("testing ONE... "); output.Flush(); interceptor.clear(); try { prx.notExistAdd(33, 12); test(false); } catch (Ice.ObjectNotExistException) { // expected } test(interceptor.getLastOperation().Equals("notExistAdd")); test(!interceptor.getLastStatus()); output.WriteLine("ok"); output.Write("testing system exception... "); output.Flush(); interceptor.clear(); try { prx.badSystemAdd(33, 12); test(false); } catch (Ice.UnknownException) { test(!prx.IsCollocationOptimized); } catch (MySystemException) { test(prx.IsCollocationOptimized); } catch (Exception) { test(false); } test(interceptor.getLastOperation().Equals("badSystemAdd")); test(!interceptor.getLastStatus()); output.WriteLine("ok"); output.Write("testing exceptions raised by the interceptor... "); output.Flush(); testInterceptorExceptions(prx); output.WriteLine("ok"); }
private void runAmdTest(Test.MyObjectPrx prx, InterceptorI <MyObject, MyObjectTraits> interceptor) { var output = getWriter(); output.Write("testing simple interceptor... "); output.Flush(); test(interceptor.getLastOperation() == null); test(!interceptor.getLastStatus()); test(prx.amdAdd(33, 12) == 45); test(interceptor.getLastOperation().Equals("amdAdd")); test(interceptor.getLastStatus()); output.WriteLine("ok"); output.Write("testing retry... "); output.Flush(); test(prx.amdAddWithRetry(33, 12) == 45); test(interceptor.getLastOperation().Equals("amdAddWithRetry")); test(interceptor.getLastStatus()); { var ctx = new Dictionary <string, string>(); ctx.Add("retry", "yes"); for (int i = 0; i < 10; ++i) { test(prx.amdAdd(33, 12, ctx) == 45); test(interceptor.getLastOperation().Equals("amdAdd")); test(interceptor.getLastStatus()); } } output.WriteLine("ok"); output.Write("testing user exception... "); try { prx.amdBadAdd(33, 12); test(false); } catch (InvalidInputException) { // expected } test(interceptor.getLastOperation().Equals("amdBadAdd")); test(interceptor.getLastStatus()); Console.WriteLine("ok"); output.Write("testing ONE... "); output.Flush(); interceptor.clear(); try { prx.amdNotExistAdd(33, 12); test(false); } catch (Ice.ObjectNotExistException) { // expected } test(interceptor.getLastOperation().Equals("amdNotExistAdd")); test(interceptor.getLastStatus()); output.WriteLine("ok"); output.Write("testing system exception... "); output.Flush(); interceptor.clear(); try { prx.amdBadSystemAdd(33, 12); test(false); } catch (Ice.UnknownException) { test(!prx.IsCollocationOptimized); } catch (MySystemException) { test(prx.IsCollocationOptimized); } catch (Exception) { test(false); } test(interceptor.getLastOperation().Equals("amdBadSystemAdd")); test(interceptor.getLastStatus()); output.WriteLine("ok"); output.Write("testing exceptions raised by the interceptor... "); output.Flush(); testInterceptorExceptions(prx); output.WriteLine("ok"); }