Beispiel #1
0
 public InstanceInformation(string id, InstanceStatus status, string packageName, InstanceConfiguration configuration)
 {
     Id            = id;
     Status        = status;
     PackageName   = packageName;
     Configuration = configuration;
 }
Beispiel #2
0
        public virtual InstanceStatus GetStatus(InstanceStatus currentStatus)
        {
            var results = DoHealthChecks(_contributors);
            var status  = AggregateStatus(results);

            return(MapToInstanceStatus(status));
        }
 /// <summary>
 /// To see what properties should save transform
 /// </summary>
 /// <param name="SavePosition">To save the position</param>
 /// <param name="SaveRotation">To save rotation</param>
 /// <param name="SaveScale">To save the scale</param>
 public SaveAttribute(bool SavePosition, bool SaveRotation, bool SaveScale)
 {
     this.SavePosition = SavePosition;
     this.SaveRotation = SaveRotation;
     this.SaveScale    = SaveScale;
     InstanceNewOnLoad = InstanceStatus.Instance;
 }
Beispiel #4
0
        public static async Task AwaitInstanceStatus(this EC2Helper ec2,
                                                     string instanceId,
                                                     InstanceSummaryStatus summaryStatus,
                                                     int timeout_ms, int intensity       = 1500,
                                                     bool thowOnTermination              = true,
                                                     CancellationToken cancellationToken = default(CancellationToken))
        {
            var            sw     = Stopwatch.StartNew();
            InstanceStatus status = null;

            do
            {
                if (status != null)
                {
                    await Task.Delay(intensity);
                }

                status = await ec2.DescribeInstanceStatusAsync(instanceId, cancellationToken);

                if (status.Status.Status == summaryStatus.ToSummaryStatus())
                {
                    return;
                }

                if (thowOnTermination &&
                    (status.InstanceState?.Name == InstanceStateName.Stopping ||
                     status.InstanceState?.Name == InstanceStateName.Terminated))
                {
                    throw new Exception($"Failed Status Await, Instane is terminated or terminating: '{status.InstanceState.Name}'");
                }
            }while (sw.ElapsedMilliseconds < timeout_ms);

            throw new TimeoutException($"Instance {instanceId} could not reach status summary '{summaryStatus}', last status summary: '{status.Status.Status}'");
        }
        internal HealthStatus AddRemoteInstanceStatus(InstanceStatus lastRemoteInstanceStatus, HealthCheckResult result)
        {
            var remoteStatus = MakeHealthStatus(_discoveryClient.LastRemoteInstanceStatus);

            result.Details.Add("remoteInstStatus", remoteStatus.ToString());
            return(remoteStatus);
        }
Beispiel #6
0
        /// <summary>
        /// Converts to a simpler instance object that includes some application metadata
        /// </summary>
        public static MessageBoxInstance ConvertToMessageBoxInstance(Instance instance)
        {
            InstanceStatus status       = instance.Status ?? new InstanceStatus();
            DateTime?      visibleAfter = instance.VisibleAfter;

            string instanceGuid = instance.Id.Contains("/") ? instance.Id.Split("/")[1] : instance.Id;

            DateTime createdDateTime = visibleAfter != null && visibleAfter > instance.Created ? (DateTime)visibleAfter : instance.Created.Value;

            MessageBoxInstance messageBoxInstance = new MessageBoxInstance
            {
                CreatedDateTime = createdDateTime,
                DueDateTime     = instance.DueBefore,
                Id = instanceGuid,
                InstanceOwnerId    = instance.InstanceOwner.PartyId,
                LastChangedBy      = FindLastChangedBy(instance),
                Org                = instance.Org,
                AppName            = instance.AppId.Split('/')[1],
                ProcessCurrentTask = GetSBLStatusForCurrentTask(instance),
                AllowNewCopy       = false,
                DeletedDateTime    = status.SoftDeleted,
                ArchivedDateTime   = status.Archived,
                DeleteStatus       = status.SoftDeleted.HasValue ? DeleteStatusType.SoftDeleted : DeleteStatusType.Default,
                ReadStatus         = status.ReadStatus
            };

            return(messageBoxInstance);
        }
