Exemple #1
0
        public void TestStats()
        {
            testName = "TestStats";
            testHome = testFixtureHome + "/" + testName;
            string dbFileName = testHome + "/" +
                                testName + ".db";

            Configuration.ClearDir(testHome);

            QueueDatabaseConfig dbConfig =
                new QueueDatabaseConfig();

            ConfigCase1(dbConfig);
            QueueDatabase db = QueueDatabase.Open(dbFileName, dbConfig);

            QueueStats stats = db.Stats();

            ConfirmStatsPart1Case1(stats);
            db.PrintFastStats(true);

            // Put 500 records into the database.
            PutRecordCase1(db, null);

            stats = db.Stats();
            ConfirmStatsPart2Case1(stats);
            db.PrintFastStats();

            db.Close();
        }
Exemple #2
0
        public QueueStats GetStatistics()
        {
            var now = DateTime.UtcNow;
            var itemsProcessedInTotal = Interlocked.Read(ref _totalItemsProcessed);

            lock (_statisticsLock)
            {
                var itemProcessedInLastRun  = (itemsProcessedInTotal - _lastProcessed);
                var elapsedAllTimeInLastRun = _allTime.ElapsedMilliseconds - _lastAllTime;
                var stats = new QueueStats(
                    _name,
                    _queue.Count,
                    elapsedAllTimeInLastRun == 0 ? 0 : (int)((1000 * itemProcessedInLastRun) / elapsedAllTimeInLastRun),
                    itemProcessedInLastRun == 0  ? 0 : (float)(_processingTime.ElapsedMilliseconds - _lastProcessingTime) / itemProcessedInLastRun,
                    elapsedAllTimeInLastRun == 0 ? 0 : 100.0f * (_idleTime.ElapsedMilliseconds - _lastIdleTime) / elapsedAllTimeInLastRun,
                    now - _currentItemProcessingStarted,
                    now - _idleTimeStarted,
                    itemsProcessedInTotal,
                    _lengthCurrentTryPeak,
                    _lengthLifetimePeak,
                    _lastProcessedMsgType,
                    _inProgressMsgType);

                _lastProcessingTime = _processingTime.ElapsedMilliseconds;
                _lastIdleTime       = _idleTime.ElapsedMilliseconds;
                _lastAllTime        = _allTime.ElapsedMilliseconds;
                _lastProcessed      = itemsProcessedInTotal;

                _lengthCurrentTryPeak = 0;
                return(stats);
            }
        }
Exemple #3
0
        public void TestStats()
        {
            testName = "TestStats";
            SetUpTest(true);
            string dbFileName = testHome + "/" +
                                testName + ".db";

            QueueDatabaseConfig dbConfig =
                new QueueDatabaseConfig();

            ConfigCase1(dbConfig);
            QueueDatabase db = QueueDatabase.Open(dbFileName, dbConfig);

            QueueStats stats = db.Stats();

            ConfirmStatsPart1Case1(stats);
            db.Msgfile = testHome + "/" + testName + ".log";
            db.PrintFastStats(true);

            // Put 500 records into the database.
            PutRecordCase1(db, null);

            stats = db.Stats();
            ConfirmStatsPart2Case1(stats);
            db.PrintFastStats();

            db.Close();
        }
Exemple #4
0
 public void ConfirmStatsPart2Case1(QueueStats stats)
 {
     Assert.AreNotEqual(0, stats.DataPages);
     Assert.AreEqual(0, stats.DataPagesBytesFree);
     Assert.AreEqual(0, stats.MetadataFlags);
     Assert.AreEqual(100, stats.nData);
     Assert.AreEqual(100, stats.nKeys);
 }
Exemple #5
0
 public void ConfirmStatsPart1Case1(QueueStats stats)
 {
     Assert.AreEqual(1, stats.FirstRecordNumber);
     Assert.AreNotEqual(0, stats.MagicNumber);
     Assert.AreEqual(1, stats.NextRecordNumber);
     Assert.AreEqual(4096, stats.PageSize);
     Assert.AreEqual(1024, stats.PagesPerExtent);
     Assert.AreEqual(4000, stats.RecordLength);
     Assert.AreEqual(32, stats.RecordPadByte);
     Assert.AreEqual(4, stats.Version);
 }
 private static QueueStats MergeQueueStats(QueueStats a, QueueStats b)
 {
     return(new QueueStats
     {
         Deaths = a.Deaths + b.Deaths,
         Kills = a.Kills + b.Kills,
         MatchesLost = a.MatchesLost + b.MatchesLost,
         MatchesWon = a.MatchesWon + b.MatchesWon,
         TimePlayed = a.TimePlayed + b.TimePlayed
     });
 }
