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(); }
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); } }
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(); }
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); }
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 }); }
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 }); }
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); }
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); }
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); } }
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); } }
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); } }
/// <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; } }