Beispiel #7
0
        internal protected void RefreshInstanceInfo()
        {
            InstanceInfo info = ApplicationInfoManager.Instance.InstanceInfo;

            if (info == null)
            {
                return;
            }

            ApplicationInfoManager.Instance.RefreshLeaseInfo();

            InstanceStatus status = InstanceStatus.UNKNOWN;

            if (HealthCheckHandler != null)
            {
                try
                {
                    status = HealthCheckHandler.GetStatus(info.Status);
                }
                catch (Exception e)
                {
                    _logger?.LogError("RefreshInstanceInfo HealthCheck handler exception: {0}, App: {1}, Instance: {2} marked DOWN",
                                      e, info.AppName, info.InstanceId);
                    status = InstanceStatus.DOWN;
                }
            }

            if (status != InstanceStatus.UNKNOWN)
            {
                info.Status = status;
            }
        }
Beispiel #8
0
 private void SetStatus(InstanceStatus status)
 {
     _status = status;
     foreach (var listener in _instanceManager._instanceEventListeners)
     {
         listener.OnInstanceStatus(_id, _status);
     }
 }
        public override InstanceStatus GetStatus(InstanceStatus currentStatus)
        {
            using var scope = _scopeFactory.CreateScope();
            _contributors   = scope.ServiceProvider.GetServices <IHealthContributor>().ToList();
            var result = base.GetStatus(currentStatus);

            _contributors = null;
            return(result);
        }
Beispiel #10
0
        private static void WaitForDeploymentStatus(
            DeploymentStatus deploymentStatus,
            InstanceStatus instanceStatus,
            string subscriptionId,
            string serviceName,
            DeploymentSlot deploymentSlot,
            X509Certificate2 managementCertificate,
            bool mostIsGoodEnough)
        {
            // assume we haven't matched the desired status
            bool statusMatches = false;

            do
            {
                // sleep for a bit...
                Thread.Sleep(TimeSpan.FromSeconds(5));
                WriteStatus(".");

                // get the current status
                FullDeploymentStatus current = Utilities.GetDeploymentSlotStatus(
                    subscriptionId,
                    serviceName,
                    deploymentSlot,
                    managementCertificate);

                // if the main status matches
                if (current.MainStatus == deploymentStatus)
                {
                    // good so far...
                    statusMatches = true;
                    int countMatch = 0;

                    // see if all instance status's also match
                    foreach (InstanceDetails instance in current.Instances)
                    {
                        if (instance.Status != instanceStatus)
                        {
                            // we have a bad apple
                            statusMatches = false;
                        }
                        else
                        {
                            countMatch++;
                        }
                    }

                    if (mostIsGoodEnough && ((double)countMatch / current.Instances.Count) >= 0.8)
                    {
                        statusMatches = true;
                    }
                }
            }while (!statusMatches);

            WriteStatusLine(string.Format(" {0}", deploymentStatus));
        }
        public Task UpdateStatusAsync(string address, InstanceStatus status)
        {
            var notificationSub = dbSet.SingleOrDefault(n => n.Address == address);

            if (notificationSub != null)
            {
                notificationSub.InstanceStatus = status;
                dbSet.Update(notificationSub);
            }
            return(dbContext.SaveChangesAsync());
        }
Beispiel #12
0
            public Instance(InstanceManager instanceManager, string id, Package package, ILogger logger, IBindingInterface bindingInterface, ISettings settings)
            {
                _instanceManager = instanceManager;
                _id               = id;
                _package          = package;
                _logger           = logger;
                _bindingInterface = bindingInterface;

                _status       = InstanceStatus.Idle;
                Configuration = InstanceConfiguration.CreateDefault(settings);
            }
Beispiel #13
0
        private void WaitForStatus(ConnectImpl conn, InstanceStatus staus)
        {
            int i = Timeout;

            while (conn.InstanceStatus != staus && i > 0)
            {
                Thread.Sleep(100);
                i -= 100;
            }
            Assert.That(conn.InstanceStatus, Is.EqualTo(staus));
        }
Beispiel #14
0
        public InstanceStatus GetStatus()
        {
            InstanceStatus status = new InstanceStatus()
            {
                ServerInstanceID   = Program.InstanceConfig.ServerInstanceID,
                HttpEndpoint       = string.Empty,
                SecureHttpEndpoint = string.Empty
            };

            return(status);
        }
