public Server(Ice.Communicator iceCommunicator, string clientEndpoint, Murmur.ServerPrx proxy, string name) { Users.CollectionChanged += OnUsersCollectionChanged; ServerProxy = proxy; Name = name; try { var servant = new ServerCallback(this); var adapter = iceCommunicator.createObjectAdapterWithEndpoints("", clientEndpoint); var servantProxy = adapter.addWithUUID(servant); ServerCallbackProxy = Murmur.ServerCallbackPrxHelper.checkedCast(servantProxy); adapter.activate(); // TODO: Allow user to provide Ice secret var context = new Dictionary<string, string>(); context["secret"] = ""; ServerProxy.ice_getConnection().setAdapter(adapter); ServerProxy.addCallback(ServerCallbackProxy, context); ServerProxy.begin_getUsers().whenCompleted( users => { CompleteGetUsers(users); }, e => { System.Diagnostics.Debug.WriteLine("Could not get user dictionary for {0}: {1}", Name, e.ToString()); } ); } catch (Ice.Exception e) { System.Diagnostics.Debug.WriteLine("Error talking to {0}: {1}", Name, e.ToString()); } }
public static Ice.ObjectAdapter createAdapter( Ice.Communicator ic, string adapterName, uint port) { instance = ic.createObjectAdapterWithEndpoints( adapterName, "default -p " + port); instance.activate(); return instance; }
public static void allTests(Ice.Communicator communicator) { Write("testing communicator operations... "); Flush(); { // // Test: Exercise addAdminFacet, findAdminFacet, removeAdminFacet with a typical configuration. // Ice.InitializationData init = new Ice.InitializationData(); init.properties = Ice.Util.createProperties(); init.properties.setProperty("Ice.Admin.Endpoints", "tcp -h 127.0.0.1"); init.properties.setProperty("Ice.Admin.InstanceName", "Test"); Ice.Communicator com = Ice.Util.initialize(init); testFacets(com, true); com.destroy(); } { // // Test: Verify that the operations work correctly in the presence of facet filters. // Ice.InitializationData init = new Ice.InitializationData(); init.properties = Ice.Util.createProperties(); init.properties.setProperty("Ice.Admin.Endpoints", "tcp -h 127.0.0.1"); init.properties.setProperty("Ice.Admin.InstanceName", "Test"); init.properties.setProperty("Ice.Admin.Facets", "Properties"); Ice.Communicator com = Ice.Util.initialize(init); testFacets(com, false); com.destroy(); } { // // Test: Verify that the operations work correctly with the Admin object disabled. // Ice.Communicator com = Ice.Util.initialize(); testFacets(com, false); com.destroy(); } { // // Test: Verify that the operations work correctly with Ice.Admin.Enabled=1 // Ice.InitializationData init = new Ice.InitializationData(); init.properties = Ice.Util.createProperties(); init.properties.setProperty("Ice.Admin.Enabled", "1"); Ice.Communicator com = Ice.Util.initialize(init); test(com.getAdmin() == null); Ice.Identity id = Ice.Util.stringToIdentity("test-admin"); try { com.createAdmin(null, id); test(false); } catch(Ice.InitializationException) { } Ice.ObjectAdapter adapter = com.createObjectAdapter(""); test(com.createAdmin(adapter, id) != null); test(com.getAdmin() != null); testFacets(com, true); com.destroy(); } { // // Test: Verify that the operations work correctly when creation of the Admin object is delayed. // Ice.InitializationData init = new Ice.InitializationData(); init.properties = Ice.Util.createProperties(); init.properties.setProperty("Ice.Admin.Endpoints", "tcp -h 127.0.0.1"); init.properties.setProperty("Ice.Admin.InstanceName", "Test"); init.properties.setProperty("Ice.Admin.DelayCreation", "1"); Ice.Communicator com = Ice.Util.initialize(init); testFacets(com, true); com.getAdmin(); testFacets(com, true); com.destroy(); } WriteLine("ok"); string @ref = "factory:default -p 12010 -t 10000"; RemoteCommunicatorFactoryPrx factory = RemoteCommunicatorFactoryPrxHelper.uncheckedCast(communicator.stringToProxy(@ref)); Write("testing process facet... "); Flush(); { // // Test: Verify that Process::shutdown() operation shuts down the communicator. // Dictionary<string, string> props = new Dictionary<string, string>(); props.Add("Ice.Admin.Endpoints", "tcp -h 127.0.0.1"); props.Add("Ice.Admin.InstanceName", "Test"); RemoteCommunicatorPrx com = factory.createCommunicator(props); Ice.ObjectPrx obj = com.getAdmin(); Ice.ProcessPrx proc = Ice.ProcessPrxHelper.checkedCast(obj, "Process"); proc.shutdown(); com.waitForShutdown(); com.destroy(); } WriteLine("ok"); Write("testing properties facet... "); Flush(); { Dictionary<string, string> props = new Dictionary<string, string>(); props.Add("Ice.Admin.Endpoints", "tcp -h 127.0.0.1"); props.Add("Ice.Admin.InstanceName", "Test"); props.Add("Prop1", "1"); props.Add("Prop2", "2"); props.Add("Prop3", "3"); RemoteCommunicatorPrx com = factory.createCommunicator(props); Ice.ObjectPrx obj = com.getAdmin(); Ice.PropertiesAdminPrx pa = Ice.PropertiesAdminPrxHelper.checkedCast(obj, "Properties"); // // Test: PropertiesAdmin::getProperty() // test(pa.getProperty("Prop2").Equals("2")); test(pa.getProperty("Bogus").Equals("")); // // Test: PropertiesAdmin::getProperties() // Dictionary<string, string> pd = pa.getPropertiesForPrefix(""); test(pd.Count == 5); test(pd["Ice.Admin.Endpoints"].Equals("tcp -h 127.0.0.1")); test(pd["Ice.Admin.InstanceName"].Equals("Test")); test(pd["Prop1"].Equals("1")); test(pd["Prop2"].Equals("2")); test(pd["Prop3"].Equals("3")); Dictionary<string, string> changes; // // Test: PropertiesAdmin::setProperties() // Dictionary<string, string> setProps = new Dictionary<string, string>(); setProps.Add("Prop1", "10"); // Changed setProps.Add("Prop2", "20"); // Changed setProps.Add("Prop3", ""); // Removed setProps.Add("Prop4", "4"); // Added setProps.Add("Prop5", "5"); // Added pa.setProperties(setProps); test(pa.getProperty("Prop1").Equals("10")); test(pa.getProperty("Prop2").Equals("20")); test(pa.getProperty("Prop3").Equals("")); test(pa.getProperty("Prop4").Equals("4")); test(pa.getProperty("Prop5").Equals("5")); changes = com.getChanges(); test(changes.Count == 5); test(changes["Prop1"].Equals("10")); test(changes["Prop2"].Equals("20")); test(changes["Prop3"].Equals("")); test(changes["Prop4"].Equals("4")); test(changes["Prop5"].Equals("5")); pa.setProperties(setProps); changes = com.getChanges(); test(changes.Count == 0); com.destroy(); } WriteLine("ok"); Write("testing logger facet... "); Flush(); { Dictionary<String, String> props = new Dictionary<String, String>(); props.Add("Ice.Admin.Endpoints", "tcp -h 127.0.0.1"); props.Add("Ice.Admin.InstanceName", "Test"); props.Add("NullLogger", "1"); RemoteCommunicatorPrx com = factory.createCommunicator(props); com.trace("testCat", "trace"); com.warning("warning"); com.error("error"); com.print("print"); Ice.ObjectPrx obj = com.getAdmin(); Ice.LoggerAdminPrx logger = Ice.LoggerAdminPrxHelper.checkedCast(obj, "Logger"); test(logger != null); string prefix = null; // // Get all // Ice.LogMessage[] logMessages = logger.getLog(null, null, -1, out prefix); test(logMessages.Length == 4); test(prefix.Equals("NullLogger")); test(logMessages[0].traceCategory.Equals("testCat") && logMessages[0].message.Equals("trace")); test(logMessages[1].message.Equals("warning")); test(logMessages[2].message.Equals("error")); test(logMessages[3].message.Equals("print")); // // Get only errors and warnings // com.error("error2"); com.print("print2"); com.trace("testCat", "trace2"); com.warning("warning2"); Ice.LogMessageType[] messageTypes = {Ice.LogMessageType.ErrorMessage, Ice.LogMessageType.WarningMessage}; logMessages = logger.getLog(messageTypes, null, -1, out prefix); test(logMessages.Length == 4); test(prefix.Equals("NullLogger")); foreach(var msg in logMessages) { test(msg.type == Ice.LogMessageType.ErrorMessage || msg.type == Ice.LogMessageType.WarningMessage); } // // Get only errors and traces with Cat = "testCat" // com.trace("testCat2", "A"); com.trace("testCat", "trace3"); com.trace("testCat2", "B"); messageTypes = new Ice.LogMessageType[]{Ice.LogMessageType.ErrorMessage, Ice.LogMessageType.TraceMessage}; string[] categories = {"testCat"}; logMessages = logger.getLog(messageTypes, categories, -1, out prefix); test(logMessages.Length == 5); test(prefix.Equals("NullLogger")); foreach(var msg in logMessages) { test(msg.type == Ice.LogMessageType.ErrorMessage || (msg.type == Ice.LogMessageType.TraceMessage && msg.traceCategory.Equals("testCat"))); } // // Same, but limited to last 2 messages (trace3 + error3) // com.error("error3"); logMessages = logger.getLog(messageTypes, categories, 2, out prefix); test(logMessages.Length == 2); test(prefix.Equals("NullLogger")); test(logMessages[0].message.Equals("trace3")); test(logMessages[1].message.Equals("error3")); // // Now, test RemoteLogger // Ice.ObjectAdapter adapter = communicator.createObjectAdapterWithEndpoints("RemoteLoggerAdapter", "tcp -h localhost"); RemoteLoggerI remoteLogger = new RemoteLoggerI(); Ice.RemoteLoggerPrx myProxy = Ice.RemoteLoggerPrxHelper.uncheckedCast(adapter.addWithUUID(remoteLogger)); adapter.activate(); // // No filtering // logMessages = logger.getLog(null, null, -1, out prefix); remoteLogger.checkNextInit(prefix, logMessages); logger.attachRemoteLogger(myProxy, null, null, -1); remoteLogger.wait(1); remoteLogger.checkNextLog(Ice.LogMessageType.TraceMessage, "rtrace", "testCat"); remoteLogger.checkNextLog(Ice.LogMessageType.WarningMessage, "rwarning", ""); remoteLogger.checkNextLog(Ice.LogMessageType.ErrorMessage, "rerror", ""); remoteLogger.checkNextLog(Ice.LogMessageType.PrintMessage, "rprint", ""); com.trace("testCat", "rtrace"); com.warning("rwarning"); com.error("rerror"); com.print("rprint"); remoteLogger.wait(4); test(logger.detachRemoteLogger(myProxy)); test(!logger.detachRemoteLogger(myProxy)); // // Use Error + Trace with "traceCat" filter with 4 limit // logMessages = logger.getLog(messageTypes, categories, 4, out prefix); test(logMessages.Length == 4); remoteLogger.checkNextInit(prefix, logMessages); logger.attachRemoteLogger(myProxy, messageTypes, categories, 4); remoteLogger.wait(1); remoteLogger.checkNextLog(Ice.LogMessageType.TraceMessage, "rtrace2", "testCat"); remoteLogger.checkNextLog(Ice.LogMessageType.ErrorMessage, "rerror2", ""); com.warning("rwarning2"); com.trace("testCat", "rtrace2"); com.warning("rwarning3"); com.error("rerror2"); com.print("rprint2"); remoteLogger.wait(2); // // Attempt reconnection with slightly different proxy // try { logger.attachRemoteLogger(Ice.RemoteLoggerPrxHelper.uncheckedCast(myProxy.ice_oneway()), messageTypes, categories, 4); test(false); } catch(Ice.RemoteLoggerAlreadyAttachedException) { // expected } com.destroy(); } WriteLine("ok"); Write("testing custom facet... "); Flush(); { // // Test: Verify that the custom facet is present. // Dictionary<string, string> props = new Dictionary<string, string>(); props.Add("Ice.Admin.Endpoints", "tcp -h 127.0.0.1"); props.Add("Ice.Admin.InstanceName", "Test"); RemoteCommunicatorPrx com = factory.createCommunicator(props); Ice.ObjectPrx obj = com.getAdmin(); TestFacetPrx tf = TestFacetPrxHelper.checkedCast(obj, "TestFacet"); tf.op(); com.destroy(); } WriteLine("ok"); Write("testing facet filtering... "); Flush(); { // // Test: Set Ice.Admin.Facets to expose only the Properties facet, // meaning no other facet is available. // Dictionary<string, string> props = new Dictionary<string, string>(); props.Add("Ice.Admin.Endpoints", "tcp -h 127.0.0.1"); props.Add("Ice.Admin.InstanceName", "Test"); props.Add("Ice.Admin.Facets", "Properties"); RemoteCommunicatorPrx com = factory.createCommunicator(props); Ice.ObjectPrx obj = com.getAdmin(); Ice.ProcessPrx proc = Ice.ProcessPrxHelper.checkedCast(obj, "Process"); test(proc == null); TestFacetPrx tf = TestFacetPrxHelper.checkedCast(obj, "TestFacet"); test(tf == null); com.destroy(); } { // // Test: Set Ice.Admin.Facets to expose only the Process facet, // meaning no other facet is available. // Dictionary<string, string> props = new Dictionary<string, string>(); props.Add("Ice.Admin.Endpoints", "tcp -h 127.0.0.1"); props.Add("Ice.Admin.InstanceName", "Test"); props.Add("Ice.Admin.Facets", "Process"); RemoteCommunicatorPrx com = factory.createCommunicator(props); Ice.ObjectPrx obj = com.getAdmin(); Ice.PropertiesAdminPrx pa = Ice.PropertiesAdminPrxHelper.checkedCast(obj, "Properties"); test(pa == null); TestFacetPrx tf = TestFacetPrxHelper.checkedCast(obj, "TestFacet"); test(tf == null); com.destroy(); } { // // Test: Set Ice.Admin.Facets to expose only the TestFacet facet, // meaning no other facet is available. // Dictionary<string, string> props = new Dictionary<string, string>(); props.Add("Ice.Admin.Endpoints", "tcp -h 127.0.0.1"); props.Add("Ice.Admin.InstanceName", "Test"); props.Add("Ice.Admin.Facets", "TestFacet"); RemoteCommunicatorPrx com = factory.createCommunicator(props); Ice.ObjectPrx obj = com.getAdmin(); Ice.PropertiesAdminPrx pa = Ice.PropertiesAdminPrxHelper.checkedCast(obj, "Properties"); test(pa == null); Ice.ProcessPrx proc = Ice.ProcessPrxHelper.checkedCast(obj, "Process"); test(proc == null); com.destroy(); } { // // Test: Set Ice.Admin.Facets to expose two facets. Use whitespace to separate the // facet names. // Dictionary<string, string> props = new Dictionary<string, string>(); props.Add("Ice.Admin.Endpoints", "tcp -h 127.0.0.1"); props.Add("Ice.Admin.InstanceName", "Test"); props.Add("Ice.Admin.Facets", "Properties TestFacet"); RemoteCommunicatorPrx com = factory.createCommunicator(props); Ice.ObjectPrx obj = com.getAdmin(); Ice.PropertiesAdminPrx pa = Ice.PropertiesAdminPrxHelper.checkedCast(obj, "Properties"); test(pa.getProperty("Ice.Admin.InstanceName").Equals("Test")); TestFacetPrx tf = TestFacetPrxHelper.checkedCast(obj, "TestFacet"); tf.op(); Ice.ProcessPrx proc = Ice.ProcessPrxHelper.checkedCast(obj, "Process"); test(proc == null); com.destroy(); } { // // Test: Set Ice.Admin.Facets to expose two facets. Use a comma to separate the // facet names. // Dictionary<string, string> props = new Dictionary<string, string>(); props.Add("Ice.Admin.Endpoints", "tcp -h 127.0.0.1"); props.Add("Ice.Admin.InstanceName", "Test"); props.Add("Ice.Admin.Facets", "TestFacet, Process"); RemoteCommunicatorPrx com = factory.createCommunicator(props); Ice.ObjectPrx obj = com.getAdmin(); Ice.PropertiesAdminPrx pa = Ice.PropertiesAdminPrxHelper.checkedCast(obj, "Properties"); test(pa == null); TestFacetPrx tf = TestFacetPrxHelper.checkedCast(obj, "TestFacet"); tf.op(); Ice.ProcessPrx proc = Ice.ProcessPrxHelper.checkedCast(obj, "Process"); proc.shutdown(); com.waitForShutdown(); com.destroy(); } WriteLine("ok"); factory.shutdown(); }
allTests(Ice.Communicator communicator) { Ice.ObjectAdapter oa = communicator.createObjectAdapterWithEndpoints("MyOA", "tcp -h localhost"); oa.activate(); Ice.Object servant = new MyObjectI(); // // Register default servant with category "foo" // oa.addDefaultServant(servant, "foo"); // // Start test // Console.Out.Write("testing single category... "); Console.Out.Flush(); Ice.Object r = oa.findDefaultServant("foo"); test(r == servant); r = oa.findDefaultServant("bar"); test(r == null); Ice.Identity identity = new Ice.Identity(); identity.category = "foo"; string[] names = new string[] { "foo", "bar", "x", "y", "abcdefg" }; Test.MyObjectPrx prx = null; for(int idx = 0; idx < 5; ++idx) { identity.name = names[idx]; prx = Test.MyObjectPrxHelper.uncheckedCast(oa.createProxy(identity)); prx.ice_ping(); test(prx.getName() == names[idx]); } identity.name = "ObjectNotExist"; prx = Test.MyObjectPrxHelper.uncheckedCast(oa.createProxy(identity)); try { prx.ice_ping(); test(false); } catch(Ice.ObjectNotExistException) { // Expected } try { prx.getName(); test(false); } catch(Ice.ObjectNotExistException) { // Expected } identity.name = "FacetNotExist"; prx = Test.MyObjectPrxHelper.uncheckedCast(oa.createProxy(identity)); try { prx.ice_ping(); test(false); } catch(Ice.FacetNotExistException) { // Expected } try { prx.getName(); test(false); } catch(Ice.FacetNotExistException) { // Expected } identity.category = "bar"; for(int idx = 0; idx < 5; idx++) { identity.name = names[idx]; prx = Test.MyObjectPrxHelper.uncheckedCast(oa.createProxy(identity)); try { prx.ice_ping(); test(false); } catch(Ice.ObjectNotExistException) { // Expected } try { prx.getName(); test(false); } catch(Ice.ObjectNotExistException) { // Expected } } oa.removeDefaultServant("foo"); identity.category = "foo"; prx = Test.MyObjectPrxHelper.uncheckedCast(oa.createProxy(identity)); try { prx.ice_ping(); } catch(Ice.ObjectNotExistException) { // Expected } Console.Out.WriteLine("ok"); Console.Out.Write("testing default category... "); Console.Out.Flush(); oa.addDefaultServant(servant, ""); r = oa.findDefaultServant("bar"); test(r == null); r = oa.findDefaultServant(""); test(r == servant); for(int idx = 0; idx < 5; ++idx) { identity.name = names[idx]; prx = Test.MyObjectPrxHelper.uncheckedCast(oa.createProxy(identity)); prx.ice_ping(); test(prx.getName() == names[idx]); } Console.Out.WriteLine("ok"); }
public static TestIntfPrx allTests(Ice.Communicator communicator) { Console.Out.Write("testing stringToProxy... "); Console.Out.Flush(); string @ref = "test:default -p 12010"; Ice.ObjectPrx @base = communicator.stringToProxy(@ref); test(@base != null); Console.Out.WriteLine("ok"); Console.Out.Write("testing checked cast... "); Console.Out.Flush(); TestIntfPrx obj = TestIntfPrxHelper.checkedCast(@base); test(obj != null); test(obj.Equals(@base)); Console.Out.WriteLine("ok"); { Console.Out.Write("creating/destroying/recreating object adapter... "); Console.Out.Flush(); Ice.ObjectAdapter adapter = communicator.createObjectAdapterWithEndpoints("TransientTestAdapter", "default"); try { communicator.createObjectAdapterWithEndpoints("TransientTestAdapter", "default"); test(false); } catch(Ice.AlreadyRegisteredException) { } adapter.destroy(); // // Use a different port than the first adapter to avoid an "address already in use" error. // adapter = communicator.createObjectAdapterWithEndpoints("TransientTestAdapter", "default"); adapter.destroy(); Console.Out.WriteLine("ok"); } Console.Out.Write("creating/activating/deactivating object adapter in one operation... "); Console.Out.Flush(); obj.transient(); Console.Out.WriteLine("ok"); Console.Out.Write("deactivating object adapter in the server... "); Console.Out.Flush(); obj.deactivate(); Console.Out.WriteLine("ok"); Console.Out.Write("testing whether server is gone... "); Console.Out.Flush(); try { obj.ice_ping(); throw new System.ApplicationException(); } catch(Ice.LocalException) { Console.Out.WriteLine("ok"); } return obj; }
public static TestIntfPrx allTests(Ice.Communicator communicator, bool collocated) #endif { Write("testing stringToProxy... "); Flush(); String @ref = "Test:default -p 12010 -t 2000"; Ice.ObjectPrx @base = communicator.stringToProxy(@ref); test(@base != null); WriteLine("ok"); Write("testing checked cast... "); Flush(); TestIntfPrx testPrx = TestIntfPrxHelper.checkedCast(@base); test(testPrx != null); test(testPrx.Equals(@base)); WriteLine("ok"); Write("base... "); Flush(); { try { testPrx.baseAsBase(); test(false); } catch(Base b) { test(b.b.Equals("Base.b")); test(b.GetType().FullName.Equals("Test.Base")); } catch(Exception) { test(false); } } WriteLine("ok"); Write("base (AMI)... "); Flush(); { AsyncCallback cb = new AsyncCallback(); testPrx.begin_baseAsBase().whenCompleted(cb.response, cb.exception_baseAsBase); cb.check(); } WriteLine("ok"); Write("slicing of unknown derived... "); Flush(); { try { testPrx.unknownDerivedAsBase(); test(false); } catch(Base b) { test(b.b.Equals("UnknownDerived.b")); test(b.GetType().FullName.Equals("Test.Base")); } catch(Exception) { test(false); } } WriteLine("ok"); Write("slicing of unknown derived (AMI)... "); Flush(); { AsyncCallback cb = new AsyncCallback(); testPrx.begin_unknownDerivedAsBase().whenCompleted(cb.response, cb.exception_unknownDerivedAsBase); cb.check(); } WriteLine("ok"); Write("non-slicing of known derived as base... "); Flush(); { try { testPrx.knownDerivedAsBase(); test(false); } catch(KnownDerived k) { test(k.b.Equals("KnownDerived.b")); test(k.kd.Equals("KnownDerived.kd")); test(k.GetType().FullName.Equals("Test.KnownDerived")); } catch(Exception) { test(false); } } WriteLine("ok"); Write("non-slicing of known derived as base (AMI)... "); Flush(); { AsyncCallback cb = new AsyncCallback(); testPrx.begin_knownDerivedAsBase().whenCompleted(cb.response, cb.exception_knownDerivedAsBase); cb.check(); } WriteLine("ok"); Write("non-slicing of known derived as derived... "); Flush(); { try { testPrx.knownDerivedAsKnownDerived(); test(false); } catch(KnownDerived k) { test(k.b.Equals("KnownDerived.b")); test(k.kd.Equals("KnownDerived.kd")); test(k.GetType().FullName.Equals("Test.KnownDerived")); } catch(Exception) { test(false); } } WriteLine("ok"); Write("non-slicing of known derived as derived (AMI)... "); Flush(); { AsyncCallback cb = new AsyncCallback(); testPrx.begin_knownDerivedAsKnownDerived().whenCompleted( cb.response, cb.exception_knownDerivedAsKnownDerived); cb.check(); } WriteLine("ok"); Write("slicing of unknown intermediate as base... "); Flush(); { try { testPrx.unknownIntermediateAsBase(); test(false); } catch(Base b) { test(b.b.Equals("UnknownIntermediate.b")); test(b.GetType().FullName.Equals("Test.Base")); } catch(Exception) { test(false); } } WriteLine("ok"); Write("slicing of unknown intermediate as base (AMI)... "); Flush(); { AsyncCallback cb = new AsyncCallback(); testPrx.begin_unknownIntermediateAsBase().whenCompleted( cb.response, cb.exception_unknownIntermediateAsBase); cb.check(); } WriteLine("ok"); Write("slicing of known intermediate as base... "); Flush(); { try { testPrx.knownIntermediateAsBase(); test(false); } catch(KnownIntermediate ki) { test(ki.b.Equals("KnownIntermediate.b")); test(ki.ki.Equals("KnownIntermediate.ki")); test(ki.GetType().FullName.Equals("Test.KnownIntermediate")); } catch(Exception) { test(false); } } WriteLine("ok"); Write("slicing of known intermediate as base (AMI)... "); Flush(); { AsyncCallback cb = new AsyncCallback(); testPrx.begin_knownIntermediateAsBase().whenCompleted( cb.response, cb.exception_knownIntermediateAsBase); cb.check(); } WriteLine("ok"); Write("slicing of known most derived as base... "); Flush(); { try { testPrx.knownMostDerivedAsBase(); test(false); } catch(KnownMostDerived kmd) { test(kmd.b.Equals("KnownMostDerived.b")); test(kmd.ki.Equals("KnownMostDerived.ki")); test(kmd.kmd.Equals("KnownMostDerived.kmd")); test(kmd.GetType().FullName.Equals("Test.KnownMostDerived")); } catch(Exception) { test(false); } } WriteLine("ok"); Write("slicing of known most derived as base (AMI)... "); Flush(); { AsyncCallback cb = new AsyncCallback(); testPrx.begin_knownMostDerivedAsBase().whenCompleted( cb.response, cb.exception_knownMostDerivedAsBase); cb.check(); } WriteLine("ok"); Write("non-slicing of known intermediate as intermediate... "); Flush(); { try { testPrx.knownIntermediateAsKnownIntermediate(); test(false); } catch(KnownIntermediate ki) { test(ki.b.Equals("KnownIntermediate.b")); test(ki.ki.Equals("KnownIntermediate.ki")); test(ki.GetType().FullName.Equals("Test.KnownIntermediate")); } catch(Exception) { test(false); } } WriteLine("ok"); Write("non-slicing of known intermediate as intermediate (AMI)... "); Flush(); { AsyncCallback cb = new AsyncCallback(); testPrx.begin_knownIntermediateAsKnownIntermediate().whenCompleted( cb.response, cb.exception_knownIntermediateAsKnownIntermediate); cb.check(); } WriteLine("ok"); Write("non-slicing of known most derived as intermediate... "); Flush(); { try { testPrx.knownMostDerivedAsKnownIntermediate(); test(false); } catch(KnownMostDerived kmd) { test(kmd.b.Equals("KnownMostDerived.b")); test(kmd.ki.Equals("KnownMostDerived.ki")); test(kmd.kmd.Equals("KnownMostDerived.kmd")); test(kmd.GetType().FullName.Equals("Test.KnownMostDerived")); } catch(Exception) { test(false); } } WriteLine("ok"); Write("non-slicing of known most derived as intermediate (AMI)... "); Flush(); { AsyncCallback cb = new AsyncCallback(); testPrx.begin_knownMostDerivedAsKnownIntermediate().whenCompleted( cb.response, cb.exception_knownMostDerivedAsKnownIntermediate); cb.check(); } WriteLine("ok"); Write("non-slicing of known most derived as most derived... "); Flush(); { try { testPrx.knownMostDerivedAsKnownMostDerived(); test(false); } catch(KnownMostDerived kmd) { test(kmd.b.Equals("KnownMostDerived.b")); test(kmd.ki.Equals("KnownMostDerived.ki")); test(kmd.kmd.Equals("KnownMostDerived.kmd")); test(kmd.GetType().FullName.Equals("Test.KnownMostDerived")); } catch(Exception) { test(false); } } WriteLine("ok"); Write("non-slicing of known most derived as most derived (AMI)... "); Flush(); { AsyncCallback cb = new AsyncCallback(); testPrx.begin_knownMostDerivedAsKnownMostDerived().whenCompleted( cb.response, cb.exception_knownMostDerivedAsKnownMostDerived); cb.check(); } WriteLine("ok"); Write("slicing of unknown most derived, known intermediate as base... "); Flush(); { try { testPrx.unknownMostDerived1AsBase(); test(false); } catch(KnownIntermediate ki) { test(ki.b.Equals("UnknownMostDerived1.b")); test(ki.ki.Equals("UnknownMostDerived1.ki")); test(ki.GetType().FullName.Equals("Test.KnownIntermediate")); } catch(Exception) { test(false); } } WriteLine("ok"); Write("slicing of unknown most derived, known intermediate as base (AMI)... "); Flush(); { AsyncCallback cb = new AsyncCallback(); testPrx.begin_unknownMostDerived1AsBase().whenCompleted( cb.response, cb.exception_unknownMostDerived1AsBase); cb.check(); } WriteLine("ok"); Write("slicing of unknown most derived, known intermediate as intermediate... "); Flush(); { try { testPrx.unknownMostDerived1AsKnownIntermediate(); test(false); } catch(KnownIntermediate ki) { test(ki.b.Equals("UnknownMostDerived1.b")); test(ki.ki.Equals("UnknownMostDerived1.ki")); test(ki.GetType().FullName.Equals("Test.KnownIntermediate")); } catch(Exception) { test(false); } } WriteLine("ok"); Write("slicing of unknown most derived, known intermediate as intermediate (AMI)... "); Flush(); { AsyncCallback cb = new AsyncCallback(); testPrx.begin_unknownMostDerived1AsKnownIntermediate().whenCompleted( cb.response, cb.exception_unknownMostDerived1AsKnownIntermediate); cb.check(); } WriteLine("ok"); Write("slicing of unknown most derived, unknown intermediate thrown as base... "); Flush(); { try { testPrx.unknownMostDerived2AsBase(); test(false); } catch(Base b) { test(b.b.Equals("UnknownMostDerived2.b")); test(b.GetType().FullName.Equals("Test.Base")); } catch(Exception) { test(false); } } WriteLine("ok"); Write("slicing of unknown most derived, unknown intermediate thrown as base (AMI)... "); Flush(); { AsyncCallback cb = new AsyncCallback(); testPrx.begin_unknownMostDerived2AsBase().whenCompleted( cb.response, cb.exception_unknownMostDerived2AsBase); cb.check(); } WriteLine("ok"); Write("unknown most derived in compact format... "); Flush(); { try { testPrx.unknownMostDerived2AsBaseCompact(); test(false); } catch(Base) { // // For the 1.0 encoding, the unknown exception is sliced to Base. // test(testPrx.ice_getEncodingVersion().Equals(Ice.Util.Encoding_1_0)); } catch(Ice.UnknownUserException) { // // A MarshalException is raised for the compact format because the // most-derived type is unknown and the exception cannot be sliced. // test(!testPrx.ice_getEncodingVersion().Equals(Ice.Util.Encoding_1_0)); } catch(Ice.OperationNotExistException) { } catch(Exception) { test(false); } } WriteLine("ok"); // // No server side in Silverlight // #if !SILVERLIGHT Write("preserved exceptions... "); Flush(); { Ice.ObjectAdapter adapter = communicator.createObjectAdapterWithEndpoints("Relay", "default"); RelayPrx relay = RelayPrxHelper.uncheckedCast(adapter.addWithUUID(new RelayI())); adapter.activate(); try { testPrx.relayKnownPreservedAsBase(relay); test(false); } catch(KnownPreservedDerived ex) { test(ex.b.Equals("base")); test(ex.kp.Equals("preserved")); test(ex.kpd.Equals("derived")); } catch(Ice.OperationNotExistException) { } catch(Exception) { test(false); } try { testPrx.relayKnownPreservedAsKnownPreserved(relay); test(false); } catch(KnownPreservedDerived ex) { test(ex.b.Equals("base")); test(ex.kp.Equals("preserved")); test(ex.kpd.Equals("derived")); } /* catch(Exception) { test(false); } */ catch(Ice.OperationNotExistException) { } catch(Exception) { test(false); } try { testPrx.relayUnknownPreservedAsBase(relay); test(false); } catch(Preserved2 ex) { test(ex.b.Equals("base")); test(ex.kp.Equals("preserved")); test(ex.kpd.Equals("derived")); test(ex.p1.ice_id().Equals(PreservedClass.ice_staticId())); PreservedClass pc = ex.p1 as PreservedClass; test(pc.bc.Equals("bc")); test(pc.pc.Equals("pc")); test(ex.p2 == ex.p1); } catch(KnownPreservedDerived ex) { // // For the 1.0 encoding, the unknown exception is sliced to KnownPreserved. // test(testPrx.ice_getEncodingVersion().Equals(Ice.Util.Encoding_1_0)); test(ex.b.Equals("base")); test(ex.kp.Equals("preserved")); test(ex.kpd.Equals("derived")); } catch(Ice.OperationNotExistException) { } catch(Exception) { test(false); } try { testPrx.relayUnknownPreservedAsKnownPreserved(relay); test(false); } catch(Preserved2 ex) { test(ex.b.Equals("base")); test(ex.kp.Equals("preserved")); test(ex.kpd.Equals("derived")); test(ex.p1.ice_id().Equals(PreservedClass.ice_staticId())); PreservedClass pc = ex.p1 as PreservedClass; test(pc.bc.Equals("bc")); test(pc.pc.Equals("pc")); test(ex.p2 == ex.p1); } catch(KnownPreservedDerived ex) { // // For the 1.0 encoding, the unknown exception is sliced to KnownPreserved. // test(testPrx.ice_getEncodingVersion().Equals(Ice.Util.Encoding_1_0)); test(ex.b.Equals("base")); test(ex.kp.Equals("preserved")); test(ex.kpd.Equals("derived")); } catch(Ice.OperationNotExistException) { } catch(Exception) { test(false); } adapter.destroy(); } WriteLine("ok"); #endif #if SILVERLIGHT testPrx.shutdown(); #else return testPrx; #endif }
public static ThrowerPrx allTests(Ice.Communicator communicator, bool collocated) { { Console.Write("testing object adapter registration exceptions... "); Ice.ObjectAdapter first; try { first = communicator.createObjectAdapter("TestAdapter0"); } catch(Ice.InitializationException) { // Expected } communicator.getProperties().setProperty("TestAdapter0.Endpoints", "default"); first = communicator.createObjectAdapter("TestAdapter0"); try { communicator.createObjectAdapter("TestAdapter0"); test(false); } catch(Ice.AlreadyRegisteredException) { // Expected. } try { Ice.ObjectAdapter second = communicator.createObjectAdapterWithEndpoints("TestAdapter0", "ssl -h foo -p 12011"); test(false); // // Quell mono error that variable second isn't used. // second.deactivate(); } catch(Ice.AlreadyRegisteredException) { // Expected } first.deactivate(); Console.WriteLine("ok"); } { Console.Write("testing servant registration exceptions... "); communicator.getProperties().setProperty("TestAdapter1.Endpoints", "default"); Ice.ObjectAdapter adapter = communicator.createObjectAdapter("TestAdapter1"); Ice.Object obj = new EmptyI(); adapter.add(obj, communicator.stringToIdentity("x")); try { adapter.add(obj, communicator.stringToIdentity("x")); test(false); } catch(Ice.AlreadyRegisteredException) { } adapter.remove(communicator.stringToIdentity("x")); try { adapter.remove(communicator.stringToIdentity("x")); test(false); } catch(Ice.NotRegisteredException) { } adapter.deactivate(); Console.WriteLine("ok"); } { Console.Write("testing servant locator registration exceptions... "); communicator.getProperties().setProperty("TestAdapter2.Endpoints", "default"); Ice.ObjectAdapter adapter = communicator.createObjectAdapter("TestAdapter2"); Ice.ServantLocator loc = new ServantLocatorI(); adapter.addServantLocator(loc, "x"); try { adapter.addServantLocator(loc, "x"); test(false); } catch(Ice.AlreadyRegisteredException) { } adapter.deactivate(); Console.WriteLine("ok"); } { Console.Write("testing object factory registration exception... "); Ice.ObjectFactory of = new ObjectFactoryI(); communicator.addObjectFactory(of, "::x"); try { communicator.addObjectFactory(of, "::x"); test(false); } catch(Ice.AlreadyRegisteredException) { } Console.WriteLine("ok"); } Console.Write("testing stringToProxy... "); Console.Out.Flush(); String @ref = "thrower:default -p 12010"; Ice.ObjectPrx @base = communicator.stringToProxy(@ref); test(@base != null); Console.WriteLine("ok"); Console.Write("testing checked cast... "); Console.Out.Flush(); ThrowerPrx thrower = ThrowerPrxHelper.checkedCast(@base); test(thrower != null); test(thrower.Equals(@base)); Console.WriteLine("ok"); Console.Write("catching exact types... "); Console.Out.Flush(); try { thrower.throwAasA(1); test(false); } catch(A ex) { test(ex.aMem == 1); } catch(Exception) { test(false); } try { thrower.throwAorDasAorD(1); test(false); } catch(A ex) { test(ex.aMem == 1); } catch(Exception) { test(false); } try { thrower.throwAorDasAorD(- 1); test(false); } catch(D ex) { test(ex.dMem == - 1); } catch(Exception) { test(false); } try { thrower.throwBasB(1, 2); test(false); } catch(B ex) { test(ex.aMem == 1); test(ex.bMem == 2); } catch(Exception) { test(false); } try { thrower.throwCasC(1, 2, 3); test(false); } catch(C ex) { test(ex.aMem == 1); test(ex.bMem == 2); test(ex.cMem == 3); } catch(Exception) { test(false); } Console.WriteLine("ok"); Console.Write("catching base types... "); Console.Out.Flush(); try { thrower.throwBasB(1, 2); test(false); } catch(A ex) { test(ex.aMem == 1); } catch(Exception) { test(false); } try { thrower.throwCasC(1, 2, 3); test(false); } catch(B ex) { test(ex.aMem == 1); test(ex.bMem == 2); } catch(Exception) { test(false); } Console.WriteLine("ok"); Console.Write("catching derived types... "); Console.Out.Flush(); try { thrower.throwBasA(1, 2); test(false); } catch(B ex) { test(ex.aMem == 1); test(ex.bMem == 2); } catch(Exception) { test(false); } try { thrower.throwCasA(1, 2, 3); test(false); } catch(C ex) { test(ex.aMem == 1); test(ex.bMem == 2); test(ex.cMem == 3); } catch(Exception) { test(false); } try { thrower.throwCasB(1, 2, 3); test(false); } catch(C ex) { test(ex.aMem == 1); test(ex.bMem == 2); test(ex.cMem == 3); } catch(Exception) { test(false); } Console.WriteLine("ok"); if(thrower.supportsUndeclaredExceptions()) { Console.Write("catching unknown user exception... "); Console.Out.Flush(); try { thrower.throwUndeclaredA(1); test(false); } catch(Ice.UnknownUserException) { } catch(Exception) { test(false); } try { thrower.throwUndeclaredB(1, 2); test(false); } catch(Ice.UnknownUserException) { } catch(Exception) { test(false); } try { thrower.throwUndeclaredC(1, 2, 3); test(false); } catch(Ice.UnknownUserException) { } catch(Exception) { test(false); } Console.WriteLine("ok"); } Console.Write("catching object not exist exception... "); Console.Out.Flush(); { Ice.Identity id = communicator.stringToIdentity("does not exist"); try { ThrowerPrx thrower2 = ThrowerPrxHelper.uncheckedCast(thrower.ice_identity(id)); thrower2.ice_ping(); test(false); } catch(Ice.ObjectNotExistException ex) { test(ex.id.Equals(id)); } catch(Exception) { test(false); } } Console.WriteLine("ok"); Console.Write("catching facet not exist exception... "); Console.Out.Flush(); try { ThrowerPrx thrower2 = ThrowerPrxHelper.uncheckedCast(thrower, "no such facet"); try { thrower2.ice_ping(); test(false); } catch(Ice.FacetNotExistException ex) { test(ex.facet.Equals("no such facet")); } } catch(Exception) { test(false); } Console.WriteLine("ok"); Console.Write("catching operation not exist exception... "); Console.Out.Flush(); try { WrongOperationPrx thrower2 = WrongOperationPrxHelper.uncheckedCast(thrower); thrower2.noSuchOperation(); test(false); } catch(Ice.OperationNotExistException ex) { test(ex.operation.Equals("noSuchOperation")); } catch(Exception) { test(false); } Console.WriteLine("ok"); Console.Write("catching unknown local exception... "); Console.Out.Flush(); try { thrower.throwLocalException(); test(false); } catch(Ice.UnknownLocalException) { } catch(Exception) { test(false); } Console.WriteLine("ok"); Console.Write("catching unknown non-Ice exception... "); Console.Out.Flush(); try { thrower.throwNonIceException(); test(false); } catch(Ice.UnknownException) { } catch(System.Exception) { test(false); } Console.WriteLine("ok"); Console.Write("testing asynchronous exceptions... "); Console.Out.Flush(); try { thrower.throwAfterResponse(); } catch(Exception) { test(false); } try { thrower.throwAfterException(); test(false); } catch(A) { } catch(Exception) { test(false); } Console.WriteLine("ok"); if(!collocated) { Console.Write("catching exact types with AMI... "); Console.Out.Flush(); { AMI_Thrower_throwAasAI cb = new AMI_Thrower_throwAasAI(); thrower.throwAasA_async(cb, 1); cb.check(); } { AMI_Thrower_throwAorDasAorDI cb = new AMI_Thrower_throwAorDasAorDI(); thrower.throwAorDasAorD_async(cb, 1); cb.check(); } { AMI_Thrower_throwAorDasAorDI cb = new AMI_Thrower_throwAorDasAorDI(); thrower.throwAorDasAorD_async(cb, - 1); cb.check(); } { AMI_Thrower_throwBasBI cb = new AMI_Thrower_throwBasBI(); thrower.throwBasB_async(cb, 1, 2); cb.check(); } { AMI_Thrower_throwCasCI cb = new AMI_Thrower_throwCasCI(); thrower.throwCasC_async(cb, 1, 2, 3); cb.check(); } Console.WriteLine("ok"); Console.Write("catching derived types... "); Console.Out.Flush(); { AMI_Thrower_throwBasAI cb = new AMI_Thrower_throwBasAI(); thrower.throwBasA_async(cb, 1, 2); cb.check(); } { AMI_Thrower_throwCasAI cb = new AMI_Thrower_throwCasAI(); thrower.throwCasA_async(cb, 1, 2, 3); cb.check(); } { AMI_Thrower_throwCasBI cb = new AMI_Thrower_throwCasBI(); thrower.throwCasB_async(cb, 1, 2, 3); cb.check(); } Console.WriteLine("ok"); if(thrower.supportsUndeclaredExceptions()) { Console.Write("catching unknown user exception with AMI... "); Console.Out.Flush(); { AMI_Thrower_throwUndeclaredAI cb = new AMI_Thrower_throwUndeclaredAI(); thrower.throwUndeclaredA_async(cb, 1); cb.check(); } { AMI_Thrower_throwUndeclaredBI cb = new AMI_Thrower_throwUndeclaredBI(); thrower.throwUndeclaredB_async(cb, 1, 2); cb.check(); } { AMI_Thrower_throwUndeclaredCI cb = new AMI_Thrower_throwUndeclaredCI(); thrower.throwUndeclaredC_async(cb, 1, 2, 3); cb.check(); } Console.WriteLine("ok"); } Console.Write("catching object not exist exception with AMI... "); Console.Out.Flush(); { Ice.Identity id = communicator.stringToIdentity("does not exist"); ThrowerPrx thrower2 = ThrowerPrxHelper.uncheckedCast(thrower.ice_identity(id)); AMI_Thrower_throwAasAObjectNotExistI cb = new AMI_Thrower_throwAasAObjectNotExistI(communicator); thrower2.throwAasA_async(cb, 1); cb.check(); } Console.WriteLine("ok"); Console.Write("catching facet not exist exception with AMI... "); Console.Out.Flush(); try { ThrowerPrx thrower2 = ThrowerPrxHelper.uncheckedCast(thrower, "no such facet"); { AMI_Thrower_throwAasAFacetNotExistI cb = new AMI_Thrower_throwAasAFacetNotExistI(); thrower2.throwAasA_async(cb, 1); cb.check(); } } catch(Exception) { test(false); } Console.WriteLine("ok"); Console.Write("catching operation not exist exception with AMI... "); Console.Out.Flush(); { AMI_WrongOperation_noSuchOperationI cb = new AMI_WrongOperation_noSuchOperationI(); WrongOperationPrx thrower2 = WrongOperationPrxHelper.uncheckedCast(thrower); thrower2.noSuchOperation_async(cb); cb.check(); } Console.WriteLine("ok"); Console.Write("catching unknown local exception with AMI... "); Console.Out.Flush(); { AMI_Thrower_throwLocalExceptionI cb = new AMI_Thrower_throwLocalExceptionI(); thrower.throwLocalException_async(cb); cb.check(); } Console.WriteLine("ok"); Console.Write("catching unknown non-Ice exception with AMI... "); Console.Out.Flush(); AMI_Thrower_throwNonIceExceptionI cb2 = new AMI_Thrower_throwNonIceExceptionI(); thrower.throwNonIceException_async(cb2); cb2.check(); Console.WriteLine("ok"); Console.Write("catching exact types with new AMI mapping... "); Console.Out.Flush(); { AsyncCallback cb3 = new AsyncCallback(); thrower.begin_throwAasA(1).whenCompleted(cb3.response, cb3.exception_AasA); cb3.check(); } { AsyncCallback cb3 = new AsyncCallback(); thrower.begin_throwAorDasAorD(1).whenCompleted(cb3.response, cb3.exception_AorDasAorD); cb3.check(); } { AsyncCallback cb3 = new AsyncCallback(); thrower.begin_throwAorDasAorD(-1).whenCompleted(cb3.response, cb3.exception_AorDasAorD); cb3.check(); } { AsyncCallback cb3 = new AsyncCallback(); thrower.begin_throwBasB(1, 2).whenCompleted(cb3.response, cb3.exception_BasB); cb3.check(); } { AsyncCallback cb3 = new AsyncCallback(); thrower.begin_throwCasC(1, 2, 3).whenCompleted(cb3.response, cb3.exception_CasC); cb3.check(); } Console.WriteLine("ok"); Console.Write("catching derived types with new AMI mapping... "); Console.Out.Flush(); { AsyncCallback cb3 = new AsyncCallback(); thrower.begin_throwBasA(1, 2).whenCompleted(cb3.response, cb3.exception_BasA); cb3.check(); } { AsyncCallback cb3 = new AsyncCallback(); thrower.begin_throwCasA(1, 2, 3).whenCompleted(cb3.response, cb3.exception_CasA); cb3.check(); } { AsyncCallback cb3 = new AsyncCallback(); thrower.begin_throwCasB(1, 2, 3).whenCompleted(cb3.response, cb3.exception_CasB); cb3.check(); } Console.WriteLine("ok"); if(thrower.supportsUndeclaredExceptions()) { Console.Write("catching unknown user exception with new AMI mapping... "); Console.Out.Flush(); { AsyncCallback cb3 = new AsyncCallback(); thrower.begin_throwUndeclaredA(1).whenCompleted(cb3.response, cb3.exception_UndeclaredA); cb3.check(); } { AsyncCallback cb3 = new AsyncCallback(); thrower.begin_throwUndeclaredB(1, 2).whenCompleted(cb3.response, cb3.exception_UndeclaredB); cb3.check(); } { AsyncCallback cb3 = new AsyncCallback(); thrower.begin_throwUndeclaredC(1, 2, 3).whenCompleted(cb3.response, cb3.exception_UndeclaredC); cb3.check(); } Console.WriteLine("ok"); } Console.Write("catching object not exist exception with new AMI mapping... "); Console.Out.Flush(); { Ice.Identity id = communicator.stringToIdentity("does not exist"); ThrowerPrx thrower2 = ThrowerPrxHelper.uncheckedCast(thrower.ice_identity(id)); AsyncCallback cb3 = new AsyncCallback(communicator); thrower2.begin_throwAasA(1).whenCompleted(cb3.response, cb3.exception_AasAObjectNotExist); cb3.check(); } Console.WriteLine("ok"); Console.Write("catching facet not exist exception with new AMI mapping... "); Console.Out.Flush(); { ThrowerPrx thrower2 = ThrowerPrxHelper.uncheckedCast(thrower, "no such facet"); AsyncCallback cb3 = new AsyncCallback(); thrower2.begin_throwAasA(1).whenCompleted(cb3.response, cb3.exception_AasAFacetNotExist); cb3.check(); } Console.WriteLine("ok"); Console.Write("catching operation not exist exception with new AMI mapping... "); Console.Out.Flush(); { AsyncCallback cb3 = new AsyncCallback(); WrongOperationPrx thrower4 = WrongOperationPrxHelper.uncheckedCast(thrower); thrower4.begin_noSuchOperation().whenCompleted(cb3.response, cb3.exception_noSuchOperation); cb3.check(); } Console.WriteLine("ok"); Console.Write("catching unknown local exception with new AMI mapping... "); Console.Out.Flush(); { AsyncCallback cb3 = new AsyncCallback(); thrower.begin_throwLocalException().whenCompleted(cb3.response, cb3.exception_LocalException); cb3.check(); } Console.WriteLine("ok"); Console.Write("catching unknown non-Ice exception with new AMI mapping... "); Console.Out.Flush(); { AsyncCallback cb3 = new AsyncCallback(); thrower.begin_throwNonIceException().whenCompleted(cb3.response, cb3.exception_NonIceException); cb3.check(); } Console.WriteLine("ok"); } return thrower; }
public static void allTests(Ice.Communicator communicator) #endif { ServerManagerPrx manager = ServerManagerPrxHelper.checkedCast( communicator.stringToProxy("ServerManager :default -p 12010")); test(manager != null); TestLocatorPrx locator = TestLocatorPrxHelper.uncheckedCast(communicator.getDefaultLocator()); test(locator != null); TestLocatorRegistryPrx registry = TestLocatorRegistryPrxHelper.checkedCast(locator.getRegistry()); test(registry != null); Write("testing stringToProxy... "); Flush(); Ice.ObjectPrx @base = communicator.stringToProxy("test @ TestAdapter"); Ice.ObjectPrx base2 = communicator.stringToProxy("test @ TestAdapter"); Ice.ObjectPrx base3 = communicator.stringToProxy("test"); Ice.ObjectPrx base4 = communicator.stringToProxy("ServerManager"); Ice.ObjectPrx base5 = communicator.stringToProxy("test2"); Ice.ObjectPrx base6 = communicator.stringToProxy("test @ ReplicatedAdapter"); WriteLine("ok"); Write("testing ice_locator and ice_getLocator... "); test(Ice.Util.proxyIdentityCompare(@base.ice_getLocator(), communicator.getDefaultLocator()) == 0); Ice.LocatorPrx anotherLocator = Ice.LocatorPrxHelper.uncheckedCast(communicator.stringToProxy("anotherLocator")); @base = @base.ice_locator(anotherLocator); test(Ice.Util.proxyIdentityCompare(@base.ice_getLocator(), anotherLocator) == 0); communicator.setDefaultLocator(null); @base = communicator.stringToProxy("test @ TestAdapter"); test(@base.ice_getLocator() == null); @base = @base.ice_locator(anotherLocator); test(Ice.Util.proxyIdentityCompare(@base.ice_getLocator(), anotherLocator) == 0); communicator.setDefaultLocator(locator); @base = communicator.stringToProxy("test @ TestAdapter"); test(Ice.Util.proxyIdentityCompare(@base.ice_getLocator(), communicator.getDefaultLocator()) == 0); // // We also test ice_router/ice_getRouter (perhaps we should add a // test/Ice/router test?) // test(@base.ice_getRouter() == null); Ice.RouterPrx anotherRouter = Ice.RouterPrxHelper.uncheckedCast(communicator.stringToProxy("anotherRouter")); @base = @base.ice_router(anotherRouter); test(Ice.Util.proxyIdentityCompare(@base.ice_getRouter(), anotherRouter) == 0); Ice.RouterPrx router = Ice.RouterPrxHelper.uncheckedCast(communicator.stringToProxy("dummyrouter")); communicator.setDefaultRouter(router); @base = communicator.stringToProxy("test @ TestAdapter"); test(Ice.Util.proxyIdentityCompare(@base.ice_getRouter(), communicator.getDefaultRouter()) == 0); communicator.setDefaultRouter(null); @base = communicator.stringToProxy("test @ TestAdapter"); test(@base.ice_getRouter() == null); WriteLine("ok"); Write("starting server... "); Flush(); manager.startServer(); WriteLine("ok"); Write("testing checked cast... "); Flush(); TestIntfPrx obj = TestIntfPrxHelper.checkedCast(@base); test(obj != null); TestIntfPrx obj2 = TestIntfPrxHelper.checkedCast(base2); test(obj2 != null); TestIntfPrx obj3 = TestIntfPrxHelper.checkedCast(base3); test(obj3 != null); ServerManagerPrx obj4 = ServerManagerPrxHelper.checkedCast(base4); test(obj4 != null); TestIntfPrx obj5 = TestIntfPrxHelper.checkedCast(base5); test(obj5 != null); TestIntfPrx obj6 = TestIntfPrxHelper.checkedCast(base6); test(obj6 != null); WriteLine("ok"); Write("testing id@AdapterId indirect proxy... "); Flush(); obj.shutdown(); manager.startServer(); try { obj2.ice_ping(); } catch(Ice.LocalException) { test(false); } WriteLine("ok"); Write("testing id@ReplicaGroupId indirect proxy... "); Flush(); obj.shutdown(); manager.startServer(); try { obj6.ice_ping(); } catch(Ice.LocalException) { test(false); } WriteLine("ok"); Write("testing identity indirect proxy... "); Flush(); obj.shutdown(); manager.startServer(); try { obj3.ice_ping(); } catch(Ice.LocalException) { test(false); } try { obj2.ice_ping(); } catch(Ice.LocalException) { test(false); } obj.shutdown(); manager.startServer(); try { obj2.ice_ping(); } catch(Ice.LocalException) { test(false); } try { obj3.ice_ping(); } catch(Ice.LocalException) { test(false); } obj.shutdown(); manager.startServer(); try { obj2.ice_ping(); } catch(Ice.LocalException) { test(false); } obj.shutdown(); manager.startServer(); try { obj3.ice_ping(); } catch(Ice.LocalException) { test(false); } obj.shutdown(); manager.startServer(); try { obj5 = TestIntfPrxHelper.checkedCast(base5); obj5.ice_ping(); } catch(Ice.LocalException) { test(false); } WriteLine("ok"); Write("testing proxy with unknown identity... "); Flush(); try { @base = communicator.stringToProxy("unknown/unknown"); @base.ice_ping(); test(false); } catch(Ice.NotRegisteredException ex) { test(ex.kindOfObject.Equals("object")); test(ex.id.Equals("unknown/unknown")); } WriteLine("ok"); Write("testing proxy with unknown adapter... "); Flush(); try { @base = communicator.stringToProxy("test @ TestAdapterUnknown"); @base.ice_ping(); test(false); } catch(Ice.NotRegisteredException ex) { test(ex.kindOfObject.Equals("object adapter")); test(ex.id.Equals("TestAdapterUnknown")); } WriteLine("ok"); Write("testing locator cache timeout... "); Flush(); int count = locator.getRequestCount(); communicator.stringToProxy("test@TestAdapter").ice_locatorCacheTimeout(0).ice_ping(); // No locator cache. test(++count == locator.getRequestCount()); communicator.stringToProxy("test@TestAdapter").ice_locatorCacheTimeout(0).ice_ping(); // No locator cache. test(++count == locator.getRequestCount()); communicator.stringToProxy("test@TestAdapter").ice_locatorCacheTimeout(1).ice_ping(); // 1s timeout. test(count == locator.getRequestCount()); System.Threading.Thread.Sleep(1200); // 1200ms communicator.stringToProxy("test@TestAdapter").ice_locatorCacheTimeout(1).ice_ping(); // 1s timeout. test(++count == locator.getRequestCount()); communicator.stringToProxy("test").ice_locatorCacheTimeout(0).ice_ping(); // No locator cache. count += 2; test(count == locator.getRequestCount()); communicator.stringToProxy("test").ice_locatorCacheTimeout(1).ice_ping(); // 1s timeout test(count == locator.getRequestCount()); System.Threading.Thread.Sleep(1200); // 1200ms communicator.stringToProxy("test").ice_locatorCacheTimeout(1).ice_ping(); // 1s timeout count += 2; test(count == locator.getRequestCount()); communicator.stringToProxy("test@TestAdapter").ice_locatorCacheTimeout(-1).ice_ping(); test(count == locator.getRequestCount()); communicator.stringToProxy("test").ice_locatorCacheTimeout(-1).ice_ping(); test(count == locator.getRequestCount()); communicator.stringToProxy("test@TestAdapter").ice_ping(); test(count == locator.getRequestCount()); communicator.stringToProxy("test").ice_ping(); test(count == locator.getRequestCount()); test(communicator.stringToProxy("test").ice_locatorCacheTimeout(99).ice_getLocatorCacheTimeout() == 99); WriteLine("ok"); Write("testing proxy from server... "); Flush(); obj = TestIntfPrxHelper.checkedCast(communicator.stringToProxy("test@TestAdapter")); HelloPrx hello = obj.getHello(); test(hello.ice_getAdapterId().Equals("TestAdapter")); hello.sayHello(); hello = obj.getReplicatedHello(); test(hello.ice_getAdapterId().Equals("ReplicatedAdapter")); hello.sayHello(); WriteLine("ok"); Write("testing locator request queuing... "); Flush(); hello = (HelloPrx)obj.getReplicatedHello().ice_locatorCacheTimeout(0).ice_connectionCached(false); count = locator.getRequestCount(); hello.ice_ping(); test(++count == locator.getRequestCount()); List<Ice.AsyncResult<Test.Callback_Hello_sayHello> > results = new List<Ice.AsyncResult<Test.Callback_Hello_sayHello> >(); for(int i = 0; i < 1000; i++) { Ice.AsyncResult<Test.Callback_Hello_sayHello> result = hello.begin_sayHello(). whenCompleted( () => { }, (Ice.Exception ex) => { test(false); }); results.Add(result); } foreach(Ice.AsyncResult<Test.Callback_Hello_sayHello> result in results) { result.waitForCompleted(); } results.Clear(); test(locator.getRequestCount() > count && locator.getRequestCount() < count + 999); if(locator.getRequestCount() > count + 800) { Write("queuing = " + (locator.getRequestCount() - count)); } count = locator.getRequestCount(); hello = (HelloPrx)hello.ice_adapterId("unknown"); for(int i = 0; i < 1000; i++) { Ice.AsyncResult<Test.Callback_Hello_sayHello> result = hello.begin_sayHello(). whenCompleted( () => { test(false); }, (Ice.Exception ex) => { test(ex is Ice.NotRegisteredException); }); results.Add(result); } foreach(Ice.AsyncResult<Test.Callback_Hello_sayHello> result in results) { result.waitForCompleted(); } results.Clear(); // XXX: // Take into account the retries. test(locator.getRequestCount() > count && locator.getRequestCount() < count + 1999); if(locator.getRequestCount() > count + 800) { Write("queuing = " + (locator.getRequestCount() - count)); } WriteLine("ok"); Write("testing adapter locator cache... "); Flush(); try { communicator.stringToProxy("test@TestAdapter3").ice_ping(); test(false); } catch(Ice.NotRegisteredException ex) { test(ex.kindOfObject == "object adapter"); test(ex.id.Equals("TestAdapter3")); } registry.setAdapterDirectProxy("TestAdapter3", locator.findAdapterById("TestAdapter")); try { communicator.stringToProxy("test@TestAdapter3").ice_ping(); registry.setAdapterDirectProxy("TestAdapter3", communicator.stringToProxy("dummy:tcp")); communicator.stringToProxy("test@TestAdapter3").ice_ping(); } catch(Ice.LocalException) { test(false); } try { communicator.stringToProxy("test@TestAdapter3").ice_locatorCacheTimeout(0).ice_ping(); test(false); } catch(Ice.LocalException) { } try { communicator.stringToProxy("test@TestAdapter3").ice_ping(); test(false); } catch(Ice.LocalException) { } registry.setAdapterDirectProxy("TestAdapter3", locator.findAdapterById("TestAdapter")); try { communicator.stringToProxy("test@TestAdapter3").ice_ping(); } catch(Ice.LocalException) { test(false); } WriteLine("ok"); Write("testing well-known object locator cache... "); Flush(); registry.addObject(communicator.stringToProxy("test3@TestUnknown")); try { communicator.stringToProxy("test3").ice_ping(); test(false); } catch(Ice.NotRegisteredException ex) { test(ex.kindOfObject == "object adapter"); test(ex.id.Equals("TestUnknown")); } registry.addObject(communicator.stringToProxy("test3@TestAdapter4")); // Update registry.setAdapterDirectProxy("TestAdapter4", communicator.stringToProxy("dummy:tcp")); try { communicator.stringToProxy("test3").ice_ping(); test(false); } catch(Ice.LocalException) { } registry.setAdapterDirectProxy("TestAdapter4", locator.findAdapterById("TestAdapter")); try { communicator.stringToProxy("test3").ice_ping(); } catch(Ice.LocalException) { test(false); } registry.setAdapterDirectProxy("TestAdapter4", communicator.stringToProxy("dummy:tcp")); try { communicator.stringToProxy("test3").ice_ping(); } catch(Ice.LocalException) { test(false); } try { communicator.stringToProxy("test@TestAdapter4").ice_locatorCacheTimeout(0).ice_ping(); test(false); } catch(Ice.LocalException) { } try { communicator.stringToProxy("test@TestAdapter4").ice_ping(); test(false); } catch(Ice.LocalException) { } try { communicator.stringToProxy("test3").ice_ping(); test(false); } catch(Ice.LocalException) { } registry.addObject(communicator.stringToProxy("test3@TestAdapter")); try { communicator.stringToProxy("test3").ice_ping(); } catch(Ice.LocalException) { test(false); } registry.addObject(communicator.stringToProxy("test4")); try { communicator.stringToProxy("test4").ice_ping(); test(false); } catch(Ice.NoEndpointException) { } WriteLine("ok"); Write("testing locator cache background updates... "); Flush(); { Ice.InitializationData initData = new Ice.InitializationData(); initData.properties = communicator.getProperties().ice_clone_(); initData.properties.setProperty("Ice.BackgroundLocatorCacheUpdates", "1"); Ice.Communicator ic = Ice.Util.initialize(initData); registry.setAdapterDirectProxy("TestAdapter5", locator.findAdapterById("TestAdapter")); registry.addObject(communicator.stringToProxy("test3@TestAdapter")); count = locator.getRequestCount(); ic.stringToProxy("test@TestAdapter5").ice_locatorCacheTimeout(0).ice_ping(); // No locator cache. ic.stringToProxy("test3").ice_locatorCacheTimeout(0).ice_ping(); // No locator cache. count += 3; test(count == locator.getRequestCount()); registry.setAdapterDirectProxy("TestAdapter5", null); registry.addObject(communicator.stringToProxy("test3:tcp")); ic.stringToProxy("test@TestAdapter5").ice_locatorCacheTimeout(10).ice_ping(); // 10s timeout. ic.stringToProxy("test3").ice_locatorCacheTimeout(10).ice_ping(); // 10s timeout. test(count == locator.getRequestCount()); System.Threading.Thread.Sleep(1200); // The following request should trigger the background // updates but still use the cached endpoints and // therefore succeed. ic.stringToProxy("test@TestAdapter5").ice_locatorCacheTimeout(1).ice_ping(); // 1s timeout. ic.stringToProxy("test3").ice_locatorCacheTimeout(1).ice_ping(); // 1s timeout. try { while(true) { ic.stringToProxy("test@TestAdapter5").ice_locatorCacheTimeout(1).ice_ping(); // 1s timeout. System.Threading.Thread.Sleep(10); } } catch(Ice.LocalException) { // Expected to fail once they endpoints have been updated in the background. } try { while(true) { ic.stringToProxy("test3").ice_locatorCacheTimeout(1).ice_ping(); // 1s timeout. System.Threading.Thread.Sleep(10); } } catch(Ice.LocalException) { // Expected to fail once they endpoints have been updated in the background. } ic.destroy(); } WriteLine("ok"); Write("testing proxy from server after shutdown... "); Flush(); hello = obj.getReplicatedHello(); obj.shutdown(); manager.startServer(); hello.sayHello(); WriteLine("ok"); Write("testing object migration... "); Flush(); hello = HelloPrxHelper.checkedCast(communicator.stringToProxy("hello")); obj.migrateHello(); hello.ice_getConnection().close(false); hello.sayHello(); obj.migrateHello(); hello.sayHello(); obj.migrateHello(); hello.sayHello(); WriteLine("ok"); Write("testing locator encoding resolution... "); Flush(); hello = HelloPrxHelper.checkedCast(communicator.stringToProxy("hello")); count = locator.getRequestCount(); communicator.stringToProxy("test@TestAdapter").ice_encodingVersion(Ice.Util.Encoding_1_1).ice_ping(); test(count == locator.getRequestCount()); communicator.stringToProxy("test@TestAdapter10").ice_encodingVersion(Ice.Util.Encoding_1_0).ice_ping(); test(++count == locator.getRequestCount()); communicator.stringToProxy("test -e 1.0@TestAdapter10-2").ice_ping(); test(++count == locator.getRequestCount()); WriteLine("ok"); Write("shutdown server... "); Flush(); obj.shutdown(); WriteLine("ok"); Write("testing whether server is gone... "); Flush(); try { obj2.ice_ping(); test(false); } catch(Ice.LocalException) { } try { obj3.ice_ping(); test(false); } catch(Ice.LocalException) { } try { obj5.ice_ping(); test(false); } catch(Ice.LocalException) { } WriteLine("ok"); #if !SILVERLIGHT Write("testing indirect proxies to collocated objects... "); Flush(); // // Set up test for calling a collocated object through an // indirect, adapterless reference. // Ice.Properties properties = communicator.getProperties(); properties.setProperty("Ice.PrintAdapterReady", "0"); Ice.ObjectAdapter adapter = communicator.createObjectAdapterWithEndpoints("Hello", "default"); adapter.setLocator(locator); Ice.Identity id = new Ice.Identity(); id.name = Guid.NewGuid().ToString(); registry.addObject(adapter.add(new HelloI(), id)); adapter.activate(); HelloPrx helloPrx = HelloPrxHelper.checkedCast( communicator.stringToProxy("\"" + communicator.identityToString(id) + "\"")); test(helloPrx.ice_getConnection() == null); adapter.deactivate(); WriteLine("ok"); Write("shutdown server manager... "); Flush(); manager.shutdown(); WriteLine("ok"); #else manager.shutdown(); #endif }
public static ThrowerPrx allTests(Ice.Communicator communicator) #endif { #if SILVERLIGHT WriteLine("Ice.FactoryAssemblies: " + communicator.getProperties().getProperty("Ice.FactoryAssemblies")); #endif #if !SILVERLIGHT { Write("testing object adapter registration exceptions... "); Ice.ObjectAdapter first; try { first = communicator.createObjectAdapter("TestAdapter0"); } catch(Ice.InitializationException) { // Expected } communicator.getProperties().setProperty("TestAdapter0.Endpoints", "default"); first = communicator.createObjectAdapter("TestAdapter0"); try { communicator.createObjectAdapter("TestAdapter0"); test(false); } catch(Ice.AlreadyRegisteredException) { // Expected. } try { Ice.ObjectAdapter second = communicator.createObjectAdapterWithEndpoints("TestAdapter0", "ssl -h foo -p 12011"); test(false); // // Quell mono error that variable second isn't used. // second.deactivate(); } catch(Ice.AlreadyRegisteredException) { // Expected } first.deactivate(); WriteLine("ok"); } { Write("testing servant registration exceptions... "); communicator.getProperties().setProperty("TestAdapter1.Endpoints", "default"); Ice.ObjectAdapter adapter = communicator.createObjectAdapter("TestAdapter1"); Ice.Object obj = new EmptyI(); adapter.add(obj, communicator.stringToIdentity("x")); try { adapter.add(obj, communicator.stringToIdentity("x")); test(false); } catch(Ice.AlreadyRegisteredException) { } try { adapter.add(obj, communicator.stringToIdentity("")); test(false); } catch(Ice.IllegalIdentityException e) { test(e.id.name.Equals("")); } try { adapter.add(null, communicator.stringToIdentity("x")); test(false); } catch(Ice.IllegalServantException) { } adapter.remove(communicator.stringToIdentity("x")); try { adapter.remove(communicator.stringToIdentity("x")); test(false); } catch(Ice.NotRegisteredException) { } adapter.deactivate(); WriteLine("ok"); } { Write("testing servant locator registration exceptions... "); communicator.getProperties().setProperty("TestAdapter2.Endpoints", "default"); Ice.ObjectAdapter adapter = communicator.createObjectAdapter("TestAdapter2"); Ice.ServantLocator loc = new ServantLocatorI(); adapter.addServantLocator(loc, "x"); try { adapter.addServantLocator(loc, "x"); test(false); } catch(Ice.AlreadyRegisteredException) { } adapter.deactivate(); WriteLine("ok"); } #endif { Write("testing object factory registration exception... "); Ice.ObjectFactory of = new ObjectFactoryI(); communicator.addObjectFactory(of, "::x"); try { communicator.addObjectFactory(of, "::x"); test(false); } catch(Ice.AlreadyRegisteredException) { } WriteLine("ok"); } Write("testing stringToProxy... "); Flush(); String @ref = "thrower:default -p 12010"; Ice.ObjectPrx @base = communicator.stringToProxy(@ref); test(@base != null); WriteLine("ok"); Write("testing checked cast... "); Flush(); ThrowerPrx thrower = ThrowerPrxHelper.checkedCast(@base); test(thrower != null); test(thrower.Equals(@base)); WriteLine("ok"); Write("catching exact types... "); Flush(); try { thrower.throwAasA(1); test(false); } catch(A ex) { test(ex.aMem == 1); } catch(Exception) { test(false); } try { thrower.throwAorDasAorD(1); test(false); } catch(A ex) { test(ex.aMem == 1); } catch(Exception) { test(false); } try { thrower.throwAorDasAorD(- 1); test(false); } catch(D ex) { test(ex.dMem == - 1); } catch(Exception) { test(false); } try { thrower.throwBasB(1, 2); test(false); } catch(B ex) { test(ex.aMem == 1); test(ex.bMem == 2); } catch(Exception) { test(false); } try { thrower.throwCasC(1, 2, 3); test(false); } catch(C ex) { test(ex.aMem == 1); test(ex.bMem == 2); test(ex.cMem == 3); } catch(Exception) { test(false); } WriteLine("ok"); Write("catching base types... "); Flush(); try { thrower.throwBasB(1, 2); test(false); } catch(A ex) { test(ex.aMem == 1); } catch(Exception) { test(false); } try { thrower.throwCasC(1, 2, 3); test(false); } catch(B ex) { test(ex.aMem == 1); test(ex.bMem == 2); } catch(Exception) { test(false); } WriteLine("ok"); Write("catching derived types... "); Flush(); try { thrower.throwBasA(1, 2); test(false); } catch(B ex) { test(ex.aMem == 1); test(ex.bMem == 2); } catch(Exception) { test(false); } try { thrower.throwCasA(1, 2, 3); test(false); } catch(C ex) { test(ex.aMem == 1); test(ex.bMem == 2); test(ex.cMem == 3); } catch(Exception) { test(false); } try { thrower.throwCasB(1, 2, 3); test(false); } catch(C ex) { test(ex.aMem == 1); test(ex.bMem == 2); test(ex.cMem == 3); } catch(Exception) { test(false); } WriteLine("ok"); if(thrower.supportsUndeclaredExceptions()) { Write("catching unknown user exception... "); Flush(); try { thrower.throwUndeclaredA(1); test(false); } catch(Ice.UnknownUserException) { } catch(Exception) { test(false); } try { thrower.throwUndeclaredB(1, 2); test(false); } catch(Ice.UnknownUserException) { } catch(Exception) { test(false); } try { thrower.throwUndeclaredC(1, 2, 3); test(false); } catch(Ice.UnknownUserException) { } catch(Exception) { test(false); } WriteLine("ok"); } if(thrower.ice_getConnection() != null) { Write("testing memory limit marshal exception..."); Flush(); try { thrower.throwMemoryLimitException(null); test(false); } catch(Ice.MemoryLimitException) { } catch(Exception) { test(false); } try { thrower.throwMemoryLimitException(new byte[20 * 1024]); // 20KB test(false); } catch(Ice.ConnectionLostException) { } catch(Exception) { test(false); } ThrowerPrx thrower2 = ThrowerPrxHelper.uncheckedCast( communicator.stringToProxy("thrower:default -p 12011")); try { thrower2.throwMemoryLimitException(new byte[2 * 1024 * 1024]); // 2MB (no limits) } catch(Ice.MemoryLimitException) { } ThrowerPrx thrower3 = ThrowerPrxHelper.uncheckedCast( communicator.stringToProxy("thrower:default -p 12012")); try { thrower3.throwMemoryLimitException(new byte[1024]); // 1KB limit test(false); } catch(Ice.ConnectionLostException) { } WriteLine("ok"); } Write("catching object not exist exception... "); Flush(); { Ice.Identity id = communicator.stringToIdentity("does not exist"); try { ThrowerPrx thrower2 = ThrowerPrxHelper.uncheckedCast(thrower.ice_identity(id)); thrower2.ice_ping(); test(false); } catch(Ice.ObjectNotExistException ex) { test(ex.id.Equals(id)); } catch(Exception) { test(false); } } WriteLine("ok"); Write("catching facet not exist exception... "); Flush(); try { ThrowerPrx thrower2 = ThrowerPrxHelper.uncheckedCast(thrower, "no such facet"); try { thrower2.ice_ping(); test(false); } catch(Ice.FacetNotExistException ex) { test(ex.facet.Equals("no such facet")); } } catch(Exception) { test(false); } WriteLine("ok"); Write("catching operation not exist exception... "); Flush(); try { WrongOperationPrx thrower2 = WrongOperationPrxHelper.uncheckedCast(thrower); thrower2.noSuchOperation(); test(false); } catch(Ice.OperationNotExistException ex) { test(ex.operation.Equals("noSuchOperation")); } catch(Exception) { test(false); } WriteLine("ok"); Write("catching unknown local exception... "); Flush(); try { thrower.throwLocalException(); test(false); } catch(Ice.UnknownLocalException) { } catch(Exception) { test(false); } try { thrower.throwLocalExceptionIdempotent(); test(false); } catch(Ice.UnknownLocalException) { } catch(Ice.OperationNotExistException) { } catch(Exception) { test(false); } WriteLine("ok"); Write("catching unknown non-Ice exception... "); Flush(); try { thrower.throwNonIceException(); test(false); } catch(Ice.UnknownException) { } catch(System.Exception) { test(false); } WriteLine("ok"); Write("testing asynchronous exceptions... "); Flush(); try { thrower.throwAfterResponse(); } catch(Exception) { test(false); } try { thrower.throwAfterException(); test(false); } catch(A) { } catch(Exception) { test(false); } WriteLine("ok"); Write("catching exact types with AMI mapping... "); Flush(); { Callback cb = new Callback(); thrower.begin_throwAasA(1).whenCompleted( () => { test(false); }, (Ice.Exception exc) => { test(exc is A); A ex = exc as A; test(ex.aMem == 1); cb.called(); }); cb.check(); } { Callback cb = new Callback(); thrower.begin_throwAorDasAorD(1).whenCompleted( () => { test(false); }, (Ice.Exception exc) => { try { throw exc; } catch(A ex) { test(ex.aMem == 1); } catch(D ex) { test(ex.dMem == -1); } catch(Exception) { test(false); } cb.called(); }); cb.check(); } { Callback cb = new Callback(); thrower.begin_throwAorDasAorD(-1).whenCompleted( () => { test(false); }, (Ice.Exception exc) => { try { throw exc; } catch(A ex) { test(ex.aMem == 1); } catch(D ex) { test(ex.dMem == -1); } catch(Exception) { test(false); } cb.called(); }); cb.check(); } { Callback cb = new Callback(); thrower.begin_throwBasB(1, 2).whenCompleted( () => { test(false); }, (Ice.Exception exc) => { try { throw exc; } catch(B ex) { test(ex.aMem == 1); test(ex.bMem == 2); } catch(Exception) { test(false); } cb.called(); }); cb.check(); } { Callback cb = new Callback(); thrower.begin_throwCasC(1, 2, 3).whenCompleted( () => { test(false); }, (Ice.Exception exc) => { try { throw exc; } catch(C ex) { test(ex.aMem == 1); test(ex.bMem == 2); test(ex.cMem == 3); } catch(Exception) { test(false); } cb.called(); }); cb.check(); } WriteLine("ok"); Write("catching derived types with new AMI mapping... "); Flush(); { Callback cb = new Callback(); thrower.begin_throwBasA(1, 2).whenCompleted( () => { test(false); }, (Ice.Exception exc) => { try { throw exc; } catch(B ex) { test(ex.aMem == 1); test(ex.bMem == 2); } catch(Exception) { test(false); } cb.called(); }); cb.check(); } { Callback cb = new Callback(); thrower.begin_throwCasA(1, 2, 3).whenCompleted( () => { test(false); }, (Ice.Exception exc) => { try { throw exc; } catch(C ex) { test(ex.aMem == 1); test(ex.bMem == 2); test(ex.cMem == 3); } catch(Exception) { test(false); } cb.called(); }); cb.check(); } { Callback cb = new Callback(); thrower.begin_throwCasB(1, 2, 3).whenCompleted( () => { test(false); }, (Ice.Exception exc) => { try { throw exc; } catch(C ex) { test(ex.aMem == 1); test(ex.bMem == 2); test(ex.cMem == 3); } catch(Exception) { test(false); } cb.called(); }); cb.check(); } WriteLine("ok"); if(thrower.supportsUndeclaredExceptions()) { Write("catching unknown user exception with new AMI mapping... "); Flush(); { Callback cb = new Callback(); thrower.begin_throwUndeclaredA(1).whenCompleted( () => { test(false); }, (Ice.Exception exc) => { try { throw exc; } catch(Ice.UnknownUserException) { } catch(Exception) { test(false); } cb.called(); }); cb.check(); } { Callback cb = new Callback(); thrower.begin_throwUndeclaredB(1, 2).whenCompleted( () => { test(false); }, (Ice.Exception exc) => { try { throw exc; } catch(Ice.UnknownUserException) { } catch(Exception) { test(false); } cb.called(); }); cb.check(); } { Callback cb = new Callback(); thrower.begin_throwUndeclaredC(1, 2, 3).whenCompleted( () => { test(false); }, (Ice.Exception exc) => { try { throw exc; } catch(Ice.UnknownUserException) { } catch(Exception) { test(false); } cb.called(); }); cb.check(); } WriteLine("ok"); } Write("catching object not exist exception with new AMI mapping... "); Flush(); { Ice.Identity id = communicator.stringToIdentity("does not exist"); ThrowerPrx thrower2 = ThrowerPrxHelper.uncheckedCast(thrower.ice_identity(id)); Callback cb = new Callback(); thrower2.begin_throwAasA(1).whenCompleted( () => { test(false); }, (Ice.Exception exc) => { try { throw exc; } catch(Ice.ObjectNotExistException ex) { test(ex.id.Equals(id)); } catch(Exception) { test(false); } cb.called(); }); cb.check(); } WriteLine("ok"); Write("catching facet not exist exception with new AMI mapping... "); Flush(); { ThrowerPrx thrower2 = ThrowerPrxHelper.uncheckedCast(thrower, "no such facet"); Callback cb = new Callback(); thrower2.begin_throwAasA(1).whenCompleted( () => { test(false); }, (Ice.Exception exc) => { try { throw exc; } catch(Ice.FacetNotExistException ex) { test(ex.facet.Equals("no such facet")); } catch(Exception) { test(false); } cb.called(); }); cb.check(); } WriteLine("ok"); Write("catching operation not exist exception with new AMI mapping... "); Flush(); { Callback cb = new Callback(); WrongOperationPrx thrower4 = WrongOperationPrxHelper.uncheckedCast(thrower); thrower4.begin_noSuchOperation().whenCompleted( () => { test(false); }, (Ice.Exception exc) => { try { throw exc; } catch(Ice.OperationNotExistException ex) { test(ex.operation.Equals("noSuchOperation")); } catch(Exception) { test(false); } cb.called(); }); cb.check(); } WriteLine("ok"); Write("catching unknown local exception with new AMI mapping... "); Flush(); { Callback cb = new Callback(); thrower.begin_throwLocalException().whenCompleted( () => { test(false); }, (Ice.Exception exc) => { try { throw exc; } catch(Ice.UnknownLocalException) { } catch(Ice.OperationNotExistException) { } catch(Exception) { test(false); } cb.called(); }); cb.check(); } { Callback cb = new Callback(); thrower.begin_throwLocalExceptionIdempotent().whenCompleted( () => { test(false); }, (Ice.Exception exc) => { try { throw exc; } catch(Ice.UnknownLocalException) { } catch(Ice.OperationNotExistException) { } catch(Exception) { test(false); } cb.called(); }); cb.check(); } WriteLine("ok"); Write("catching unknown non-Ice exception with new AMI mapping... "); Flush(); { Callback cb = new Callback(); thrower.begin_throwNonIceException().whenCompleted( () => { test(false); }, (Ice.Exception exc) => { try { throw exc; } catch(Ice.UnknownException) { } catch(Exception) { test(false); } cb.called(); }); cb.check(); } WriteLine("ok"); // ---------------------------------------- if(thrower.supportsUndeclaredExceptions()) { Write("catching unknown user exception with new AMI mapping... "); Flush(); { Callback cb = new Callback(); thrower.begin_throwUndeclaredA(1).whenCompleted( () => { test(false); }, (Ice.Exception exc) => { try { throw exc; } catch(Ice.UnknownUserException) { } catch(Exception) { test(false); } cb.called(); }); cb.check(); } { Callback cb = new Callback(); thrower.begin_throwUndeclaredB(1, 2).whenCompleted( () => { test(false); }, (Ice.Exception exc) => { try { throw exc; } catch(Ice.UnknownUserException) { } catch(Exception) { test(false); } cb.called(); }); cb.check(); } { Callback cb = new Callback(); thrower.begin_throwUndeclaredC(1, 2, 3).whenCompleted( () => { test(false); }, (Ice.Exception exc) => { try { throw exc; } catch(Ice.UnknownUserException) { } catch(Exception) { test(false); } cb.called(); }); cb.check(); } WriteLine("ok"); } Write("catching object not exist exception with new AMI mapping... "); Flush(); { Ice.Identity id = communicator.stringToIdentity("does not exist"); ThrowerPrx thrower2 = ThrowerPrxHelper.uncheckedCast(thrower.ice_identity(id)); Callback cb = new Callback(); thrower2.begin_throwAasA(1).whenCompleted( () => { test(false); }, (Ice.Exception exc) => { try { throw exc; } catch(Ice.ObjectNotExistException ex) { test(ex.id.Equals(id)); } catch(Exception) { test(false); } cb.called(); }); cb.check(); } WriteLine("ok"); Write("catching facet not exist exception with new AMI mapping... "); Flush(); { ThrowerPrx thrower2 = ThrowerPrxHelper.uncheckedCast(thrower, "no such facet"); Callback cb = new Callback(); thrower2.begin_throwAasA(1).whenCompleted( () => { test(false); }, (Ice.Exception exc) => { try { throw exc; } catch(Ice.FacetNotExistException ex) { test(ex.facet.Equals("no such facet")); } catch(Exception) { test(false); } cb.called(); }); cb.check(); } WriteLine("ok"); Write("catching operation not exist exception with new AMI mapping... "); Flush(); { Callback cb = new Callback(); WrongOperationPrx thrower4 = WrongOperationPrxHelper.uncheckedCast(thrower); thrower4.begin_noSuchOperation().whenCompleted( () => { test(false); }, (Ice.Exception exc) => { try { throw exc; } catch(Ice.OperationNotExistException ex) { test(ex.operation.Equals("noSuchOperation")); } catch(Exception) { test(false); } cb.called(); }); cb.check(); } WriteLine("ok"); Write("catching unknown local exception with new AMI mapping... "); Flush(); { Callback cb = new Callback(); thrower.begin_throwLocalException().whenCompleted( () => { test(false); }, (Ice.Exception exc) => { try { throw exc; } catch(Ice.UnknownLocalException) { } catch(Ice.OperationNotExistException) { } catch(Exception) { test(false); } cb.called(); }); cb.check(); } { Callback cb = new Callback(); thrower.begin_throwLocalExceptionIdempotent().whenCompleted( () => { test(false); }, (Ice.Exception exc) => { try { throw exc; } catch(Ice.UnknownLocalException) { } catch(Ice.OperationNotExistException) { } catch(Exception) { test(false); } cb.called(); }); cb.check(); } WriteLine("ok"); Write("catching unknown non-Ice exception with new AMI mapping... "); Flush(); { Callback cb = new Callback(); thrower.begin_throwNonIceException().whenCompleted( () => { test(false); }, (Ice.Exception exc) => { try { throw exc; } catch(Ice.UnknownException) { } catch(Exception) { test(false); } cb.called(); }); cb.check(); } WriteLine("ok"); #if SILVERLIGHT thrower.shutdown(); #else return thrower; #endif }
public static TestIntfPrx allTests(Ice.Communicator communicator) #endif { Write("testing stringToProxy... "); Flush(); string @ref = "test:default -p 12010"; Ice.ObjectPrx @base = communicator.stringToProxy(@ref); test(@base != null); WriteLine("ok"); Write("testing checked cast... "); Flush(); TestIntfPrx obj = TestIntfPrxHelper.checkedCast(@base); test(obj != null); test(obj.Equals(@base)); WriteLine("ok"); #if !SILVERLIGHT { Write("creating/destroying/recreating object adapter... "); Flush(); Ice.ObjectAdapter adapter = communicator.createObjectAdapterWithEndpoints("TransientTestAdapter", "default"); try { communicator.createObjectAdapterWithEndpoints("TransientTestAdapter", "default"); test(false); } catch (Ice.AlreadyRegisteredException) { } adapter.destroy(); // // Use a different port than the first adapter to avoid an "address already in use" error. // adapter = communicator.createObjectAdapterWithEndpoints("TransientTestAdapter", "default"); adapter.destroy(); Console.Out.WriteLine("ok"); } #endif Write("creating/activating/deactivating object adapter in one operation... "); Flush(); obj.transient(); WriteLine("ok"); { Write("testing connection closure... "); Flush(); for(int i = 0; i < 10; ++i) { Ice.InitializationData initData = new Ice.InitializationData(); initData.properties = communicator.getProperties().ice_clone_(); Ice.Communicator comm = Ice.Util.initialize(initData); comm.stringToProxy("test:default -p 12010").begin_ice_ping(); comm.destroy(); } WriteLine("ok"); } Write("deactivating object adapter in the server... "); Flush(); obj.deactivate(); WriteLine("ok"); Write("testing whether server is gone... "); Flush(); try { obj.ice_ping(); test(false); } catch(Ice.LocalException) { WriteLine("ok"); } #if !SILVERLIGHT return obj; #endif }