Esempio n. 1
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            AuthConfig.RegisterAuth();
            HostContainer = new RemoteHostsContainer();
            var lDecoders = DecoderManager.GetAvailableDecoders(aTimeout: 1000);
            Decoder = new DummyDecoder();
            DecoderHub = GlobalHost.ConnectionManager.GetHubContext<DecoderHub>();
            if (lDecoders.Count() > 0)
            {
                var lCandidate = lDecoders.First();
                if (lCandidate.Start())
                {
                    if (Decoder != null)
                    {
                        Decoder.FFTDataReceived -= _OnFFTData;
                        Decoder.TextDataReceived -= _OnTextData;
                        Decoder.PropertyChanged -= _OnDecoderPropertyChanged;
                    }

                    Decoder = lCandidate;
                    if (Decoder != null)
                    {
                        Decoder.FFTDataReceived += _OnFFTData;
                        Decoder.TextDataReceived += _OnTextData;
                        Decoder.PropertyChanged += _OnDecoderPropertyChanged;
                        Decoder.CurrentMode = Decoder.SupportedModes.FirstOrDefault();
                    }
                }
            }
        }
        public void AllSuccess()
        {
            this.mainHandshaker.Setup(x => x.NewRequestData())
            .Returns(new WebSocketExtensionData("main", new Dictionary <string, string>()));
            this.mainHandshaker.Setup(x => x.HandshakeExtension(
                                          It.Is <WebSocketExtensionData>(v => v.Name.Equals("main"))))
            .Returns(this.mainExtension.Object);
            this.mainHandshaker.Setup(x => x.HandshakeExtension(
                                          It.Is <WebSocketExtensionData>(v => v.Name.Equals("fallback"))))
            .Returns(default(IWebSocketClientExtension));
            this.fallbackHandshaker.Setup(x => x.NewRequestData())
            .Returns(new WebSocketExtensionData("fallback", new Dictionary <string, string>()));
            this.fallbackHandshaker.Setup(x => x.HandshakeExtension(
                                              It.Is <WebSocketExtensionData>(v => v.Name.Equals("main"))))
            .Returns(default(IWebSocketClientExtension));
            this.fallbackHandshaker.Setup(x => x.HandshakeExtension(
                                              It.Is <WebSocketExtensionData>(v => v.Name.Equals("fallback"))))
            .Returns(this.fallbackExtension.Object);

            var mainEncoder = new DummyEncoder();
            var mainDecoder = new DummyDecoder();

            this.mainExtension.Setup(x => x.Rsv).Returns(WebSocketRsv.Rsv1);
            this.mainExtension.Setup(x => x.NewExtensionEncoder()).Returns(mainEncoder);
            this.mainExtension.Setup(x => x.NewExtensionDecoder()).Returns(mainDecoder);

            var fallbackEncoder = new Dummy2Encoder();
            var fallbackDecoder = new Dummy2Decoder();

            this.fallbackExtension.Setup(x => x.Rsv).Returns(WebSocketRsv.Rsv2);
            this.fallbackExtension.Setup(x => x.NewExtensionEncoder()).Returns(fallbackEncoder);
            this.fallbackExtension.Setup(x => x.NewExtensionDecoder()).Returns(fallbackDecoder);

            var ch = new EmbeddedChannel(new WebSocketClientExtensionHandler(
                                             this.mainHandshaker.Object, this.fallbackHandshaker.Object));

            IHttpRequest req = NewUpgradeRequest(null);

            ch.WriteOutbound(req);

            var req2 = ch.ReadOutbound <IHttpRequest>();

            Assert.True(req2.Headers.TryGet(HttpHeaderNames.SecWebsocketExtensions, out ICharSequence value));
            List <WebSocketExtensionData> reqExts = WebSocketExtensionUtil.ExtractExtensions(value.ToString());

            IHttpResponse res = NewUpgradeResponse("main, fallback");

            ch.WriteInbound(res);

            var res2 = ch.ReadInbound <IHttpResponse>();

            Assert.True(res2.Headers.TryGet(HttpHeaderNames.SecWebsocketExtensions, out value));
            List <WebSocketExtensionData> resExts = WebSocketExtensionUtil.ExtractExtensions(value.ToString());

            Assert.Equal(2, reqExts.Count);
            Assert.Equal("main", reqExts[0].Name);
            Assert.Equal("fallback", reqExts[1].Name);

            Assert.Equal(2, resExts.Count);
            Assert.Equal("main", resExts[0].Name);
            Assert.Equal("fallback", resExts[1].Name);
            Assert.NotNull(ch.Pipeline.Context(mainEncoder));
            Assert.NotNull(ch.Pipeline.Context(mainDecoder));
            Assert.NotNull(ch.Pipeline.Context(fallbackEncoder));
            Assert.NotNull(ch.Pipeline.Context(fallbackDecoder));

            this.mainExtension.Verify(x => x.Rsv, Times.AtLeastOnce);
            this.fallbackExtension.Verify(x => x.Rsv, Times.AtLeastOnce);
        }