Beispiel #15
0
        public void BroadcastInstanceStatus(string instanceId, InstanceStatus status)
        {
            var packet = new Packet(Header.InstanceStatus, Packet.NoRequestId);

            packet.Write(instanceId);
            packet.Write((int)status);

            int length;
            var buffer = packet.GetInternalBuffer(out length);

            Broadcast(buffer, 0, length);
        }
        private void SaveHelper(string outputFolder, BizTalkOperations biztalkOps, InstanceStatus statusToFind)
        {
            int i = 0;

            foreach (Instance instance in biztalkOps.GetServiceInstances())
            {
                if (instance is OrchestrationInstance)
                {
                    OrchestrationInstance orchInstance = instance as OrchestrationInstance;
                    if (orchInstance.InstanceStatus == statusToFind)
                    {
                        i = i + 1;
                        if (orchInstance.CreationTime >= DateTime.Parse(textStartDate.Text) &&
                            orchInstance.CreationTime <= DateTime.Parse(textEndDate.Text))
                        {
                            Trace(string.Format(
                                      "Found orch ({0}) in date range. Creation date:{1}", i, orchInstance.CreationTime));

                            bool msgFound = false;
                            foreach (IBaseMessage msg in orchInstance.Messages)
                            {
                                IBaseMessagePart part = msg.BodyPart;
                                if (part == null)
                                {
                                    Trace("Found null message attached to service instance.");
                                }
                                else
                                {
                                    using (StreamWriter sw = new StreamWriter(Path.Combine(outputFolder, msg.MessageID.ToString())))
                                    {
                                        Trace("Saving message attached to service instance with msgid:" + msg.MessageID.ToString());
                                        using (StreamReader partReader = new StreamReader(part.Data))
                                        {
                                            sw.Write(partReader.ReadToEnd());
                                        }
                                        sw.Close();
                                        msgFound = true;
                                    }
                                }
                            }
                            if (!msgFound)
                            {
                                Trace(string.Format("No messages found for instance: " + instance.ID.ToString()));
                            }

                            CompletionStatus status = biztalkOps.TerminateInstance(instance.ID);
                            Trace(string.Format("Terminating instance: {0} yielded {1}", instance.ID.ToString(), status));
                        }
                    }
                }
            }
        }
Beispiel #17
0
        /// <summary>
        /// override startup method
        /// </summary>
        /// <param name="e"></param>
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);

            _regLicence = new RegisterLicence();
            InstanceStatus instanceStatus = new InstanceStatus();

            //instanceStatus.IsSingleInstance(_regLicence, new MainWindow(), Constants.InternalLogoPath, "WallX", "Version 1.0");

            //instanceStatus.IsSingleInstance(new MainWindow(), Constants.InternalLogoPath, "WallX", "Version 1.0");
            _regLicence.IsLicenceValid(new MainWindow(), Constants.InternalLogoPath, "WallX", "Version 1.0");
            //new MainWindow().Show();
        }
Beispiel #18
0
 internal InstanceInfo()
 {
     _overRiddenStatus              = InstanceStatus.UNKNOWN;
     _isSecurePortEnabled           = false;
     _isCoordinatingDiscoveryServer = false;
     _isUnsecurePortEnabled         = true;
     _countryId            = 1;
     _port                 = 7001;
     _securePort           = 7002;
     _sid                  = "na";
     _metaData             = new Dictionary <string, string>();
     _isDirty              = false;
     _lastUpdatedTimestamp = _lastDirtyTimestamp = DateTime.UtcNow.Ticks;
     _status               = InstanceStatus.UP;
 }
Beispiel #19
0
 public InstanceInfo()
 {
     OverriddenStatus              = InstanceStatus.UNKNOWN;
     IsSecurePortEnabled           = false;
     IsCoordinatingDiscoveryServer = false;
     IsUnsecurePortEnabled         = true;
     CountryId            = 1;
     Port                 = 7001;
     SecurePort           = 7002;
     LastUpdatedTimestamp = LastDirtyTimestamp = DateTime.UtcNow.Ticks;
     _sid                 = "na";
     _metaData            = new Dictionary <string, string>();
     _isDirty             = false;
     _status              = InstanceStatus.UP;
 }
        private void SaveMessages(
            string mgmtDbServer,
            string mgmtDbName,
            string outputFolder)
        {
            AppSettingsReader appSet       = new System.Configuration.AppSettingsReader();
            InstanceStatus    statusToFind = (InstanceStatus)Enum.Parse(typeof(InstanceStatus), (string)appSet.GetValue("State", typeof(string)));

            BizTalkOperations biztalkOps = new BizTalkOperations(mgmtDbServer, mgmtDbName);

            int  retryCount = 0;
            bool retryLoop  = true;

            while (retryLoop)
            {
                try
                {
                    SaveHelper(outputFolder, biztalkOps, statusToFind);
                    retryLoop = false;
                }
                catch (System.Exception ex)
                {
                    // For large numbers of messages, the connection occasionally breaks off...
                    if (ex.Message.IndexOf("Failed to connect") > -1)
                    {
                        bool connectSuccess = false;
                        while (!connectSuccess)
                        {
                            try
                            {
                                retryCount++;
                                Trace(string.Format("Connection failure {0} - trying again.", retryCount));
                                this.Refresh();
                                System.Threading.Thread.Sleep(500);
                                biztalkOps     = new BizTalkOperations(mgmtDbServer, mgmtDbName);
                                connectSuccess = true;
                            }
                            catch
                            {
                            }
                        }
                    }
                }
            }


            Trace("Done.");
        }
        private void WriteInstanceStatus(InstanceStatus status)
        {
            using (var fs = new FileStream(_uniqueFilePath, FileMode.Create))
            {
                using (var writer = new BinaryWriter(fs))
                {
                    writer.Write(status.ProcessId);
                    writer.Write(status.CommandLineArgs.Count);

                    foreach (var arg in status.CommandLineArgs)
                    {
                        writer.Write(arg);
                    }
                }
            }
        }
