Пример #1
0
        private void DoDispatch(AggregateGroup group, Action<Dictionary<AggregateKey, AggregateResult>> callback)
        {
            Dictionary<AggregateKey, AggregateResult> result = null;
            if (group != null)
            {
                result = group.MergeResult();
                if (result != null)
                {
                    if (group.AggregateType == AggregateType.Count)
                        LogCount(group, result);
                    else if (group.AggregateType == AggregateType.Histogram)
                        LogHistogram(group, result);
                }
            }

            if (callback != null)
            {
                try
                {
                    callback(result);
                }
                catch
                { }
            }
        }
Пример #2
0
        public void AggregateGroup_Test1()
        {

            DateTime dateTime = DateTime.Now;

            AggregateGroup group2 = new AggregateGroup("Histogramtest", AggregateType.Histogram, dateTime);

            System.Collections.Generic.Dictionary<string, string> tag = new System.Collections.Generic.Dictionary<string, string>();
            AggregateKey key = new AggregateKey("", "count", tag, AggregateType.Histogram);
            group2.PutDouble(key, 2);

            Dictionary<AggregateKey, AggregateResult> result = group2.MergeResult();

            Assert.AreEqual(result.Count, 1);
            Assert.AreEqual((int)result[key].Avg, 2);
            Assert.AreEqual((int)result[key].Count, 1);
            Assert.AreEqual((int)result[key].Max, 2);
            Assert.AreEqual((int)result[key].Min, 2);
            Assert.AreEqual((int)result[key].Sum, 2);

            Assert.AreEqual(group2.AggregateType, AggregateType.Histogram);
            Assert.AreEqual(group2.CycleTime, dateTime);
            Assert.AreEqual(group2.FullName, "Histogramtest");

            result = group2.MergeResult();
        }
Пример #3
0
        public void AggregateGroup_Test()
        {

            DateTime dateTime = DateTime.Now;

            AggregateGroup group1 = new AggregateGroup("Counttest", AggregateType.Count, dateTime);
            System.Collections.Generic.Dictionary<string, string> tag = new System.Collections.Generic.Dictionary<string, string>();
            AggregateKey key = new AggregateKey("", "count", tag, AggregateType.Count);
            group1.PutDouble(key, 122);

            Dictionary<AggregateKey, AggregateResult> result = group1.MergeResult();

            Assert.IsTrue(group1.HasMerged);

            Assert.AreEqual(result.Count, 1);
            Assert.AreEqual((int)result[key].Avg, 122);
            Assert.AreEqual((int)result[key].Count, 1);
            Assert.AreEqual((int)result[key].Max, 122);
            Assert.AreEqual((int)result[key].Min, 122);
            Assert.AreEqual((int)result[key].Sum, 122);
        }
Пример #4
0
 private void LogHistogram(AggregateGroup group, Dictionary<AggregateKey, AggregateResult> result)
 {
     foreach (var item in result)
     {
         var tags = item.Key.Tags;
         tags[TagNames.AggregateType] = "max";
         logger.log(group.FullName, item.Value.Max, tags, group.CycleTime);
         tags[TagNames.AggregateType] = "min";
         logger.log(group.FullName, item.Value.Min, tags, group.CycleTime);
         tags[TagNames.AggregateType] = "sum";
         logger.log(group.FullName, item.Value.Sum, tags, group.CycleTime);
         tags[TagNames.AggregateType] = "count";
         logger.log(group.FullName, item.Value.Count, tags, group.CycleTime);
         tags.Remove(TagNames.AggregateType);
     }
 }
Пример #5
0
 private void LogCount(AggregateGroup group, Dictionary<AggregateKey, AggregateResult> result)
 {
     foreach (var item in result)
         logger.log(group.FullName, item.Value.Sum, item.Key.Tags, group.CycleTime);
 }