Exemple #7
0
 private static QueueStats CalculateQueueStatsDelta(QueueStats a, QueueStats b)
 {
     return(new QueueStats
     {
         Deaths = b.Deaths - a.Deaths,
         Kills = b.Kills - a.Kills,
         TimePlayed = b.TimePlayed - a.TimePlayed,
         MatchesLost = b.MatchesLost - a.MatchesLost,
         MatchesWon = b.MatchesWon - a.MatchesWon
     });
 }
Exemple #8
0
 public BrokerQueueChurnMetricsImpl(MessageStats messageStats, QueueStats queueStats)
 {
     Incoming            = new QueueDepthImpl(messageStats.TotalMessagesPublished, messageStats.MessagesPublishedDetails?.Value ?? 0);
     NotRouted           = new QueueDepthImpl(messageStats.TotalUnroutableMessages, messageStats.UnroutableMessagesDetails?.Value ?? 0);
     Gets                = new QueueDepthImpl(messageStats.TotalMessageGets, messageStats.MessageGetDetails?.Value ?? 0);
     GetsWithoutAck      = new QueueDepthImpl(messageStats.TotalMessageGetsWithoutAck, messageStats.MessageGetsWithoutAckDetails?.Value ?? 0);
     DeliveredGets       = new QueueDepthImpl(messageStats.TotalMessageDeliveryGets, messageStats.MessageDeliveryGetDetails?.Value ?? 0);
     Delivered           = new QueueDepthImpl(messageStats.TotalMessagesDelivered, messageStats.MessageDeliveryDetails?.Value ?? 0);
     DeliveredWithoutAck = new QueueDepthImpl(messageStats.TotalMessageDeliveredWithoutAck, messageStats.MessagesDeliveredWithoutAckDetails?.Value ?? 0);
     Redelivered         = new QueueDepthImpl(messageStats.TotalMessagesRedelivered, messageStats.MessagesRedeliveredDetails?.Value ?? 0);
     Acknowledged        = new QueueDepthImpl(messageStats.TotalMessagesAcknowledged, messageStats.MessagesAcknowledgedDetails?.Value ?? 0);
     Broker              = new QueueDepthImpl(queueStats.TotalMessages, queueStats.MessageDetails?.Value ?? 0);
     Ready               = new QueueDepthImpl(queueStats.TotalMessagesReadyForDelivery, queueStats.MessagesReadyForDeliveryDetails?.Value ?? 0);
     Unacknowledged      = new QueueDepthImpl(queueStats.TotalUnacknowledgedDeliveredMessages, queueStats.UnacknowledgedDeliveredMessagesDetails?.Value ?? 0);
 }
Exemple #9
0
        public async Task OnSubscribedAsync(string queueName, ReferenceWrapper subscriber, string messageTypeName)
        {
            var onSubscribed = Subscribed;

            if (onSubscribed != null)
            {
                await onSubscribed.Invoke(queueName, subscriber, messageTypeName);
            }

            var stats = new QueueStats
            {
                QueueName   = queueName,
                ServiceName = subscriber.Name
            };

            _stats.TryAdd(queueName, stats);
        }
Exemple #10
0
        public QueueStats GetStatistics(int currentQueueLength)
        {
            lock (_statisticsLock) {
                var totalTime     = _totalTimeWatch.Elapsed;
                var totalIdleTime = _totalIdleWatch.Elapsed;
                var totalBusyTime = _totalBusyWatch.Elapsed;
                var totalItems    = Interlocked.Read(ref _totalItems);

                var lastRunMs         = totalTime - _lastTotalTime;
                var lastItems         = totalItems - _lastTotalItems;
                var avgItemsPerSecond = lastRunMs.Ticks != 0
                                        ? (int)(TimeSpan.TicksPerSecond * lastItems / lastRunMs.Ticks)
                                        : 0;
                var avgProcessingTime =
                    lastItems != 0 ? (totalBusyTime - _lastTotalBusyTime).TotalMilliseconds / lastItems : 0;
                var idleTimePercent = Math.Min(100.0,
                                               lastRunMs.Ticks != 0 ? 100.0 * (totalIdleTime - _lastTotalIdleTime).Ticks / lastRunMs.Ticks : 100);

                var stats = new QueueStats(
                    Name,
                    GroupName,
                    currentQueueLength,
                    avgItemsPerSecond,
                    avgProcessingTime,
                    idleTimePercent,
                    _busyWatch.IsRunning ? _busyWatch.Elapsed : (TimeSpan?)null,
                    _idleWatch.IsRunning ? _idleWatch.Elapsed : (TimeSpan?)null,
                    totalItems,
                    _currentQueueLengthPeak,
                    _lifetimeQueueLengthPeak,
                    _lastProcessedMsgType,
                    _inProgressMsgType);

                if (totalTime - _lastTotalTime >= MinRefreshPeriod)
                {
                    _lastTotalTime     = totalTime;
                    _lastTotalIdleTime = totalIdleTime;
                    _lastTotalBusyTime = totalBusyTime;
                    _lastTotalItems    = totalItems;

                    _currentQueueLengthPeak = 0;
                }

                return(stats);
            }
        }