Beispiel #22
0
        /// <summary>
        /// Converts to a simpler instance object that includes some application metadata
        /// </summary>
        public static MessageBoxInstance ConvertToMessageBoxInstance(Instance instance)
        {
            InstanceStatus status       = instance.Status ?? new InstanceStatus();
            DateTime?      visibleAfter = instance.VisibleAfter;

            string instanceGuid = instance.Id.Contains('/') ? instance.Id.Split('/')[1] : instance.Id;

            DateTime createdDateTime = visibleAfter != null && visibleAfter > instance.Created ? (DateTime)visibleAfter : instance.Created.Value;

            MessageBoxInstance messageBoxInstance = new MessageBoxInstance
            {
                CreatedDateTime = createdDateTime,
                DueDateTime     = instance.DueBefore,
                Id = instanceGuid,
                InstanceOwnerId    = instance.InstanceOwner.PartyId,
                LastChangedBy      = FindLastChanged(instance).LastChangedBy,
                Org                = instance.Org,
                AppName            = instance.AppId.Split('/')[1],
                ProcessCurrentTask = GetSBLStatusForCurrentTask(instance),
                AllowNewCopy       = false,
                DeletedDateTime    = status.SoftDeleted,
                ArchivedDateTime   = status.Archived,
                DeleteStatus       = status.SoftDeleted.HasValue ? DeleteStatusType.SoftDeleted : DeleteStatusType.Default,
                ReadStatus         = status.ReadStatus,
                DataValues         = instance.DataValues
            };

            if (instance.PresentationTexts is not null)
            {
                messageBoxInstance.PresentationText = string.Join(", ", instance.PresentationTexts.Select(pt => pt.Value).ToArray());
            }

            if (instance.Status?.Substatus != null)
            {
                messageBoxInstance.Substatus = new Substatus
                {
                    Label       = instance.Status.Substatus.Label,
                    Description = instance.Status.Substatus.Description
                };
            }

            return(messageBoxInstance);
        }
        internal HealthStatus MakeHealthStatus(InstanceStatus lastRemoteInstanceStatus)
        {
            if (lastRemoteInstanceStatus == InstanceStatus.DOWN)
            {
                return(HealthStatus.DOWN);
            }

            if (lastRemoteInstanceStatus == InstanceStatus.OUT_OF_SERVICE)
            {
                return(HealthStatus.OUT_OF_SERVICE);
            }

            if (lastRemoteInstanceStatus == InstanceStatus.UP)
            {
                return(HealthStatus.UP);
            }

            return(HealthStatus.UNKNOWN);
        }
