Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 4
0
        /// <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);
            }
        }
Esempio n. 5
0
        /// <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);
            }
        }
Esempio n. 6
0
        /// <summary>Initialises an instance of ServerStatistics</summary>
        public ServerStatistics()
        {
            InitializeComponent();

            ServerStat WindowServerStats = new ServerStat();

            StatsPanel.DataContext = WindowServerStats;
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        public void SetValidCpuOther()
        {
            ServerStat stats = new ServerStat();


            stats.CpuOther = 100;

            Assert.AreEqual(uint.Parse("100"), stats.CpuOther);
        }
Esempio n. 9
0
        public void SetValidMemoryUtilization()
        {
            ServerStat stats = new ServerStat();


            stats.MemoryUtilization = 100;

            Assert.AreEqual(uint.Parse("100"), stats.MemoryUtilization);
        }
Esempio n. 10
0
 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
         });
     }
 }
Esempio n. 11
0
 /// <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()
         });
     }
 }
Esempio n. 12
0
        /// <inheritdoc cref="AbstractCommand.Execute" />
        public override ServerResponse Execute
        (
            ClientQuery query
        )
        {
            ServerResponse response = base.Execute(query);

            response.GetReturnCode();
            Result = ServerStat.Parse(response);

            return(response);
        }
Esempio n. 13
0
        public void SetInvalidmemoryUtilization()
        {
            ServerStat stats = new ServerStat();

            try
            {
                stats.MemoryUtilization = 101;
            }
            catch (Exception ex)
            {
                Assert.AreEqual("MemoryUtilization cannot be above 100", ex.Message);
                throw;
            }
        }
Esempio n. 14
0
        public void SetInvalidCpuSql()
        {
            ServerStat stats = new ServerStat();

            try
            {
                stats.CpuSql = 101;
            }
            catch (Exception ex)
            {
                Assert.AreEqual("CpuSql cannot be above 100", ex.Message);
                throw;
            }
        }
Esempio n. 15
0
        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());
        }
Esempio n. 16
0
        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);
        }
Esempio n. 17
0
        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 {
                });
            }
        }
Esempio n. 18
0
        /// <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;
        }
Esempio n. 19
0
        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);
        }
Esempio n. 20
0
        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);
        }
Esempio n. 21
0
        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);
        }
Esempio n. 22
0
        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()
                {
                });
            }
        }
Esempio n. 23
0
        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;
        }