Exemple #1
0
        public void EndpointDispatcherAddTest()
        {
            var uri = CreateAvailableUri("http://localhost:37564");
            MyChannelDispatcher d = new MyChannelDispatcher(new MyChannelListener(uri));

            d.Endpoints.Add(new EndpointDispatcher(new EndpointAddress(uri), "", ""));
        }
Exemple #2
0
        // FIXME: this test itself indeed passes, but some weird conflict that blocks correspoding port happens between this and somewhere (probably above)
//		[Test]
        public void EndpointDispatcherAddTest9()          // test singleton service
        {
            var         uri = CreateAvailableUri("http://localhost:37564");
            ServiceHost h   = new ServiceHost(new TestContract(), uri);

            h.Description.Behaviors.Find <ServiceBehaviorAttribute> ().InstanceContextMode = InstanceContextMode.Single;
            var listener          = new MyChannelListener <IReplyChannel> (uri);
            MyChannelDispatcher d = new MyChannelDispatcher(listener);
            var ed = new EndpointDispatcher(new EndpointAddress(uri), "", "");

            d.Endpoints.Add(ed);
            ed.DispatchRuntime.Type = typeof(TestContract);
            d.MessageVersion        = MessageVersion.Default;
            h.AddServiceEndpoint(typeof(TestContract), new BasicHttpBinding(), uri.ToString());
            h.ChannelDispatchers.Clear();
            Assert.IsNull(ed.DispatchRuntime.SingletonInstanceContext, "#1");
            h.ChannelDispatchers.Add(d);
            Assert.IsNull(ed.DispatchRuntime.SingletonInstanceContext, "#2");
            try {
                h.Open(TimeSpan.FromSeconds(10));
                Assert.IsNull(ed.DispatchRuntime.InstanceProvider, "#4");
                Assert.IsNotNull(ed.DispatchRuntime.InstanceContextProvider, "#5");                  // it was set after ServiceHost.Open().
                Assert.IsNotNull(ed.DispatchRuntime.SingletonInstanceContext, "#6");
            } finally {
                h.Close(TimeSpan.FromSeconds(10));
                h.Abort();
            }
        }
Exemple #3
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.
        }
Exemple #4
0
        public void EndpointDispatcherAddTest7()
        {
            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);

            ed.DispatchRuntime.Type = typeof(TestContract);

            d.MessageVersion = MessageVersion.Default;

            // add service endpoint to open the host (unlike all tests above).
            h.AddServiceEndpoint(typeof(TestContract),
                                 new BasicHttpBinding(), uri.ToString());
            h.ChannelDispatchers.Clear();

            h.ChannelDispatchers.Add(d);
            d.Open();              // At this state, it does *not* call AcceptChannel() yet.

            // This rejects already-opened ChannelDispatcher.
            h.Open(TimeSpan.FromSeconds(10));
            // should not reach here, but in case it didn't, it must be closed.
            h.Close(TimeSpan.FromSeconds(10));
        }
Exemple #5
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");
            }
        }
Exemple #6
0
        public void EndpointDispatcherAddTest()
        {
            var uri = new Uri("http://localhost:" + NetworkHelpers.FindFreePort());
            MyChannelDispatcher d = new MyChannelDispatcher(new MyChannelListener(uri));

            d.Endpoints.Add(new EndpointDispatcher(new EndpointAddress(uri), "", ""));
        }
        public void EndpointDispatcherAddTest2()
        {
            var uri = CreateAvailableUri("http://localhost:" + NetworkHelpers.FindFreePort());
            MyChannelDispatcher d = new MyChannelDispatcher(new MyChannelListener(uri));

            d.Endpoints.Add(new EndpointDispatcher(new EndpointAddress(uri), "", ""));
            d.Open();              // the dispatcher must be attached.
        }
Exemple #8
0
        public void EndpointDispatcherAddTest3()
        {
            var                 uri = CreateAvailableUri("http://localhost:37564");
            ServiceHost         h   = new ServiceHost(typeof(TestContract), uri);
            MyChannelDispatcher d   = new MyChannelDispatcher(new MyChannelListener(uri));

            d.Endpoints.Add(new EndpointDispatcher(new EndpointAddress(uri), "", ""));
            h.ChannelDispatchers.Add(d);
            d.Open();              // missing MessageVersion
        }
