private static void readWriteTests(Configuration configuration, Test.BackgroundPrx background, Test.BackgroundControllerPrx ctl) { try { background.op(); } catch (Ice.LocalException ex) { Console.Error.WriteLine(ex); test(false); } for (int i = 0; i < 2; ++i) { BackgroundPrx prx = i == 0 ? background : (BackgroundPrx)background.ice_oneway(); try { prx.ice_ping(); configuration.writeException(new Ice.SocketException()); prx.op(); test(false); } catch (Ice.SocketException) { configuration.writeException(null); } background.ice_ping(); configuration.writeException(new Ice.SocketException()); Ice.AsyncResult r = prx.begin_op(); test(!r.sentSynchronously()); try { prx.end_op(r); test(false); } catch (Ice.SocketException) { } test(r.IsCompleted); configuration.writeException(null); } try { background.ice_ping(); configuration.readException(new Ice.SocketException()); background.op(); test(false); } catch (Ice.SocketException) { configuration.readException(null); } { background.ice_ping(); configuration.readReady(false); // Required in C# to make sure beginRead() doesn't throw too soon. configuration.readException(new Ice.SocketException()); Ice.AsyncResult r = background.begin_op(); try { background.end_op(r); test(false); } catch (Ice.SocketException) { } test(r.IsCompleted); configuration.readException(null); configuration.readReady(true); } try { background.ice_ping(); configuration.writeReady(false); background.op(); configuration.writeReady(true); } catch (Ice.LocalException) { test(false); } try { background.ice_ping(); configuration.readReady(false); background.op(); configuration.readReady(true); } catch (Ice.LocalException) { test(false); } try { background.ice_ping(); configuration.writeReady(false); configuration.writeException(new Ice.SocketException()); background.op(); test(false); } catch (Ice.SocketException) { configuration.writeReady(true); configuration.writeException(null); } for (int i = 0; i < 2; ++i) { BackgroundPrx prx = i == 0 ? background : (BackgroundPrx)background.ice_oneway(); background.ice_ping(); configuration.writeReady(false); configuration.writeException(new Ice.SocketException()); Ice.AsyncResult r = prx.begin_op(); test(!r.sentSynchronously()); try { prx.end_op(r); test(false); } catch (Ice.SocketException) { } test(r.IsCompleted); configuration.writeReady(true); configuration.writeException(null); } try { background.ice_ping(); configuration.readReady(false); configuration.readException(new Ice.SocketException()); background.op(); test(false); } catch (Ice.SocketException) { configuration.readException(null); configuration.readReady(true); } { background.ice_ping(); configuration.readReady(false); configuration.readException(new Ice.SocketException()); Ice.AsyncResult r = background.begin_op(); try { background.end_op(r); test(false); } catch (Ice.SocketException) { } test(r.IsCompleted); configuration.readReady(true); configuration.readException(null); } { background.ice_ping(); configuration.readReady(false); configuration.writeReady(false); configuration.readException(new Ice.SocketException()); Ice.AsyncResult r = background.begin_op(); // The read exception might propagate before the message send is seen as completed on IOCP. //r.waitForSent(); try { background.end_op(r); test(false); } catch (Ice.SocketException) { } test(r.IsCompleted); configuration.writeReady(true); configuration.readReady(true); configuration.readException(null); } background.ice_ping(); // Establish the connection BackgroundPrx backgroundOneway = BackgroundPrxHelper.uncheckedCast(background.ice_oneway()); test(backgroundOneway.ice_getConnection() == background.ice_getConnection()); ctl.holdAdapter(); // Hold to block in request send. byte[] seq = new byte[10024]; (new System.Random()).NextBytes(seq); OpAMICallback cbWP = new OpAMICallback(); // Fill up the receive and send buffers for (int i = 0; i < 200; ++i) // 2MB { backgroundOneway.begin_opWithPayload(seq).whenCompleted(cbWP.noResponse, cbWP.noException); } OpAMICallback cb = new OpAMICallback(); Ice.AsyncResult r1 = background.begin_op().whenCompleted(cb.response, cb.noException).whenSent(cb.sent); test(!r1.sentSynchronously() && !r1.isSent()); OpAMICallback cb2 = new OpAMICallback(); Ice.AsyncResult r2 = background.begin_op().whenCompleted(cb2.response, cb2.noException).whenSent(cb2.sent); test(!r2.sentSynchronously() && !r2.isSent()); test(!backgroundOneway.begin_opWithPayload(seq).whenCompleted(cbWP.noResponse, cbWP.noException).sentSynchronously()); test(!backgroundOneway.begin_opWithPayload(seq).whenCompleted(cbWP.noResponse, cbWP.noException).sentSynchronously()); test(!cb.checkResponse(false)); test(!cb2.checkResponse(false)); ctl.resumeAdapter(); cb.checkResponseAndSent(); cb2.checkResponseAndSent(); test(r1.isSent() && r1.IsCompleted); test(r2.isSent() && r2.IsCompleted); try { background.ice_ping(); ctl.writeException(true); background.op(); test(false); } catch (Ice.ConnectionLostException) { ctl.writeException(false); } try { background.ice_ping(); ctl.readException(true); background.op(); test(false); } catch (Ice.ConnectionLostException) { ctl.readException(false); } try { background.ice_ping(); ctl.writeReady(false); background.op(); ctl.writeReady(true); } catch (Ice.LocalException) { test(false); } try { background.ice_ping(); ctl.readReady(false); background.op(); ctl.readReady(true); } catch (Ice.LocalException) { test(false); } try { background.ice_ping(); ctl.writeReady(false); ctl.writeException(true); background.op(); test(false); } catch (Ice.ConnectionLostException) { ctl.writeException(false); ctl.writeReady(true); } try { background.ice_ping(); ctl.readReady(false); ctl.readException(true); background.op(); test(false); } catch (Ice.ConnectionLostException) { ctl.readException(false); ctl.readReady(true); } OpThread thread1 = new OpThread(background); OpThread thread2 = new OpThread(background); for (int i = 0; i < 5; i++) { try { background.ice_ping(); } catch (Ice.LocalException) { test(false); } Thread.Sleep(10); configuration.writeException(new Ice.SocketException()); try { background.op(); } catch (Ice.LocalException) { } configuration.writeException(null); Thread.Sleep(10); background.ice_ping(); background.ice_getCachedConnection().close(Ice.ConnectionClose.Forcefully); Thread.Sleep(10); background.ice_getCachedConnection().close(Ice.ConnectionClose.Forcefully); } thread1.destroy(); thread2.destroy(); thread1.Join(); thread2.Join(); }
private static void initializeTests(Configuration configuration, Test.BackgroundPrx background, Test.BackgroundControllerPrx ctl) { try { background.op(); } catch (Ice.LocalException) { test(false); } background.ice_getConnection().close(Ice.ConnectionClose.GracefullyWithWait); for (int i = 0; i < 4; ++i) { if (i == 0 || i == 2) { configuration.initializeException(new Ice.SocketException()); } else { continue; } BackgroundPrx prx = (i == 1 || i == 3) ? background : (BackgroundPrx)background.ice_oneway(); try { prx.op(); test(false); } catch (Ice.SocketException) { } Ice.AsyncResult r = prx.begin_op(); test(!r.sentSynchronously()); try { prx.end_op(r); test(false); } catch (Ice.Exception) { } test(r.IsCompleted); OpAMICallback cbEx = new OpAMICallback(); r = prx.begin_op().whenCompleted(cbEx.exception); test(!r.sentSynchronously()); cbEx.checkException(true); test(r.IsCompleted); if (i == 0 || i == 2) { configuration.initializeException(null); } } // // Now run the same tests with the server side. // try { ctl.initializeException(true); background.op(); test(false); } catch (Ice.ConnectionLostException) { ctl.initializeException(false); } catch (Ice.SecurityException) { ctl.initializeException(false); } OpThread thread1 = new OpThread(background); OpThread thread2 = new OpThread(background); for (int i = 0; i < 5; i++) { try { background.ice_ping(); } catch (Ice.LocalException) { test(false); } configuration.initializeException(new Ice.SocketException()); background.ice_getCachedConnection().close(Ice.ConnectionClose.Forcefully); Thread.Sleep(10); configuration.initializeException(null); try { background.ice_ping(); } catch (Ice.LocalException) { } try { background.ice_ping(); } catch (Ice.LocalException) { test(false); } background.ice_getCachedConnection().close(Ice.ConnectionClose.Forcefully); background.ice_ping(); ctl.initializeException(true); background.ice_getCachedConnection().close(Ice.ConnectionClose.Forcefully); Thread.Sleep(10); ctl.initializeException(false); try { background.ice_ping(); } catch (Ice.LocalException) { } try { background.ice_ping(); } catch (Ice.LocalException) { test(false); } try { background.ice_getCachedConnection().close(Ice.ConnectionClose.Forcefully); background.op(); } catch (Ice.LocalException) { test(false); } } thread1.destroy(); thread2.destroy(); thread1.Join(); thread2.Join(); }
private static void connectTests(Configuration configuration, Test.BackgroundPrx background) { try { background.op(); } catch (Ice.LocalException ex) { System.Console.Out.WriteLine(ex); test(false); } background.ice_getConnection().close(Ice.ConnectionClose.GracefullyWithWait); for (int i = 0; i < 4; ++i) { if (i == 0 || i == 2) { configuration.connectorsException(new Ice.DNSException()); } else { configuration.connectException(new Ice.SocketException()); } BackgroundPrx prx = (i == 1 || i == 3) ? background : (BackgroundPrx)background.ice_oneway(); try { prx.op(); test(false); } catch (Ice.Exception) { } Ice.AsyncResult r = prx.begin_op(); test(!r.sentSynchronously()); try { prx.end_op(r); test(false); } catch (Ice.Exception) { } test(r.IsCompleted); OpAMICallback cbEx = new OpAMICallback(); r = prx.begin_op().whenCompleted(cbEx.exception); test(!r.sentSynchronously()); cbEx.checkException(true); test(r.IsCompleted); if (i == 0 || i == 2) { configuration.connectorsException(null); } else { configuration.connectException(null); } } OpThread thread1 = new OpThread(background); OpThread thread2 = new OpThread(background); try { for (int i = 0; i < 5; i++) { try { background.ice_ping(); } catch (Ice.LocalException) { test(false); } configuration.connectException(new Ice.SocketException()); background.ice_getCachedConnection().close(Ice.ConnectionClose.Forcefully); Thread.Sleep(10); configuration.connectException(null); try { background.ice_ping(); } catch (Ice.LocalException) { } } } catch (Exception ex) { System.Console.Out.WriteLine(ex); test(false); } finally { thread1.destroy(); thread2.destroy(); thread1.Join(); thread2.Join(); } }
private static void readWriteTests(Configuration configuration, Test.BackgroundPrx background, Test.BackgroundControllerPrx ctl) { try { background.op(); } catch (Ice.LocalException ex) { Console.Error.WriteLine(ex); test(false); } for (int i = 0; i < 2; ++i) { BackgroundPrx prx = i == 0 ? background : (BackgroundPrx)background.ice_oneway(); try { prx.ice_ping(); configuration.writeException(new Ice.SocketException()); prx.op(); test(false); } catch (Ice.SocketException) { configuration.writeException(null); } background.ice_ping(); configuration.writeException(new Ice.SocketException()); var sentSynchronously = false; var t = prx.opAsync(progress: new Progress <bool>(value => { sentSynchronously = value; })); test(!sentSynchronously); try { t.Wait(); test(false); } catch (AggregateException ex) when(ex.InnerException is Ice.SocketException) { } test(t.IsCompleted); configuration.writeException(null); } try { background.ice_ping(); configuration.readException(new Ice.SocketException()); background.op(); test(false); } catch (Ice.SocketException) { configuration.readException(null); } { background.ice_ping(); configuration.readReady(false); // Required in C# to make sure beginRead() doesn't throw too soon. configuration.readException(new Ice.SocketException()); var t = background.opAsync(); try { t.Wait(); test(false); } catch (AggregateException ex) when(ex.InnerException is Ice.SocketException) { } test(t.IsCompleted); configuration.readException(null); configuration.readReady(true); } try { background.ice_ping(); configuration.writeReady(false); background.op(); configuration.writeReady(true); } catch (Ice.LocalException) { test(false); } try { background.ice_ping(); configuration.readReady(false); background.op(); configuration.readReady(true); } catch (Ice.LocalException) { test(false); } try { background.ice_ping(); configuration.writeReady(false); configuration.writeException(new Ice.SocketException()); background.op(); test(false); } catch (Ice.SocketException) { configuration.writeReady(true); configuration.writeException(null); } for (int i = 0; i < 2; ++i) { BackgroundPrx prx = i == 0 ? background : (BackgroundPrx)background.ice_oneway(); background.ice_ping(); configuration.writeReady(false); configuration.writeException(new Ice.SocketException()); bool sentSynchronously = false; var t = prx.opAsync(progress: new Progress <bool>(value => { sentSynchronously = value; })); test(!sentSynchronously); try { t.Wait(); test(false); } catch (AggregateException ex) when(ex.InnerException is Ice.SocketException) { } test(t.IsCompleted); configuration.writeReady(true); configuration.writeException(null); } try { background.ice_ping(); configuration.readReady(false); configuration.readException(new Ice.SocketException()); background.op(); test(false); } catch (Ice.SocketException) { configuration.readException(null); configuration.readReady(true); } { background.ice_ping(); configuration.readReady(false); configuration.readException(new Ice.SocketException()); var t = background.opAsync(); try { t.Wait(); test(false); } catch (AggregateException ex) when(ex.InnerException is Ice.SocketException) { } test(t.IsCompleted); configuration.readReady(true); configuration.readException(null); } { background.ice_ping(); configuration.readReady(false); configuration.writeReady(false); configuration.readException(new Ice.SocketException()); var t = background.opAsync(); // The read exception might propagate before the message send is seen as completed on IOCP. //r.waitForSent(); try { t.Wait(); test(false); } catch (AggregateException ex) when(ex.InnerException is Ice.SocketException) { } test(t.IsCompleted); configuration.writeReady(true); configuration.readReady(true); configuration.readException(null); } background.ice_ping(); // Establish the connection BackgroundPrx backgroundOneway = BackgroundPrxHelper.uncheckedCast(background.ice_oneway()); test(backgroundOneway.ice_getConnection() == background.ice_getConnection()); ctl.holdAdapter(); // Hold to block in request send. byte[] seq = new byte[10024]; (new System.Random()).NextBytes(seq); OpAMICallback cbWP = new OpAMICallback(); // Fill up the receive and send buffers for (int i = 0; i < 200; ++i) // 2MB { backgroundOneway.opWithPayloadAsync(seq); } OpAMICallback cb = new OpAMICallback(); bool t1Sent = false; var t1 = background.opAsync(progress: new Progress <bool>(value => { cb.sent(value); t1Sent = true; })).ContinueWith(p => { try { p.Wait(); cb.response(); } catch (Ice.Exception ex) { cb.exception(ex); } }); test(!t1Sent); OpAMICallback cb2 = new OpAMICallback(); var t2Sent = false; var t2 = background.opAsync(progress: new Progress <bool>(value => { cb2.sent(value); t2Sent = true; })).ContinueWith((Task p) => { try { p.Wait(); cb2.response(); } catch (Ice.Exception ex) { cb2.noException(ex); } }); test(!t2Sent); var t1SentSynchronously = false; t1 = backgroundOneway.opWithPayloadAsync(seq, progress: new Progress <bool>(value => { t1SentSynchronously = value; })); test(!t1SentSynchronously); t1.ContinueWith((Task p) => { try { p.Wait(); cbWP.noResponse(); } catch (Ice.Exception ex) { cbWP.noException(ex); } }); var t2SentSynchronously = false; t2 = backgroundOneway.opWithPayloadAsync(seq, progress: new Progress <bool>(value => { t2SentSynchronously = value; })); test(!t2SentSynchronously); t2.ContinueWith((Task p) => { try { p.Wait(); cbWP.noResponse(); } catch (Ice.Exception ex) { cbWP.noException(ex); } }); test(!cb.checkResponse(false)); test(!cb2.checkResponse(false)); ctl.resumeAdapter(); cb.checkResponseAndSent(); cb2.checkResponseAndSent(); test(t1Sent && t1.IsCompleted); test(t2Sent && t2.IsCompleted); try { background.ice_ping(); ctl.writeException(true); background.op(); test(false); } catch (Ice.ConnectionLostException) { ctl.writeException(false); } try { background.ice_ping(); ctl.readException(true); background.op(); test(false); } catch (Ice.ConnectionLostException) { ctl.readException(false); } try { background.ice_ping(); ctl.writeReady(false); background.op(); ctl.writeReady(true); } catch (Ice.LocalException) { test(false); } try { background.ice_ping(); ctl.readReady(false); background.op(); ctl.readReady(true); } catch (Ice.LocalException) { test(false); } try { background.ice_ping(); ctl.writeReady(false); ctl.writeException(true); background.op(); test(false); } catch (Ice.ConnectionLostException) { ctl.writeException(false); ctl.writeReady(true); } try { background.ice_ping(); ctl.readReady(false); ctl.readException(true); background.op(); test(false); } catch (Ice.ConnectionLostException) { ctl.readException(false); ctl.readReady(true); } OpThread thread1 = new OpThread(background); OpThread thread2 = new OpThread(background); for (int i = 0; i < 5; i++) { try { background.ice_ping(); } catch (Ice.LocalException) { test(false); } Thread.Sleep(10); configuration.writeException(new Ice.SocketException()); try { background.op(); } catch (Ice.LocalException) { } configuration.writeException(null); Thread.Sleep(10); background.ice_ping(); background.ice_getCachedConnection().close(Ice.ConnectionClose.Forcefully); Thread.Sleep(10); background.ice_getCachedConnection().close(Ice.ConnectionClose.Forcefully); } thread1.destroy(); thread2.destroy(); thread1.Join(); thread2.Join(); }
private static void initializeTests(Configuration configuration, Test.BackgroundPrx background, Test.BackgroundControllerPrx ctl) { try { background.op(); } catch (Ice.LocalException) { test(false); } background.ice_getConnection().close(Ice.ConnectionClose.GracefullyWithWait); for (int i = 0; i < 4; ++i) { if (i == 0 || i == 2) { configuration.initializeException(new Ice.SocketException()); } else { continue; } BackgroundPrx prx = (i == 1 || i == 3) ? background : (BackgroundPrx)background.ice_oneway(); try { prx.op(); test(false); } catch (Ice.SocketException) { } bool sentSynchronously = false; var t = prx.opAsync(progress: new Progress <bool>(value => { sentSynchronously = value; })); test(!sentSynchronously); try { t.Wait(); test(false); } catch (AggregateException ex) when(ex.InnerException is Ice.Exception) { } test(t.IsCompleted); OpAMICallback cbEx = new OpAMICallback(); t = prx.opAsync(progress: new Progress <bool>(value => { sentSynchronously = false; })); test(!sentSynchronously); try { t.Wait(); } catch (AggregateException ex) when(ex.InnerException is Ice.Exception) { cbEx.exception(ex.InnerException as Ice.Exception); } cbEx.checkException(true); test(t.IsCompleted); if (i == 0 || i == 2) { configuration.initializeException(null); } } // // Now run the same tests with the server side. // try { ctl.initializeException(true); background.op(); test(false); } catch (Ice.ConnectionLostException) { ctl.initializeException(false); } catch (Ice.SecurityException) { ctl.initializeException(false); } OpThread thread1 = new OpThread(background); OpThread thread2 = new OpThread(background); for (int i = 0; i < 5; i++) { try { background.ice_ping(); } catch (Ice.LocalException) { test(false); } configuration.initializeException(new Ice.SocketException()); background.ice_getCachedConnection().close(Ice.ConnectionClose.Forcefully); Thread.Sleep(10); configuration.initializeException(null); try { background.ice_ping(); } catch (Ice.LocalException) { } try { background.ice_ping(); } catch (Ice.LocalException) { test(false); } background.ice_getCachedConnection().close(Ice.ConnectionClose.Forcefully); background.ice_ping(); ctl.initializeException(true); background.ice_getCachedConnection().close(Ice.ConnectionClose.Forcefully); Thread.Sleep(10); ctl.initializeException(false); try { background.ice_ping(); } catch (Ice.LocalException) { } try { background.ice_ping(); } catch (Ice.LocalException) { test(false); } try { background.ice_getCachedConnection().close(Ice.ConnectionClose.Forcefully); background.op(); } catch (Ice.LocalException) { test(false); } } thread1.destroy(); thread2.destroy(); thread1.Join(); thread2.Join(); }
private static void connectTests(Configuration configuration, Test.BackgroundPrx background) { try { background.op(); } catch (Ice.LocalException ex) { System.Console.Out.WriteLine(ex); test(false); } background.ice_getConnection().close(Ice.ConnectionClose.GracefullyWithWait); for (int i = 0; i < 4; ++i) { if (i == 0 || i == 2) { configuration.connectorsException(new Ice.DNSException()); } else { configuration.connectException(new Ice.SocketException()); } BackgroundPrx prx = (i == 1 || i == 3) ? background : (BackgroundPrx)background.ice_oneway(); try { prx.op(); test(false); } catch (Ice.Exception) { } var sentSynchronously = false; var t = prx.opAsync(progress: new Progress <bool>(value => { sentSynchronously = value; })); test(!sentSynchronously); try { t.Wait(); test(false); } catch (AggregateException ex) when(ex.InnerException is Ice.Exception) { } test(t.IsCompleted); OpAMICallback cbEx = new OpAMICallback(); t = prx.opAsync(progress: new Progress <bool>(value => { sentSynchronously = value; })); test(!sentSynchronously); t.ContinueWith((Task p) => { try { p.Wait(); } catch (AggregateException ex) when(ex.InnerException is Ice.Exception) { cbEx.exception(ex.InnerException as Ice.Exception); } }); cbEx.checkException(true); test(t.IsCompleted); if (i == 0 || i == 2) { configuration.connectorsException(null); } else { configuration.connectException(null); } } OpThread thread1 = new OpThread(background); OpThread thread2 = new OpThread(background); try { for (int i = 0; i < 5; i++) { try { background.ice_ping(); } catch (Ice.LocalException) { test(false); } configuration.connectException(new Ice.SocketException()); background.ice_getCachedConnection().close(Ice.ConnectionClose.Forcefully); Thread.Sleep(10); configuration.connectException(null); try { background.ice_ping(); } catch (Ice.LocalException) { } } } catch (Exception ex) { System.Console.Out.WriteLine(ex); test(false); } finally { thread1.destroy(); thread2.destroy(); thread1.Join(); thread2.Join(); } }