Exemple #1
0
        protected override void InitializeWebServer(IEtpSelfHostedWebServer webServer)
        {
            var webServerHandler = new StoreHandler(TestDataStore);

            InitializeRegistrar(webServer.ServerManager, webServerHandler);
            Handlers.Add(webServerHandler);
        }
Exemple #2
0
        /// <summary>
        /// Initializes common resources.
        /// </summary>
        /// <param name="container">The composition container.</param>
        protected void EtpSetUp(IContainer container)
        {
            _container = container;

            // Clean up any remaining resources
            _client?.Dispose();
            _server?.Dispose();

            // Get next available port number
            var listener = new TcpListener(IPAddress.Loopback, 0);

            listener.Start();
            var port = ((IPEndPoint)listener.LocalEndpoint).Port;

            listener.Stop();

            // Update EtpServerUrl setting
            var uri = new Uri(TestSettings.EtpServerUrl);
            var url = TestSettings.EtpServerUrl.Replace($":{uri.Port}", $":{port}");

            // Create server and client instances
            _server = CreateServer(port);
            _client = InitClient(CreateClient(url));

            // Resolve dependencies early to avoid object disposed
            var streaming = container.Resolve <IChannelStreamingProducer>();
            var discovery = container.Resolve <IDiscoveryStore>();
            var store     = container.Resolve <IStoreStore>();

            // Register server handlers
            _server.Register(() => streaming);
            _server.Register(() => discovery);
            _server.Register(() => store);
        }
Exemple #3
0
        protected override void InitializeWebServer(IEtpSelfHostedWebServer webServer)
        {
            var webServerHandler = new CustomerHandler();

            InitializeRegistrar(webServer.ServerManager, webServerHandler);
            Handlers.Add(webServerHandler);
        }
Exemple #4
0
        /// <summary>
        /// Disposes common resources.
        /// </summary>
        protected void EtpCleanUp()
        {
            _client?.Dispose();
            _server?.Dispose();
            _client = null;
            _server = null;

            TestSettings.Reset();
        }
Exemple #5
0
        /// <summary>
        /// Initializes common resources.
        /// </summary>
        /// <param name="webSocketType">The WebSocket type.</param>
        /// <param name="etpSubProtocol">The ETP websocket sub-protocol</param>
        protected void SetUp(WebSocketType webSocketType, string etpSubProtocol)
        {
            // Clean up any remaining resources
            _client?.Dispose();
            _server?.Dispose();

            // Create server and client instances
            _server = CreateServer(webSocketType);
            _client = CreateClient(webSocketType, etpSubProtocol, _server.Uri.ToWebSocketUri().ToString());
        }
Exemple #6
0
        /// <summary>
        /// Initializes common resources.
        /// </summary>
        /// <param name="webSocketType">The WebSocket type.</param>
        /// <param name="etpSubProtocol">The ETP websocket sub-protocol</param>
        protected void SetUpWithProxy(WebSocketType webSocketType, string etpSubProtocol)
        {
            // Clean up any remaining resources
            _client?.Dispose();
            _server?.Dispose();

            var proxiedServer = CreateServer(webSocketType);

            _server = new EtpSelfHostedProxyWebServer(GetAvailablePort(), proxiedServer);

            // Use hostname so .NET will connect through the proxy.
            var uri = new UriBuilder(proxiedServer.Uri.Scheme, "vcap.me", proxiedServer.Uri.Port, proxiedServer.Uri.AbsolutePath, proxiedServer.Uri.Query).Uri;

            _client = CreateClient(webSocketType, etpSubProtocol, uri.ToWebSocketUri().ToString());
        }
Exemple #7
0
        public EtpSelfHostedProxyWebServer(int port, IEtpSelfHostedWebServer proxiedServer)
        {
            _proxiedServer = proxiedServer;
            _proxyServer   = new ProxyServer();

            var uri     = proxiedServer.Uri;
            var builder = new UriBuilder(uri.Scheme, uri.Host, port, uri.AbsolutePath, uri.Query);

            ProxyUri = builder.Uri;

            var endPoint = new ExplicitProxyEndPoint(IPAddress.Loopback, ProxyUri.Port, false);

            endPoint.GenericCertificate = new System.Security.Cryptography.X509Certificates.X509Certificate2();

            _proxyServer.ProxyBasicAuthenticateFunc = HandleBasicAuthentication;

            _proxyServer.AddEndPoint(endPoint);
        }
Exemple #8
0
 protected abstract void InitializeWebServer(IEtpSelfHostedWebServer webServer);
Exemple #9
0
        private void HandleWebServer(IEtpSelfHostedWebServer webServer)
        {
            while (true)
            {
                Console.WriteLine("Select from the following options:");
                Console.WriteLine(" S - Start / Stop");
                if (webServer.ServerManager.IsEtpVersionSupported(EtpVersion.v12))
                {
                    Console.WriteLine(" P - Ping all connected clients");
                }
                foreach (var handler in Handlers)
                {
                    handler.PrintConsoleOptions();
                }
                Console.WriteLine(" Z - Clear");
                Console.WriteLine(" X - Exit");
                Console.WriteLine();

                var info = Console.ReadKey();

                Console.WriteLine(" - processing...");
                Console.WriteLine();

                if (IsKey(info, "S"))
                {
                    if (webServer.IsRunning)
                    {
                        webServer.Stop();
                    }
                    else
                    {
                        webServer.Start();
                    }
                }
                else if (IsKey(info, "P"))
                {
                    foreach (var server in webServer.ServerManager.Servers.Values)
                    {
                        if (server.EtpVersion == EtpVersion.v12)
                        {
                            server.Ping();
                        }
                    }
                }
                else if (IsKey(info, "Z"))
                {
                    Console.Clear();
                }
                else if (IsKey(info, "X"))
                {
                    break;
                }
                else
                {
                    foreach (var handler in Handlers)
                    {
                        if (handler.HandleConsoleInput(info))
                        {
                            break;
                        }
                    }
                }
            }
        }