Ejemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public StatisticsDto GetStatistics()
        {
            return(UseConnection(ctx =>
            {
                var stats = new StatisticsDto();

                var countByStates = ctx.Job.Find(_ => _.StateName != null)
                                    .GroupBy(x => x.StateName)
                                    .Select(k => new { StateName = k.Key, Count = k.Count() })
                                    .AsEnumerable().ToDictionary(kv => kv.StateName, kv => kv.Count);

                int GetCountIfExists(string name) => countByStates.ContainsKey(name) ? countByStates[name] : 0;

                stats.Enqueued = GetCountIfExists(EnqueuedState.StateName);
                stats.Failed = GetCountIfExists(FailedState.StateName);
                stats.Processing = GetCountIfExists(ProcessingState.StateName);
                stats.Scheduled = GetCountIfExists(ScheduledState.StateName);
                stats.Servers = ctx.Server.Count();
                stats.Succeeded = GetCountIfExists(SucceededState.StateName);
                stats.Deleted = GetCountIfExists(DeletedState.StateName);
                stats.Recurring = ctx.StateDataSet.Count(_ => _.Key == "recurring-jobs");
                stats.Queues = _queueProviders
                               .SelectMany(x => x.GetJobQueueMonitoringApi(ctx).GetQueues())
                               .Count();

                return stats;
            }));
        }
Ejemplo n.º 2
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public StatisticsDto GetStatistics()
        {
            return(UseConnection(ctx =>
            {
                var stats = new StatisticsDto();

                var countByStates = ctx.Job.Find(_ => _.StateName != null)
                                    .GroupBy(x => x.StateName)
                                    .Select(k => new { StateName = k.Key, Count = k.Count() })
                                    .ToList().ToDictionary(kv => kv.StateName, kv => kv.Count);

                int GetCountIfExists(string name) => countByStates.ContainsKey(name) ? countByStates[name] : 0;

                stats.Enqueued = GetCountIfExists(EnqueuedState.StateName);
                stats.Failed = GetCountIfExists(FailedState.StateName);
                stats.Processing = GetCountIfExists(ProcessingState.StateName);
                stats.Scheduled = GetCountIfExists(ScheduledState.StateName);

                stats.Servers = ctx.Server.Count(Query.All());

                long[] succeededItems = ctx.StateDataCounter.Find(_ => _.Key == "stats:succeeded").ToList().Select(_ => (long)_.Value)
                                        .Concat(ctx.StateDataAggregatedCounter.Find(_ => _.Key == "stats:succeeded").ToList().Select(_ => (long)_.Value))
                                        .ToArray();

                stats.Succeeded = succeededItems.Any() ? succeededItems.Sum() : 0;

                long[] deletedItems = ctx.StateDataCounter.Find(_ => _.Key == "stats:deleted").ToList().Select(_ => (long)_.Value)
                                      .Concat(ctx.StateDataAggregatedCounter.Find(_ => _.Key == "stats:deleted").ToList().Select(_ => (long)_.Value))
                                      .ToArray();
                stats.Deleted = deletedItems.Any() ? deletedItems.Sum() : 0;

                stats.Recurring = ctx.StateDataSet.Count(Query.EQ("Key", "recurring-jobs"));

                stats.Queues = _queueProviders
                               .SelectMany(x => x.GetJobQueueMonitoringApi(ctx).GetQueues())
                               .Count();

                return stats;
            }));
        }