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)); }
[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"); } }
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. }
public void EndpointDispatcherAddTest2() { var uri = CreateAvailableUri("http://localhost:37564"); MyChannelDispatcher d = new MyChannelDispatcher(new MyChannelListener(uri)); d.Endpoints.Add(new EndpointDispatcher(new EndpointAddress(uri), "", "")); d.Open(); // the dispatcher must be attached. }
public void EndpointDispatcherAddTest2() { var uri = new Uri("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. }
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 }
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 }
[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)); }