예제 #1
0
파일: AllTests.cs 프로젝트: yuwenyong/ice
        Run(TestHelper helper)
        {
            TextWriter   output       = helper.GetWriter();
            Communicator?communicator = helper.Communicator();

            TestHelper.Assert(communicator != null);
            ObjectAdapter oa = communicator.CreateObjectAdapterWithEndpoints("MyOA", "tcp -h localhost");

            oa.Activate();

            output.Write("testing single category... ");
            output.Flush();

            var servant = new MyObject();

            oa.AddDefaultForCategory("foo", servant);
            try
            {
                oa.AddDefaultForCategory("foo", new MyObject());
                TestHelper.Assert(false); // duplicate registration not allowed
            }
            catch (System.ArgumentException)
            {
                // Expected
            }

            IObject?r = oa.Find("foo");

            TestHelper.Assert(r == null);
            r = oa.Find("foo/someId");
            TestHelper.Assert(r == servant);
            r = oa.Find("bar/someId");
            TestHelper.Assert(r == null);

            var identity = new Identity("", "foo");

            string[] names = new string[] { "foo", "bar", "x", "y", "abcdefg" };

            IMyObjectPrx?prx = null;

            for (int idx = 0; idx < 5; ++idx)
            {
                identity = new Identity(names[idx], identity.Category);
                prx      = oa.CreateProxy(identity, IMyObjectPrx.Factory);
                prx.IcePing();
                TestHelper.Assert(prx.GetName() == names[idx]);
            }

            identity = new Identity("ObjectNotExist", identity.Category);
            prx      = oa.CreateProxy(identity, IMyObjectPrx.Factory);
            try
            {
                prx.IcePing();
                TestHelper.Assert(false);
            }
            catch (ObjectNotExistException)
            {
                // Expected
            }

            try
            {
                prx.GetName();
                TestHelper.Assert(false);
            }
            catch (ObjectNotExistException)
            {
                // Expected
            }

            identity = new Identity(identity.Name, "bar");
            for (int idx = 0; idx < 5; idx++)
            {
                identity = new Identity(names[idx], identity.Category);
                prx      = oa.CreateProxy(identity, Test.IMyObjectPrx.Factory);

                try
                {
                    prx.IcePing();
                    TestHelper.Assert(false);
                }
                catch (Ice.ObjectNotExistException)
                {
                    // Expected
                }

                try
                {
                    prx.GetName();
                    TestHelper.Assert(false);
                }
                catch (Ice.ObjectNotExistException)
                {
                    // Expected
                }
            }

            IObject?removed = oa.RemoveDefaultForCategory("foo");

            TestHelper.Assert(removed == servant);
            removed = oa.RemoveDefaultForCategory("foo");
            TestHelper.Assert(removed == null);
            identity = new Identity(identity.Name, "foo");
            prx      = oa.CreateProxy(identity, IMyObjectPrx.Factory);
            try
            {
                prx.IcePing();
            }
            catch (ObjectNotExistException)
            {
                // Expected
            }

            output.WriteLine("ok");

            output.Write("testing default servant... ");
            output.Flush();

            var defaultServant = new MyObject();

            oa.AddDefault(defaultServant);
            try
            {
                oa.AddDefault(servant);
                TestHelper.Assert(false);
            }
            catch (System.ArgumentException)
            {
                // Expected
            }

            oa.AddDefaultForCategory("", servant); // associated with empty category

            r = oa.Find("bar");
            TestHelper.Assert(r == servant);

            r = oa.Find("x/y");
            TestHelper.Assert(r == defaultServant);

            for (int idx = 0; idx < 5; ++idx)
            {
                identity = new Identity(names[idx], "");
                prx      = oa.CreateProxy(identity, IMyObjectPrx.Factory);
                prx.IcePing();
                TestHelper.Assert(prx.GetName() == names[idx]);
            }

            removed = oa.RemoveDefault();
            TestHelper.Assert(removed == defaultServant);
            removed = oa.RemoveDefault();
            TestHelper.Assert(removed == null);

            output.WriteLine("ok");
        }
