private ServerStat GetServerStat(DateTime lastMatchDate, List <Match> matches, string endpoint) { var firstMatchDateTime = matches.Min(i => i.Timestamp); var countDays = (lastMatchDate.Date - firstMatchDateTime.Date).Days + 1; var totalMatchesPlayed = matches.Count; var maximumMatchesPerDay = matches.GroupBy(i => i.Timestamp.Date).Max(i => i.Count()); var averageMatchesPerDay = (decimal)totalMatchesPlayed / countDays; var maximumPopulation = matches.Max(i => i.Results.Population); var averagePopulation = (decimal)matches.Sum(i => i.Results.Population) / totalMatchesPlayed; var top5GameModes = matches.GroupBy(i => i.Results.GameMode) .OrderByDescending(i => i.Count()) .ThenBy(i => i.Key) .Take(5) .Select(i => i.Key).ToArray(); var top5Maps = matches.GroupBy(i => i.Results.Map) .OrderByDescending(i => i.Count()) .ThenBy(i => i.Key) .Take(5) .Select( i => i.Key).ToArray(); var serverStat = new ServerStat(endpoint, totalMatchesPlayed, maximumMatchesPerDay, averageMatchesPerDay, maximumPopulation, averagePopulation, top5GameModes, top5Maps); return(serverStat); }
public MineServerPinger() : base(null, null) { Action = async s => { try { _isPinging = true; var stat = new ServerStat(s); await stat.GetInfoAsync(); return(stat.ServerUp); } catch (Exception e) { Trace.Write(e); return(false); } finally { _isPinging = false; } }; CanPing = s => !_isPinging && !string.IsNullOrWhiteSpace(s); ButtonHint = "Проверить связь с сервером"; }
private static Task <ServerStat> GetServerStatAsync(ServerStat serverStat) { var task = new Task <ServerStat>(() => serverStat); task.Start(); return(task); }
/// <summary>Gets a list of server statistics from database</summary> /// <exception cref="Exception">Thrown when failed to get server statistics</exception> public IEnumerable <ServerStat> GetServerStats() { try { List <ServerStat> serverStats = new List <ServerStat>(); SqlConnection Connection = MbmSqlConnection.GetSqlConnection(); using (Connection) { using (SqlCommand cmd = Connection.CreateCommand()) { cmd.CommandText = @"spServerStats"; cmd.CommandType = CommandType.StoredProcedure; SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { ServerStat serverStat = new ServerStat(reader); serverStats.Add(serverStat); } } } return(serverStats); } catch (Exception ex) { throw new Exception("Failed to get server statistics", ex); } }
/// <summary>Gets most recent server statistics from database</summary> /// <exception cref="Exception">Thrown when failed to get server statistics</exception> public ServerStat GetMostRecent() { try { ServerStat serverStat = new ServerStat(); SqlConnection Connection = MbmSqlConnection.GetSqlConnection(); using (Connection) { using (SqlCommand cmd = Connection.CreateCommand()) { cmd.CommandText = @"spServerStats"; cmd.CommandType = CommandType.StoredProcedure; SqlDataReader reader = cmd.ExecuteReader(); reader.Read(); serverStat = new ServerStat(reader); } } return(serverStat); } catch (Exception ex) { throw new Exception("Failed to get most recent server statistics", ex); } }
/// <summary>Initialises an instance of ServerStatistics</summary> public ServerStatistics() { InitializeComponent(); ServerStat WindowServerStats = new ServerStat(); StatsPanel.DataContext = WindowServerStats; }
public void ServerStat_Construction_1() { ServerStat stat = new ServerStat(); Assert.IsNull(stat.RunningClients); Assert.AreEqual(0, stat.ClientCount); Assert.AreEqual(0, stat.TotalCommandCount); Assert.AreEqual(0, stat.Unknown); }
public void SetValidCpuOther() { ServerStat stats = new ServerStat(); stats.CpuOther = 100; Assert.AreEqual(uint.Parse("100"), stats.CpuOther); }
public void SetValidMemoryUtilization() { ServerStat stats = new ServerStat(); stats.MemoryUtilization = 100; Assert.AreEqual(uint.Parse("100"), stats.MemoryUtilization); }
public void SendStats(ServerStat stat, string parameter) { _IRC.SendTCPMessage(string.Format("STATS {0} {1}", stat, parameter)); if (StatsCommandEvent != null) { StatsCommandEvent(this, new StatsCommand { Stat = stat.ToString(), Parameter = parameter }); } }
/// <summary> /// Sends a Stats command to view Server information and statistics /// </summary> /// <param name="stat"></param> public void SendStats(ServerStat stat) { _IRC.SendTCPMessage(string.Format("STATS {0}", stat)); if (StatsCommandEvent != null) { StatsCommandEvent(this, new StatsCommand { Stat = stat.ToString() }); } }
/// <inheritdoc cref="AbstractCommand.Execute" /> public override ServerResponse Execute ( ClientQuery query ) { ServerResponse response = base.Execute(query); response.GetReturnCode(); Result = ServerStat.Parse(response); return(response); }
public void SetInvalidmemoryUtilization() { ServerStat stats = new ServerStat(); try { stats.MemoryUtilization = 101; } catch (Exception ex) { Assert.AreEqual("MemoryUtilization cannot be above 100", ex.Message); throw; } }
public void SetInvalidCpuSql() { ServerStat stats = new ServerStat(); try { stats.CpuSql = 101; } catch (Exception ex) { Assert.AreEqual("CpuSql cannot be above 100", ex.Message); throw; } }
public void ToStringTest() { string expected = "10,20,30,40,50,60"; ServerStat stats = new ServerStat(); stats.CpuIdle = 10; stats.CpuOther = 20; stats.CpuSql = 30; stats.MemoryUtilization = 40; stats.TotalSpace = 50; stats.AvailableSpace = 60; Assert.AreEqual(expected, stats.ToString()); }
public void ServerStat_Test1() { ServerStat serverStat = Connection.GetServerStat(); Write ( "total commands: {0} | running clients: ", serverStat.TotalCommandCount ); string text = string.Join ( ", ", serverStat.RunningClients.Select(c => c.Workstation) ); Write(text); }
private ServerStat GetServerStats(int serverid) { ServerStat ServerStatistics = new ServerStat { }; try { ServerStatistics = DbHelper.Instance.GetServerStats(serverid); return(ServerStatistics); } catch (Exception ex) { Console.Write(ex); return(new ServerStat { }); } }
/// <summary>Retrieves the server statistics</summary> private void RetrieveStatistics() { try { Mouse.OverrideCursor = Cursors.Wait; ServerStatsRepository ServerStatsRepo = new ServerStatsRepository(); BoundServerStats = ServerStatsRepo.GetMostRecent(); StatsPanel.DataContext = BoundServerStats; } catch (Exception ex) { ErrorMessage.Content = ex.Message; LoggingService.Log(ex, "Log.txt"); LoggingService.Log(BoundServerStats, "Log.txt"); } Mouse.OverrideCursor = Cursors.Arrow; }
public ServerStat GetServerStats(int serverid) { var con = new NpgsqlConnection(_dBConn); ServerStat serverstats = new ServerStat() { }; var cmd = new NpgsqlCommand("\"get_serverstats\"", con) { CommandType = System.Data.CommandType.StoredProcedure }; cmd.Parameters.Add(new NpgsqlParameter("serverid", NpgsqlTypes.NpgsqlDbType.Integer)); cmd.Parameters[0].Value = serverid; con.Open(); var reader = cmd.ExecuteReader(); while (reader.Read()) { serverstats = (new ServerStat() { Time = reader.GetFieldValue <DateTime>(0), ServerId = reader.GetFieldValue <int>(1), IpAddress = reader.GetFieldValue <string>(2), DiskUsage = reader.GetFieldValue <double>(3), DiskUsagePercent = reader.GetFieldValue <double>(4), CpuUsage = reader.GetFieldValue <double>(5), CpuUsagePercent = reader.GetFieldValue <double>(6), NetworkUsage = reader.GetFieldValue <double>(7), NetworkUsagePercent = reader.GetFieldValue <double>(8), MemoryUsage = reader.GetFieldValue <double>(9), MemoryUsagePercent = reader.GetFieldValue <double>(10), DiskData = reader.GetFieldValue <List <string> >(11) }); } con.Close(); con.Dispose(); return(serverstats); }
public void ServerStat_Parse_1() { ResponseBuilder builder = new ResponseBuilder(); builder.AppendAnsi("10093797\r\n3\r\n9\r\n*\r\n127.0.0.1\r\n" + "5555\r\nСервер ИРБИС\r\n*****\r\n*****\r\n" + "13.10.2017 22:50:40\r\n*****\r\n*****\r\n*****\r\n1\r\n" + "127.0.0.1\r\n5555\r\nandreevama\r\n424042\r\n" + "\"Каталогизатор\"\r\n08.11.2017 7:47:05\r\n" + "08.11.2017 14:57:32\r\nIRBIS_PREV_TRM\r\n140\r\n2\r\n" + "127.0.0.1\r\n5555\r\nАлексееваТВ\r\n714689\r\n" + "\"Каталогизатор\"\r\n08.11.2017 7:53:44\r\n" + "08.11.2017 15:07:18\r\nIRBIS_SVR_FORMAT\r\n1890\r\n3\r\n" + "127.0.0.1\r\n5555\r\nАлексееваТВ\r\n631372\r\n" + "\"Каталогизатор\"\r\n08.11.2017 7:54:06\r\n" + "08.11.2017 14:55:35\r\nIRBIS_NOOP\r\n169\r\n"); IrbisConnection connection = new IrbisConnection(); byte[] query = new byte[0]; byte[] answer = builder.Encode(); ServerResponse response = new ServerResponse ( connection, answer, query, true ); ServerStat stat = ServerStat.Parse(response); Assert.AreEqual(10093797, stat.TotalCommandCount); Assert.AreEqual(3, stat.ClientCount); Assert.AreEqual(9, stat.Unknown); Assert.IsNotNull(stat.RunningClients); Assert.AreEqual(4, stat.RunningClients.Length); Assert.AreEqual("Сервер ИРБИС", stat.RunningClients[0].Name); Assert.AreEqual("andreevama", stat.RunningClients[1].Name); Assert.AreEqual("\"Каталогизатор\"", stat.RunningClients[1].Workstation); Assert.AreEqual("IRBIS_PREV_TRM", stat.RunningClients[1].LastCommand); }
public ServerStat GetServerStat(string endpoint) { ServerStat serverStat; if (serverStatCache.TryGetItem(endpoint, out serverStat)) { return(serverStat); } DateTime? lastMatchDate; List <Match> matches = null; using (var connection = new SQLiteConnection(connectionString)) { connection.Open(); using (var transaction = connection.BeginTransaction()) { lastMatchDate = GetLastMatchDateTime(connection, transaction); if (lastMatchDate != null) { matches = GetMatchesForServerStat(endpoint, connection, transaction); } transaction.Commit(); } connection.Close(); } if (matches == null || matches.Count == 0) { return(new ServerStat()); } var firstMatchDateTime = matches.Min(i => i.Timestamp); var countDays = (lastMatchDate.Value.Date - firstMatchDateTime.Date).Days + 1; var totalMatchesPlayed = matches.Count; var maximumMatchesPerDay = matches.GroupBy(i => i.Timestamp.Date).Max(i => i.Count()); var averageMatchesPerDay = (decimal)totalMatchesPlayed / countDays; var maximumPopulation = matches.Max(i => i.Results.Population); var averagePopulation = (decimal)matches.Sum(i => i.Results.Population) / totalMatchesPlayed; var top5GameModes = matches.GroupBy(i => i.Results.GameMode) .OrderByDescending(i => i.Count()) .ThenBy(i => i.Key) .Take(5) .Select(i => i.Key).ToArray(); var top5Maps = matches.GroupBy(i => i.Results.Map) .OrderByDescending(i => i.Count()) .ThenBy(i => i.Key) .Take(5) .Select( i => i.Key).ToArray(); serverStat = new ServerStat(endpoint, totalMatchesPlayed, maximumMatchesPerDay, averageMatchesPerDay, maximumPopulation, averagePopulation, top5GameModes, top5Maps); serverStatCache.Insert(serverStat); return(serverStat); }
public AjaxResponse GetServerStatistic(List <Server> servers) { List <ServerDetails> serverdetails = new List <ServerDetails>(); ServerStat serverstatistics = new ServerStat(); AjaxResponse serverdata = new AjaxResponse(); int criticalErrorCount = 0; int diskErrorCount = 0; int warningErrorCount = 0; try { if (servers == null) { servers = DbHelper.Instance.GetServers(); } foreach (var serverinfo in servers) { Status status = new Status { }; switch (serverinfo.ServerType) { case "api": status.DbType = "/Content/api.png"; break; case "app": status.DbType = "/Content/tower.png"; break; case "web": status.DbType = "/Content/web.png"; break; case "db": status.DbType = "/Content/database.png"; break; case "pulse": status.DbType = "/Content/pulse.jpg"; break; case "beng": status.DbType = "/Content/processing.jpg"; break; case "bkp": status.DbType = "/Content/backup.jpg"; break; default: status.DbType = "/Content/database.png"; break; } ; serverstatistics = GetServerStats(serverinfo.Id); status.Errors = ""; if ((serverstatistics.MemoryUsagePercent < memoryWarningMinimum) && (serverstatistics.CpuUsagePercent < cpuWarningMinimum) == true) { status.Color = "green"; status.TextColor = "white"; status.Errors = ""; } if ((serverstatistics.MemoryUsagePercent > memoryWarningMinimum && serverstatistics.MemoryUsagePercent < memoryWarningMaximum) || (serverstatistics.CpuUsagePercent > cpuWarningMinimum && serverstatistics.CpuUsagePercent < cpuWarningMaximum) == true) { status.Color = "yellow"; status.TextColor = "black"; if (serverstatistics.MemoryUsagePercent > memoryWarningMinimum) { status.Errors += (string.IsNullOrEmpty(status.Errors) ? "" : ", ") + "Memory Warning"; } if (serverstatistics.CpuUsagePercent > cpuWarningMinimum) { status.Errors += (string.IsNullOrEmpty(status.Errors) ? "" : ", ") + "CPU Warning"; } warningErrorCount += 1; } if (DoesStatHaveDiskIssue(serverstatistics.DiskData)) { status.Color = "Orange"; status.TextColor = "black"; status.Errors += (string.IsNullOrEmpty(status.Errors) ? "" : ", ") + "Disk Space Issue"; diskErrorCount += 1; } if (serverstatistics.CpuUsagePercent > cpuCriticalMinimum || serverstatistics.MemoryUsagePercent > memoryCriticalMinimum) { status.Color = "red"; status.TextColor = "white"; if (serverstatistics.MemoryUsagePercent > memoryCriticalMinimum) { status.Errors += (string.IsNullOrEmpty(status.Errors) ? "" : ", ") + "Memory Critical"; } if (serverstatistics.CpuUsagePercent > cpuCriticalMinimum) { status.Errors += (string.IsNullOrEmpty(status.Errors) ? "" : ", ") + "CPU Critical"; } criticalErrorCount += 1; } if ((DateTime.Now - serverstatistics.Time).TotalMinutes > 10) { serverstatistics.TimeDisplayClass = "statsoldtime"; } else { serverstatistics.TimeDisplayClass = ""; } serverdetails.Add(new ServerDetails { ServerInfor = serverinfo, ServerStatistic = serverstatistics, Status = status }); } serverdata.Serverdetails = serverdetails; serverdata.CriticalErrorCount = criticalErrorCount; serverdata.DiskErrorCount = diskErrorCount; serverdata.WarningErrorCount = warningErrorCount; return(serverdata); } catch (Exception ex) { Console.Write(ex); return(new AjaxResponse() { }); } }
public static ServerStat GetServerStat(string json_string) { ServerStat temp = new ServerStat(); try { //string json_string = File.ReadAllText(SAPPRemote.MainWindow.SettingPath); if (Json.IsValid(json_string)) { var s = new JsonSerializerSettings(); s.NullValueHandling = NullValueHandling.Ignore; s.ObjectCreationHandling = ObjectCreationHandling.Replace; // without this, you end up with duplicates. temp = JsonConvert.DeserializeObject<ServerStat>(json_string, s); } else { } } catch (Exception) { } return temp; }