Exemple #1
0
        private void SessionStartupTransitionReceived(object sender, SessionStartupTransitionEventArgs e)
        {
            if (initializationStatus_Label.InvokeRequired)
            {
                initializationStatus_Label.Invoke(new Action(() => SessionStartupTransitionReceived(sender, e)));
                return;
            }

            // This special event handler isolates this specific client as the one to handle
            // this next transition.  Without it, every client monitoring the dispatcher
            // would respond to this event and try to validate, which would be a problem.
            switch (e.Transition)
            {
            case SessionStartupTransition.ReadyToValidate:
                SessionClient.Instance.Validate(_sessionId);
                break;

            case SessionStartupTransition.ReadyToRevalidate:
                retry_Button.Visible            = true;
                _finishButton.Enabled           = false;
                initializationStatus_Label.Text = "Validation failed. Fix the specified errors and press Retry to validate again.";
                break;

            case SessionStartupTransition.ReadyToPowerUp:
                retry_Button.Visible            = true;
                _finishButton.Enabled           = true;
                initializationStatus_Label.Text = "Validation complete. Press Start Session to begin test execution.";
                break;
            }

            // When a transition comes in, force the grid view to refresh completely
            // This takes care of any stragglers that haven't refreshed in the UI
            assetStatus_GridView.DataSource = null;
            assetStatus_GridView.DataSource = _statusRows;
        }
        private void Instance_SessionStartupTransitionReceived(object sender, SessionStartupTransitionEventArgs e)
        {
            // Your code here
            WriteLine("{0}".FormatWith(e.Transition));

            switch (e.Transition)
            {
            case SessionStartupTransition.ReadyToValidate:
            {
                UpdateStatus("Validating session");
                SessionClient.Instance.Validate(_ticket.SessionId);
            }
            break;

            case SessionStartupTransition.ReadyToPowerUp:
            {
                UpdateStatus("Powering up");
                _revalidated = false;
                SessionClient.Instance.PowerUp(_ticket.SessionId);
            }
            break;

            case SessionStartupTransition.ReadyToRun:
            {
                UpdateStatus("Starting");
                SessionClient.Instance.Run(_ticket.SessionId);
            }
            break;

            case SessionStartupTransition.StartupComplete:
            {
                UpdateStatus("Running");
            }
            break;

            case SessionStartupTransition.ReadyToRevalidate:
            {
                if (_revalidated)
                {
                    SessionClient.Instance.Shutdown(_ticket.SessionId, _shutdownOptions);
                }
                else
                {
                    UpdateStatus("Error, check VM and retry");
                    WriteLine("Waiting one minute before retrying, please fix the errors in the meantime");
                    Delay.Wait(TimeSpan.FromMinutes(1));
                    SessionClient.Instance.Revalidate(_ticket.SessionId);
                    _revalidated = true;
                }
            }
            break;
            }
        }
Exemple #3
0
        //protected void OnStart(string[] args)
        //{
        //    if (args == null)
        //    {
        //        throw new ArgumentNullException("args");
        //    }

        //    GlobalSettings.Load(args[0]);
        //    using (EnterpriseTestContext dataContext = new EnterpriseTestContext())
        //    {
        //        GlobalSettings.IsDistributedSystem = dataContext.VirtualResources.Any(r => r.ResourceType == "OfficeWorker");
        //    }
        //    string dispatcherHostName = "localhost";
        //    if (GlobalSettings.IsDistributedSystem)
        //    {
        //        using (AssetInventoryContext context = DbConnect.AssetInventoryContext())
        //        {
        //            var dispatcher = context.FrameworkServers.FirstOrDefault(x => x.Active && x.ServerTypes.Any(n => n.Name == "BTF"));
        //            if (dispatcher == null)
        //            {
        //                TraceFactory.Logger.Error("Could not find any dispatchers reserved for BTF Execution.");
        //                return;
        //            }

        //        }
        //    }

        //    SessionClient.Instance.Initialize(dispatcherHostName);
        //    SessionClient.Instance.SessionStartupTransitionReceived += Instance_SessionStartupTransitionReceived;
        //    SessionClient.Instance.SessionStateReceived += Instance_SessionStateReceived;
        //    _server = WebApp.Start<Startup>(url: _baseAddress);
        //    _executionTimer.Start();
        //}

        //protected void OnStop()
        //{
        //    _server.Dispose();
        //    _executionTimer.Stop();
        //    _executionTimer.Dispose();
        //    SessionClient.Instance.SessionStateReceived -= Instance_SessionStateReceived;
        //    SessionClient.Instance.SessionStartupTransitionReceived -= Instance_SessionStartupTransitionReceived;
        //}

        private void Instance_SessionStartupTransitionReceived(object sender, SessionStartupTransitionEventArgs e)
        {
            TraceFactory.Logger.Debug($"Session Startup State received: {e.Transition} for Session {e.SessionId}");
            switch (e.Transition)
            {
            case SessionStartupTransition.ReadyToValidate:
                SessionClient.Instance.Validate(e.SessionId);
                break;

            case SessionStartupTransition.ReadyToPowerUp:
            {
                _revalidated = false;
                SessionClient.Instance.PowerUp(e.SessionId);
            }
            break;

            case SessionStartupTransition.ReadyToRun:
            {
                SessionClient.Instance.Run(e.SessionId);
            }
            break;

            case SessionStartupTransition.StartupComplete:
            {
                TraceFactory.Logger.Debug("Running");
            }
            break;

            case SessionStartupTransition.ReadyToRevalidate:
            {
                if (_revalidated)
                {
                    SessionClient.Instance.Shutdown(e.SessionId, _shutdownOptions);
                }
                else
                {
                    TraceFactory.Logger.Error("Error, check VM and retry");
                    TraceFactory.Logger.Info("Waiting one minute before retrying, please fix the errors in the meantime");
                    Delay.Wait(TimeSpan.FromMinutes(1));
                    SessionClient.Instance.Revalidate(e.SessionId);
                    _revalidated = true;
                }
            }
            break;
            }
        }