예제 #2
0
        public static async Task RunAsync(TestHelper helper)
        {
            TextWriter   output       = helper.Output;
            Communicator?communicator = helper.Communicator;

            TestHelper.Assert(communicator != null);

            ObjectAdapter oa = communicator.CreateObjectAdapterWithEndpoints("MyOA",
                                                                             helper.GetTestEndpoint(ephemeral: true));
            await oa.ActivateAsync();

            output.Write("testing single category... ");
            output.Flush();

            var servant = new MyObject();

            oa.AddDefaultForCategory("foo", servant);
            try
            {
                oa.AddDefaultForCategory("foo", new MyObject());
                TestHelper.Assert(false); // duplicate registration not allowed
            }
            catch (ArgumentException)
            {
                // Expected
            }

            IObject?r = oa.Find("foo");

            TestHelper.Assert(r == null);
            r = oa.Find("foo/someId");
            TestHelper.Assert(r == servant);
            r = oa.Find("bar/someId");
            TestHelper.Assert(r == null);

            var identity = new Identity("", "foo");

            string[] names = new string[] { "foo", "bar", "x", "y", "abcdefg" };

            IMyObjectPrx?prx = null;

            foreach (string name in names)
            {
                identity = new Identity(name, identity.Category);
                prx      = oa.CreateProxy(identity, IMyObjectPrx.Factory);
                prx.IcePing();
                TestHelper.Assert(prx.GetName() == name);
            }

            identity = new Identity("ObjectNotExist", identity.Category);
            prx      = oa.CreateProxy(identity, IMyObjectPrx.Factory);
            try
            {
                prx.IcePing();
                TestHelper.Assert(false);
            }
            catch (ObjectNotExistException)
            {
                // Expected
            }

            try
            {
                prx.GetName();
                TestHelper.Assert(false);
            }
            catch (ObjectNotExistException)
            {
                // Expected
            }

            identity = new Identity(identity.Name, "bar");
            foreach (string name in names)
            {
                identity = new Identity(name, identity.Category);
                prx      = oa.CreateProxy(identity, IMyObjectPrx.Factory);

                try
                {
                    prx.IcePing();
                    TestHelper.Assert(false);
                }
                catch (ObjectNotExistException)
                {
                    // Expected
                }

                try
                {
                    prx.GetName();
                    TestHelper.Assert(false);
                }
                catch (ObjectNotExistException)
                {
                    // Expected
                }
            }

            IObject?removed = oa.RemoveDefaultForCategory("foo");

            TestHelper.Assert(removed == servant);
            removed = oa.RemoveDefaultForCategory("foo");
            TestHelper.Assert(removed == null);
            identity = new Identity(identity.Name, "foo");
            prx      = oa.CreateProxy(identity, IMyObjectPrx.Factory);
            try
            {
                prx.IcePing();
            }
            catch (ObjectNotExistException)
            {
                // Expected
            }

            output.WriteLine("ok");

            output.Write("testing default servant... ");
            output.Flush();

            var defaultServant = new MyObject();

            oa.AddDefault(defaultServant);
            try
            {
                oa.AddDefault(servant);
                TestHelper.Assert(false);
            }
            catch (ArgumentException)
            {
                // Expected
            }

            oa.AddDefaultForCategory("", servant); // associated with empty category

            r = oa.Find("bar");
            TestHelper.Assert(r == servant);

            r = oa.Find("x/y");
            TestHelper.Assert(r == defaultServant);

            foreach (string name in names)
            {
                identity = new Identity(name, "");
                prx      = oa.CreateProxy(identity, IMyObjectPrx.Factory);
                prx.IcePing();
                TestHelper.Assert(prx.GetName() == name);
            }

            removed = oa.RemoveDefault();
            TestHelper.Assert(removed == defaultServant);
            removed = oa.RemoveDefault();
            TestHelper.Assert(removed == null);

            output.WriteLine("ok");
        }