コード例 #1
0
        public void PassedTest(bool?passed)
        {
            var s = new Status(_mockCheck1.Object, passed, SeverityLevel.Error, TimeSpan.FromMilliseconds(5), "hello", null, null,
                               null);
            var c = new SystemStatusModel.Check(s);

            Assert.AreEqual(passed, c.Passed);
            var ssm = new SystemStatusModel(new [] { s });

            Assert.AreEqual(passed.GetValueOrDefault(true), ssm.NoFailures);
        }
コード例 #2
0
        public ActionResult UpdateTask()
        {
            SystemStatusModel.UpdateCharts(new SystemStatusData(false,
                                                                this.GetCmp <Store>("CPULoadStore"),
                                                                this.GetCmp <Store>("MemoryStore"),
                                                                this.GetCmp <Store>("ProcessStore")
                                                                ));

            this.GetCmp <DrawContainer>("MemoryChart").RenderFrame();

            return(this.Direct());
        }
コード例 #3
0
        public SystemStatusModel Status()
        {
            var now = DateTime.Now;

            var queues = _queueManager.GameFormatsToQueues
                         .Select(kvp =>
            {
                var listener    = _hostedService.MatchmakingQueueListeners.Single(x => x.Format == kvp.Key);
                var queuedTimes = listener.BufferQueuedOnTimestamps.Select(x => now - x).Select(x => x.TotalSeconds).ToList();
                return(new SystemQueueStatusModel
                {
                    Name = Enum.GetName(typeof(GameFormat), kvp.Key),
                    Count = kvp.Value.Count,
                    BufferedCount = listener.BufferCount,
                    QueueTimes = new SystemQueueTimeAggregatesModel
                    {
                        Min = queuedTimes.Any() ? $"{queuedTimes.Min():N0}s" : "0s",
                        Max = queuedTimes.Any() ? $"{queuedTimes.Max():N0}s" : "0s",
                        Average = queuedTimes.Any() ? $"{queuedTimes.Average():N0}s" : "0s"
                    },
                    MatchCount = listener.MatchCount
                });
            })
                         .Concat(new[]
            {
                new SystemQueueStatusModel
                {
                    Name          = "Outbound",
                    Count         = _queueManager.OutboundQueue.Count,
                    BufferedCount = 0,
                    QueueTimes    = new SystemQueueTimeAggregatesModel
                    {
                        Min     = "0s",
                        Max     = "0s",
                        Average = "0s"
                    },
                    MatchCount = 0
                }
            })
                         .ToList();

            var model = new SystemStatusModel
            {
                AllBackgroundTasksRunning = _hostedService.BackgroundTasks.All(x => !x.IsCompleted),
                TotalMatches = queues.Sum(x => x.MatchCount),
                Queues       = queues
            };

            return(model);
        }
コード例 #4
0
        public void SystemStatusModelTest()
        {
            var timestamp = new DateTime(2001, 1, 1);
            var res       = new SystemStatusModel(AllPass, timestamp);

            Assert.AreEqual(timestamp, res.TimeStamp);
            Assert.IsTrue(res.NoFailures);
            Assert.AreEqual(3, res.Checks.Length);
            var json = res.ToJson();

            Console.WriteLine(json);
            Assert.AreEqual(File.ReadAllText($"{AppDomain.CurrentDomain.BaseDirectory}\\AllPass.json"), json);
            var objFromJson = json.FromJsonTo <SystemStatusModel>();

            Assert.NotNull(objFromJson);
            Assert.AreEqual(json, objFromJson.ToJson());
        }
コード例 #5
0
        /// <summary>
        /// 添加或更新记录
        /// </summary>
        public void AddOrUpdate(SystemStatusModel model)
        {
            try
            {
                Invoke(new Action(() =>
                {
                    bool add = true;
                    //名称、IP、CPU、RAM、空闲RAM、APPCPU、APPRAM
                    if (DgvSystemList.Rows.Count > 0)
                    {
                        foreach (DataGridViewRow item in DgvSystemList.Rows)
                        {
                            try
                            {
                                string _ip = item.Cells[ClmIP.Name].Value.ToString();

                                if (_ip == model.IP)
                                {
                                    item.Cells[ClmName.Name].Value = model.Name;
                                    //item.Cells[ClmIP.Name].Value = model.IP;
                                    item.Cells[ClmCPU.Name].Value         = model.Cpu;
                                    item.Cells[ClmRam.Name].Value         = model.Ram;
                                    item.Cells[ClmFreeRam.Name].Value     = model.RamAvail;
                                    item.Cells[ClmAppCpu.Name].Value      = model.AppCpu;
                                    item.Cells[ClmAppRam.Name].Value      = model.AppRam;
                                    item.Cells[ClmTxTime.Name].Value      = model.CreateTime;
                                    item.Cells[ClmRefreshTime.Name].Value = DateTime.Now;
                                    add = false;
                                }
                            }
                            catch { }
                        }
                    }
                    if (add)
                    {
                        DgvSystemList.Rows.Add(
                            model.Name, model.IP, model.Cpu, model.Ram,
                            model.RamAvail, model.AppCpu, model.AppRam, model.CreateTime, DateTime.Now);
                    }
                }));
            }
            catch { }
        }