Exemple #11
0
        private void timerMemoryRead_Tick(object sender, EventArgs e)
        {
            try
            {
                if (settings.PauseFocus)
                {
                    if (GetForegroundWindow() == hWnd_wow)
                    {
                        paused = true;
                        this.panel_inner.Enabled = false;
                    }
                    else
                    {
                        paused = false;
                        this.panel_inner.Enabled = true;
                    }
                }

                if (!paused)
                {
                    NumActiveQueues = getkNumActiveQueues();

                    PveQueueReadyStatus = QueueStats.getLfgProposal();

                    lfdQueue = QueueStats.getLfgQueueStats(1);
                    lfrQueue = QueueStats.getLfgQueueStats(3);
                    bg1Queue = QueueStats.getBgQeueStats(1);
                    bg2Queue = QueueStats.getBgQeueStats(2);

                    LfdQueueStatus  = lfdQueue.LfgDungeonsId;
                    LfrQueueStatus  = lfrQueue.LfgDungeonsId;
                    Pvp1QueueStatus = bg1Queue.status;
                    Pvp2QueueStatus = bg2Queue.status;
                }
            }
            catch (Exception ep)
            {
                //Hm - I think I broke something as this keeps erroring whenever I get a LFGProposal - It's silly to exit the
                //app on a non-fatal error though, so I disabled it.

                //MessageBox.Show(String.Format("Unexpected Error: {0}", ep.InnerException), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Exemple #12
0
        public QueueStats GetStatistics()
        {
            lock (_statisticsLock)
            {
                var totalTime     = _totalTimeWatch.Elapsed;
                var totalIdleTime = _totalIdleWatch.Elapsed;
                var totalBusyTime = _totalBusyWatch.Elapsed;
                var totalItems    = Interlocked.Read(ref _totalItems);
                var totalSkipped  = Interlocked.Read(ref _totalSkipped);

                var lastRunMs         = (long)(totalTime - _lastTotalTime).TotalMilliseconds;
                var lastItems         = totalItems - _lastTotalItems;
                var avgItemsPerSecond = lastRunMs != 0 ? (int)(1000 * lastItems / lastRunMs) : 0;
                var avgProcessingTime = lastItems != 0 ? (totalBusyTime - _lastTotalBusyTime).TotalMilliseconds / lastItems : 0;
                var idleTimePercent   = lastRunMs != 0 ? 100.0 * (totalIdleTime - _lastTotalIdleTime).TotalMilliseconds / lastRunMs : 0;

                var stats = new QueueStats(
                    _name,
                    _queue.Count,
                    avgItemsPerSecond,
                    avgProcessingTime,
                    idleTimePercent,
                    _busyWatch.IsRunning ? _busyWatch.Elapsed : (TimeSpan?)null,
                    _idleWatch.IsRunning ? _idleWatch.Elapsed : (TimeSpan?)null,
                    totalItems,
                    _currentQueueLengthPeak,
                    _lifetimeQueueLengthPeak,
                    _lastProcessedMsgType,
                    _inProgressMsgType,
                    totalSkipped,
                    _totalSkipped - _lastTotalSkipped);

                _lastTotalTime     = totalTime;
                _lastTotalIdleTime = totalIdleTime;
                _lastTotalBusyTime = totalBusyTime;
                _lastTotalItems    = totalItems;
                _lastTotalSkipped  = totalSkipped;

                _currentQueueLengthPeak = 0;
                return(stats);
            }
        }
Exemple #13
0
        /// <summary>
        /// Creates the data queues.
        /// </summary>
        private void CreateQueues()
        {
            maxQueueSize = Math.Max(exporterConfig.GeneralOptions.MaxQueueSize, MinQueueSize);

            if (triggers.CurDataTriggers.Count > 0)
            {
                curDataQueue = new Queue <QueueItem <SrezTableLight.Srez> >(maxQueueSize);
                curDataStats = new QueueStats();
            }
            else
            {
                curDataQueue = null;
                curDataStats = null;
            }

            if (triggers.ArcDataTriggers.Count > 0)
            {
                arcDataQueue = new Queue <QueueItem <SrezTableLight.Srez> >(maxQueueSize);
                arcDataStats = new QueueStats();
            }
            else
            {
                arcDataQueue = null;
                arcDataStats = null;
            }

            if (triggers.EventTriggers.Count > 0)
            {
                eventQueue = new Queue <QueueItem <EventTableLight.Event> >(maxQueueSize);
                eventStats = new QueueStats();
            }
            else
            {
                eventQueue = null;
                eventStats = null;
            }
        }