Beispiel #24
0
        /// <summary>
        /// Converts to a simpler instance object that includes some application metadata
        /// </summary>
        /// <param name="instances">List of instances to convert.</param>
        /// <param name="appTitles">Dictionary for application titles by language.</param>
        /// <param name="language">Desired language.</param>
        public static List <MessageBoxInstance> ConvertToMessageBoxInstanceList(List <Instance> instances, Dictionary <string, Dictionary <string, string> > appTitles, string language)
        {
            List <MessageBoxInstance> messageBoxInstances = new List <MessageBoxInstance>();

            if (instances == null || instances.Count == 0)
            {
                return(messageBoxInstances);
            }

            foreach (Instance instance in instances)
            {
                InstanceStatus status       = instance.Status ?? new InstanceStatus();
                DateTime?      visibleAfter = instance.VisibleAfter;

                string title = appTitles[instance.AppId].ContainsKey(language) ? appTitles[instance.AppId][language] : appTitles[instance.AppId]["nb"];

                string instanceId = instance.Id.Contains("/") ? instance.Id.Split("/")[1] : instance.Id;

                DateTime createdDateTime = visibleAfter != null && visibleAfter > instance.Created ? (DateTime)visibleAfter : instance.Created.Value;

                messageBoxInstances.Add(new MessageBoxInstance
                {
                    CreatedDateTime = createdDateTime,
                    DueDateTime     = instance.DueBefore,
                    Id = instanceId,
                    InstanceOwnerId    = instance.InstanceOwner.PartyId,
                    LastChangedBy      = FindLastChangedBy(instance),
                    Org                = instance.Org,
                    AppName            = instance.AppId.Split('/')[1],
                    Title              = title,
                    ProcessCurrentTask = GetSBLStatusForCurrentTask(instance),
                    AuthorizedForWrite = true,
                    AllowDelete        = true,
                    AllowNewCopy       = false,
                    DeletedDateTime    = status.SoftDeleted,
                    ArchivedDateTime   = status.Archived,
                    DeleteStatus       = status.SoftDeleted.HasValue ? DeleteStatusType.SoftDeleted : DeleteStatusType.Default,
                });
            }

            return(messageBoxInstances);
        }
        public async Task <InstanceStatus> GetState()
        {
            var request = new DescribeInstanceStatusRequest();

            request.InstanceIds = new List <string>()
            {
                BotConfig.GetCachedConfig().Aws.EC2InstanceId
            };
            request.IncludeAllInstances = true; // show instances that aren't running as well
            var response = await client.DescribeInstanceStatusAsync(request);

            InstanceStatus status = null;

            response.InstanceStatuses.ForEach(i => // unpack the response into an instance status
            {
                Console.WriteLine("checking state of instance " + i.InstanceId);
                status = i;
            });
            return(status);
        }
        public double GetLoadFactor()
        {
            int maxSlot  = 0;
            int usedSlot = 0;

            lock (this)
            {
                List <string> diedInstances = new List <string>();
                foreach (KeyValuePair <string, InstanceStatus> entry in instances)
                {
                    InstanceStatus status = entry.Value;
                    maxSlot  += status.MaxRunningTask;
                    usedSlot += status.CurrentRunningTask;
                }
            }
            if (maxSlot == 0)
            {
                return(1.0d);
            }
            return((double)usedSlot / (double)maxSlot);
        }
 public static bool QueryStatus(InstanceStatus status)
 {
     var thisProcess = Process.GetCurrentProcess();
     return Utility.DoTimeout(
         () =>
         {
             try
             {
                 return
                     Process.GetProcessesByName(thisProcess.ProcessName)
                         .Where(process => process.Id != thisProcess.Id)
                         .Select(process => new Client(process))
                         .Any(client => client.Status == status);
             }
             catch (Exception)
             {
                 return false;
             }
         },
         500);
 }
        public static bool QueryStatus(InstanceStatus status)
        {
            var thisProcess = Process.GetCurrentProcess();

            return(Utility.DoTimeout(
                       () =>
            {
                try
                {
                    return
                    Process.GetProcessesByName(thisProcess.ProcessName)
                    .Where(process => process.Id != thisProcess.Id)
                    .Select(process => new Client(process))
                    .Any(client => client.Status == status);
                }
                catch (Exception)
                {
                    return false;
                }
            },
                       500));
        }
Beispiel #29
0
        public static async Task AwaitInstanceStateCode(this EC2Helper ec2, string instanceId, InstanceStateCode instanceStateCode, int timeout_ms, int intensity = 1500, CancellationToken cancellationToken = default(CancellationToken))
        {
            var            sw     = Stopwatch.StartNew();
            InstanceStatus status = null;

            do
            {
                if (status != null)
                {
                    await Task.Delay(intensity);
                }

                status = await ec2.DescribeInstanceStatusAsync(instanceId, cancellationToken);

                if (status.InstanceState.Code == (int)instanceStateCode)
                {
                    return;
                }
            }while (sw.ElapsedMilliseconds < timeout_ms);

            throw new TimeoutException($"Instance {instanceId} could not reach state code {instanceStateCode.ToString()}, last state: {status?.InstanceState?.Code.ToEnumStringOrDefault<InstanceStateCode>($"<convertion failure of value {status?.InstanceState?.Code}>")}");
        }