コード例 #6
0
 public static void AddSystemStatus(SystemStatusModel status)
 {
     try
     {
         if (Str.Ok(status.IP))
         {
             status.CreateTime = DateTime.Now;
             if (R.Store.SystemStatus.TryGetValue(status.IP, out SystemStatusModel _status))
             {
                 bool a = R.Store.SystemStatus.TryUpdate(status.IP, status, _status);
             }
             else
             {
                 bool b = R.Store.SystemStatus.TryAdd(status.IP, status);
             }
         }
     }
     catch { }
 }
コード例 #7
0
        public SystemStatusModel GetSystemStatus()
        {
            var model = new SystemStatusModel();

            MefConfig.Container.SatisfyImportsOnce(model);

            // Database
            var dbStatus = new SystemComponent()
            {
                Name = "Colectica Curation Database"
            };

            model.Components.Add(dbStatus);

            try
            {
                using (var db = ApplicationDbContext.Create())
                {
                    var testUser = db.Users.FirstOrDefault();
                    dbStatus.IsWorking = true;
                }
            }
            catch (Exception ex)
            {
                dbStatus.IsWorking = false;
                dbStatus.Message   = string.Join(". ", ex.FlattenHierarchy().Select(x => x.Message));
            }

            // Curation service
            var serviceStatus = new SystemComponent()
            {
                Name = "Colectica Curation Service"
            };

            model.Components.Add(serviceStatus);

            try
            {
                var curatorService = new ServiceController("Colectica Curation Service");
                serviceStatus.IsWorking = curatorService.Status == ServiceControllerStatus.Running;
                serviceStatus.Message   = curatorService.Status.ToString();
            }
            catch (Exception ex)
            {
                serviceStatus.IsWorking = false;
                serviceStatus.Message   = ex.Message;
            }

#if ISPRO
            // Repository
            var repoStatus = new SystemComponent()
            {
                Name = "Colectica Repository"
            };
            model.Components.Add(repoStatus);

            try
            {
                var connectionInfo = new RepositoryConnectionInfo()
                {
                    Url = "localhost",
                    AuthenticationMethod = RepositoryAuthenticationMethod.Windows,
                    TransportMethod      = RepositoryTransportMethod.NetTcp
                };
                var client   = RepositoryHelper.GetClient();
                var testInfo = client.GetRepositoryInfo();
                repoStatus.IsWorking = true;
            }
            catch (Exception ex)
            {
                repoStatus.IsWorking = false;
                repoStatus.Message   = ex.Message;
            }
#endif

            // Clam Antivirus
            var clamStatus = new SystemComponent()
            {
                Name = "Clam Antivirus"
            };
            model.Components.Add(clamStatus);

            try
            {
                var clamService = new ServiceController("ClamD");
                clamStatus.IsWorking = clamService.Status == ServiceControllerStatus.Running;
                clamStatus.Message   = clamService.Status.ToString();
            }
            catch (Exception ex)
            {
                clamStatus.IsWorking = false;
                clamStatus.Message   = ex.Message;
            }

            // Stata
            //var stataStatus = new SystemComponent() { Name = "Stata" };
            //model.Components.Add(stataStatus);

            // R
            var rStatus = new SystemComponent()
            {
                Name = "R"
            };
            model.Components.Add(rStatus);

            try
            {
                //string rMessage = string.Empty;
                //var rImporter = new RDataImporter();
                //rStatus.IsWorking = rImporter.AreSystemRequirementsSatisfied(out rMessage);
            }
            catch (Exception ex)
            {
                rStatus.IsWorking = false;
                rStatus.Message   = ex.Message;
            }

            return(model);
        }