Exemple #4
0
        private void SessionClient_StartupTransitionReceived(object sender, SessionStartupTransitionEventArgs e)
        {
            UpdateStatus("Startup Transition: {0}".FormatWith(e.Transition));

            switch (e.Transition)
            {
            case SessionStartupTransition.ReadyToValidate:
                SessionClient.Instance.Validate(_ticket.SessionId);
                break;

            case SessionStartupTransition.ReadyToPowerUp:
                SessionClient.Instance.PowerUp(_ticket.SessionId);
                break;

            case SessionStartupTransition.ReadyToRun:
                SessionClient.Instance.Run(_ticket.SessionId);
                break;
            }
        }
Exemple #5
0
        static void SessionStartupTransitionReceived(object sender, SessionStartupTransitionEventArgs e)
        {
            Console.WriteLine("{0}".FormatWith(e.Transition));

            switch (e.Transition)
            {
            case SessionStartupTransition.ReadyToValidate:
                SessionClient.Instance.Validate(_ticket.SessionId);
                break;

            case SessionStartupTransition.ReadyToPowerUp:
                SessionClient.Instance.PowerUp(_ticket.SessionId);
                break;

            case SessionStartupTransition.ReadyToRun:
                SessionClient.Instance.Run(_ticket.SessionId);
                break;
            }
        }
Exemple #6
0
        private void SessionStartupTransitionReceived(object sender, SessionStartupTransitionEventArgs e)
        {
            if (e != null && !string.IsNullOrEmpty(e.SessionId))
            {
                TraceFactory.Logger.Debug($"Incoming transition state: {e.Transition}");
                var execInfo = GetExecutingSessionInfo(e.SessionId);
                if (execInfo != null)
                {
                    TraceFactory.Logger.Debug($"Session state: {execInfo.State}");
                    execInfo.StartupTransition = e.Transition;

                    // SessionExecutionManager is subscribed to the same SessionClient events as the startup wizard.
                    // The startup wizard handles all SessionStartupTransitions except for "Run".  When the session finally
                    // transitions to "ReadyToRun", SessionExecutionManager is the only one listening (the wizard is gone).
                    // This is true also when the session is resetting.
                    if (e.Transition == SessionStartupTransition.ReadyToRun)
                    {
                        TraceFactory.Logger.Debug("Sending Run request to dispatcher");
                        SessionClient.Instance.Run(e.SessionId);
                        _sessionResetting = false;
                    }
                    else if (_sessionResetting)
                    {
                        // SessionExecutionManager should only handle the following transition states if the session is resetting.
                        // Otherwise, it is assumed that these are being handled by the startup wizard.
                        switch (e.Transition)
                        {
                        case SessionStartupTransition.ReadyToValidate:
                            TraceFactory.Logger.Debug("Calling Validate");
                            SessionClient.Instance.Validate(e.SessionId);
                            break;

                        case SessionStartupTransition.ReadyToPowerUp:
                            TraceFactory.Logger.Debug("Calling PowerUp");
                            SessionClient.Instance.PowerUp(e.SessionId);
                            break;
                        }
                    }
                }
            }
        }