Beispiel #30
0
        public void OnInstanceStatus(string instanceId, InstanceStatus status)
        {
            ExecuteOnMainThread(() =>
            {
                var data = new
                {
                    instanceId = instanceId,
                    status     = (int)status
                };

                foreach (var client in Clients)
                {
                    try
                    {
                        client.SendPacket("is", data);
                    }
                    catch (SocketException)
                    {
                    }
                }
            });
        }
Beispiel #31
0
        /// <summary>
        /// Converts to a simpler instance object that includes some application metadata
        /// </summary>
        public static MessageBoxInstance ConvertToMessageBoxInstance(Instance instance)
        {
            InstanceStatus status       = instance.Status ?? new InstanceStatus();
            DateTime?      visibleAfter = instance.VisibleAfter;

            string instanceGuid = instance.Id.Contains("/") ? instance.Id.Split("/")[1] : instance.Id;

            DateTime createdDateTime = visibleAfter != null && visibleAfter > instance.Created ? (DateTime)visibleAfter : instance.Created.Value;

            string lastChangedBy = FindLastChangedBy(instance);

            // last changed by is set to null if instance has only been modified by an organisation
            // to ensure correct rendering in messagebox.
            if (instance.Created.Value == instance.LastChanged.Value && IsValidOrganizationNumber(lastChangedBy))
            {
                lastChangedBy = "0";
            }

            MessageBoxInstance messageBoxInstance = new MessageBoxInstance
            {
                CreatedDateTime = createdDateTime,
                DueDateTime     = instance.DueBefore,
                Id = instanceGuid,
                InstanceOwnerId    = instance.InstanceOwner.PartyId,
                LastChangedBy      = lastChangedBy,
                Org                = instance.Org,
                AppName            = instance.AppId.Split('/')[1],
                ProcessCurrentTask = GetSBLStatusForCurrentTask(instance),
                AllowNewCopy       = false,
                DeletedDateTime    = status.SoftDeleted,
                ArchivedDateTime   = status.Archived,
                DeleteStatus       = status.SoftDeleted.HasValue ? DeleteStatusType.SoftDeleted : DeleteStatusType.Default,
            };

            return(messageBoxInstance);
        }
Beispiel #32
0
        private static void WaitForDeploymentStatus(
            DeploymentStatus deploymentStatus,
            InstanceStatus instanceStatus,
            string subscriptionId,
            string serviceName,
            DeploymentSlot deploymentSlot,
            X509Certificate2 managementCertificate,
            bool mostIsGoodEnough)
        {
            // assume we haven't matched the desired status
            bool statusMatches = false;

            do
            {
                // sleep for a bit...
                Thread.Sleep(TimeSpan.FromSeconds(5));
                WriteStatus(".");

                // get the current status
                FullDeploymentStatus current = Utilities.GetDeploymentSlotStatus(
                    subscriptionId,
                    serviceName,
                    deploymentSlot,
                    managementCertificate);

                // if the main status matches
                if (current.MainStatus == deploymentStatus)
                {
                    // good so far...
                    statusMatches = true;
                    int countMatch = 0;

                    // see if all instance status's also match
                    foreach (InstanceDetails instance in current.Instances)
                    {
                        if (instance.Status != instanceStatus)
                        {
                            // we have a bad apple
                            statusMatches = false;
                        }
                        else
                        {
                            countMatch++;
                        }
                    }

                    if (mostIsGoodEnough && ((double)countMatch / current.Instances.Count) >= 0.8)
                    {
                        statusMatches = true;
                    }
                }
            }
            while (!statusMatches);

            WriteStatusLine(string.Format(" {0}", deploymentStatus));
        }
        private void WriteInstanceStatus(InstanceStatus status)
        {
            using (var fs = new FileStream(_uniqueFilePath, FileMode.Create))
            {
                using (var writer = new BinaryWriter(fs))
                {
                    writer.Write(status.ProcessId);
                    writer.Write(status.CommandLineArgs.Count);

                    foreach (var arg in status.CommandLineArgs)
                    {
                        writer.Write(arg);
                    }
                }
            }
        }
 private void WaitForStatus(ConnectImpl conn, InstanceStatus staus)
 {
     int i = Timeout;
     while (conn.InstanceStatus != staus && i > 0)
     {
         Thread.Sleep(100);
         i -= 100;
     }
     Assert.That(conn.InstanceStatus, Is.EqualTo(staus));
 }