Пример #1
0
        public void EndpointDispatcherAddTest6()
        {
            var                 uri      = CreateAvailableUri("http://localhost:37564");
            ServiceHost         h        = new ServiceHost(typeof(TestContract), uri);
            var                 binding  = new BasicHttpBinding();
            var                 listener = new MyChannelListener <IReplyChannel> (uri);
            MyChannelDispatcher d        = new MyChannelDispatcher(listener);
            var                 ed       = new EndpointDispatcher(new EndpointAddress(uri), "", "");

            d.Endpoints.Add(ed);
            Assert.IsFalse(d.Attached, "#x1");

            ed.DispatchRuntime.Type = typeof(TestContract);

            d.MessageVersion = MessageVersion.Default;
            h.ChannelDispatchers.Add(d);
            Assert.IsTrue(d.Attached, "#x2");
            d.Open();              // At this state, it does *not* call AcceptChannel() yet.
            Assert.IsFalse(listener.AcceptChannelTried, "#1");
            Assert.IsFalse(listener.WaitForChannelTried, "#2");

            Assert.IsNotNull(ed.DispatchRuntime, "#3");
            Assert.IsNull(ed.DispatchRuntime.InstanceProvider, "#4");
            Assert.IsNull(ed.DispatchRuntime.InstanceContextProvider, "#5");              // it is not still set after ChannelDispatcher.Open().
            Assert.IsNull(ed.DispatchRuntime.InstanceProvider, "#5.2");
            Assert.IsNull(ed.DispatchRuntime.SingletonInstanceContext, "#6");

            d.Close();              // we don't have to even close it.
        }
Пример #2
0
        [ExpectedException(typeof(InvalidOperationException))]           // i.e. it is thrown synchronously in current thread.
        public void EndpointDispatcherAddTest4()
        {
            var                 uri      = CreateAvailableUri("http://localhost:37564");
            ServiceHost         h        = new ServiceHost(typeof(TestContract), uri);
            var                 listener = new MyChannelListener(uri);
            MyChannelDispatcher d        = new MyChannelDispatcher(listener);
            var                 ed       = new EndpointDispatcher(new EndpointAddress(uri), "", "");

            Assert.IsNotNull(ed.DispatchRuntime, "#1");
            Assert.IsNull(ed.DispatchRuntime.InstanceProvider, "#2");
            Assert.IsNull(ed.DispatchRuntime.InstanceContextProvider, "#3");
            Assert.IsNull(ed.DispatchRuntime.InstanceProvider, "#3.2");
            Assert.IsNull(ed.DispatchRuntime.SingletonInstanceContext, "#4");
            d.Endpoints.Add(ed);
            d.MessageVersion = MessageVersion.Default;
            h.ChannelDispatchers.Add(d);
            // it misses DispatchRuntime.Type, which seems set
            // automatically when the dispatcher is created in
            // ordinal process but need to be set manually in this case.
            try {
                d.Open();
                try {
                    // should not reach here, but in case it didn't, it must be closed.
                    d.Close(TimeSpan.FromSeconds(10));
                } catch {
                }
            } finally {
                Assert.AreEqual(CommunicationState.Opened, listener.State, "#5");
            }
        }
Пример #3
0
        [ExpectedException(typeof(InvalidOperationException))]           // i.e. it is thrown synchronously in current thread.
        public void EndpointDispatcherAddTest5()
        {
            var                 uri      = CreateAvailableUri("http://localhost:37564");
            ServiceHost         h        = new ServiceHost(typeof(TestContract), uri);
            var                 binding  = new BasicHttpBinding();
            var                 listener = new MyChannelListener(uri);
            MyChannelDispatcher d        = new MyChannelDispatcher(listener);
            var                 ed       = new EndpointDispatcher(new EndpointAddress(uri), "", "");

            d.Endpoints.Add(ed);

            ed.DispatchRuntime.Type = typeof(TestContract);              // different from Test4

            d.MessageVersion = MessageVersion.Default;
            h.ChannelDispatchers.Add(d);
            // It rejects "unrecognized type" of the channel listener.
            // Test6 uses IChannelListener<IReplyChannel> and works.
            d.Open();
            // should not reach here, but in case it didn't, it must be closed.
            d.Close(TimeSpan.FromSeconds(10));
        }