Beispiel #1
0
        /// <summary>
        /// Requests a new session and asserts.
        /// </summary>
        /// <param name="retries">The number of retries.</param>
        /// <returns>The <see cref="OpenSession" /> message args.</returns>
        protected async Task <ProtocolEventArgs <OpenSession> > RequestSessionAndAssert(int retries = 10)
        {
            try
            {
                var client = _client;

                // Register event handler for OpenSession response
                var onOpenSession = HandleAsync <OpenSession>(
                    x => client.Handler <ICoreClient>().OnOpenSession += x);

                // Wait for Open connection
                var isOpen = await _client.OpenAsyncWithTimeout();

                Assert.IsTrue(isOpen);

                // Wait for OpenSession
                var openArgs = await onOpenSession;

                // Verify OpenSession and Supported Protocols
                VerifySessionWithProtcols(openArgs, Protocols.ChannelStreaming, Protocols.Discovery, Protocols.Store);

                return(openArgs);
            }
            catch (TimeoutException)
            {
                if (retries < 1)
                {
                    throw;
                }

                await Task.Delay(TestSettings.DefaultTimeoutInMilliseconds);

                Logger.Warn("Retrying connection attempt after timeout");

                if (retries == 1)
                {
                    _client?.Dispose();
                    _client = InitClient(CreateClient(TestSettings.FallbackServerUrl));
                }
                else
                {
                    EtpSetUp(_container);
                    _server.Start();
                }

                return(await RequestSessionAndAssert(retries - 1));
            }
        }
Beispiel #2
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;
                        }
                    }
                }
            }
        }