Exemple #9
0
        public void EndpointDispatcherAddTest3()
        {
            var                 uri = new Uri("http://localhost:" + NetworkHelpers.FindFreePort());
            ServiceHost         h   = new ServiceHost(typeof(TestContract), uri);
            MyChannelDispatcher d   = new MyChannelDispatcher(new MyChannelListener(uri));

            d.Endpoints.Add(new EndpointDispatcher(new EndpointAddress(uri), "", ""));
            h.ChannelDispatchers.Add(d);
            d.Open();              // missing MessageVersion
        }
Exemple #10
0
        // Validating duplicate listen URI causes this regression.
        // Since it is niche, I rather fixed ServiceHostBase to introduce validation.
        // It is probably because this code doesn't use ServiceEndpoint to build IChannelListener i.e. built without Binding.
        // We can add an extra field to ChannelDispatcher to indicate that it is from ServiceEndpoint (i.e. with Binding),
        // but it makes little sense especially for checking duplicate listen URIs. Duplicate listen URIs should be rejected anyways.
        public void EndpointDispatcherAddTest8()
        {
            var                 uri      = CreateAvailableUri("http://localhost:37564");
            ServiceHost         h        = new ServiceHost(typeof(TestContract), uri);
            var                 listener = new MyChannelListener <IReplyChannel> (uri);
            MyChannelDispatcher d        = new MyChannelDispatcher(listener);
            var                 ed       = new EndpointDispatcher(new EndpointAddress(uri), "", "");

            d.Endpoints.Add(ed);

            ed.DispatchRuntime.Type = typeof(TestContract);

            d.MessageVersion = MessageVersion.Default;

            // add service endpoint to open the host (unlike all tests above).
            h.AddServiceEndpoint(typeof(TestContract),
                                 new BasicHttpBinding(), uri.ToString());
            h.ChannelDispatchers.Clear();

            h.ChannelDispatchers.Add(d);

            Assert.AreEqual(h, d.Host, "#0");

            try
            {
                h.Open(TimeSpan.FromSeconds(10));
                Assert.AreEqual(3, h.ChannelDispatchers.Count, "#0");  // TestContract, d, mex
                Assert.IsTrue(listener.BeginAcceptChannelTried, "#1"); // while it throws NIE ...
                Assert.IsFalse(listener.WaitForChannelTried, "#2");
                Assert.IsNotNull(ed.DispatchRuntime, "#3");
                Assert.IsNull(ed.DispatchRuntime.InstanceProvider, "#4");
                Assert.IsNotNull(ed.DispatchRuntime.InstanceContextProvider, "#5"); // it was set after ServiceHost.Open().
                Assert.IsNull(ed.DispatchRuntime.SingletonInstanceContext, "#6");

                /*
                 * var l = new HttpListener ();
                 * l.Prefixes.Add (uri.ToString ());
                 * l.Start ();
                 * l.Stop ();
                 */
            }
            finally
            {
                h.Close(TimeSpan.FromSeconds(10));
                h.Abort();
            }
        }
Exemple #11
0
        public void Collection_Add_Remove()
        {
            Console.WriteLine("STart test Collection_Add_Remove");
            var         uri = CreateAvailableUri("http://localhost:37564");
            ServiceHost h   = new ServiceHost(typeof(TestContract), uri);

            h.AddServiceEndpoint(typeof(TestContract).FullName, new BasicHttpBinding(), "address");
            MyChannelDispatcher d = new MyChannelDispatcher(new MyChannelListener(uri));

            h.ChannelDispatchers.Add(d);
            Assert.IsTrue(d.Attached, "#1");
            h.ChannelDispatchers.Remove(d);
            Assert.IsFalse(d.Attached, "#2");
            h.ChannelDispatchers.Insert(0, d);
            Assert.IsTrue(d.Attached, "#3");
            h.ChannelDispatchers.Add(new MyChannelDispatcher(new MyChannelListener(uri)));
            h.ChannelDispatchers.Clear();
            Assert.IsFalse(d.Attached, "#4");
        }
Exemple #12
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));
        }