コード例 #1
0
        private static IEnumerable <Value> MeterValues(MeterValue meter, Unit unit, TimeUnit rateUnit)
        {
            yield return(new Value("Count", meter.Count));

            yield return(new Value("Mean Rate", meter.MeanRate));

            yield return(new Value("One Minute Rate", meter.OneMinuteRate));

            yield return(new Value("Five Minute Rate", meter.FiveMinuteRate));

            yield return(new Value("Fifteen Minute Rate", meter.FifteenMinuteRate));

            if (!string.IsNullOrEmpty(unit.Name))
            {
                yield return(new Value("Rate Unit", $"{unit.Name}/{rateUnit.Unit()}"));
            }
        }
コード例 #2
0
        public IEnumerable <MeterValueSource> SetupMeters()
        {
            var meterValue = new MeterValue(
                5,
                1,
                2,
                3,
                4,
                TimeUnit.Seconds,
                new[]
            {
                new MeterValue.SetItem("item", 0.5, new MeterValue(1, 2, 3, 4, 5, TimeUnit.Seconds, new MeterValue.SetItem[0]))
            });
            var meter = new MeterValueSource("test2", ConstantValue.Provider(meterValue), Unit.Calls, TimeUnit.Seconds, Tags);

            return(new[] { meter });
        }
コード例 #3
0
        public TimerValueSource ToValueSource()
        {
            var rateUnit     = TimeUnitExtensions.FromUnit(this.RateUnit);
            var durationUnit = TimeUnitExtensions.FromUnit(this.DurationUnit);

            var rateValue      = new MeterValue(this.Count, this.Rate.MeanRate, this.Rate.OneMinuteRate, this.Rate.FiveMinuteRate, this.Rate.FifteenMinuteRate, rateUnit);
            var histogramValue = new HistogramValue(this.Count,
                                                    this.Histogram.LastValue, this.Histogram.LastUserValue,
                                                    this.Histogram.Max, this.Histogram.MaxUserValue, this.Histogram.Mean,
                                                    this.Histogram.Min, this.Histogram.MinUserValue, this.Histogram.StdDev, this.Histogram.Median,
                                                    this.Histogram.Percentile75, this.Histogram.Percentile95, this.Histogram.Percentile98,
                                                    this.Histogram.Percentile99, this.Histogram.Percentile999, this.Histogram.SampleSize);

            var timerValue = new TimerValue(rateValue, histogramValue, this.ActiveSessions, durationUnit);

            return(new TimerValueSource(this.Name, ConstantValue.Provider(timerValue), this.Unit, rateUnit, durationUnit, this.Tags));
        }
コード例 #4
0
        protected override void ReportMeter(string name, MeterValue value, Unit unit, TimeUnit rateUnit, MetricTags tags)
        {
            Send(SubfolderName(name, unit, "Total"), value.Count);
            Send(SubfolderName(name, AsRate(unit, rateUnit), "Rate-Mean"), value.MeanRate);
            Send(SubfolderName(name, AsRate(unit, rateUnit), "Rate-1-min"), value.OneMinuteRate);
            Send(SubfolderName(name, AsRate(unit, rateUnit), "Rate-5-min"), value.FiveMinuteRate);
            Send(SubfolderName(name, AsRate(unit, rateUnit), "Rate-15-min"), value.FifteenMinuteRate);

            foreach (var item in value.Items)
            {
                Send(SubfolderName(name, unit, item.Item, "Count"), item.Value.Count);
                Send(SubfolderName(name, unit, item.Item, "Percent"), item.Percent);
                Send(SubfolderName(name, AsRate(unit, rateUnit), item.Item, "Rate-Mean"), item.Value.MeanRate);
                Send(SubfolderName(name, AsRate(unit, rateUnit), item.Item, "Rate-1-min"), item.Value.OneMinuteRate);
                Send(SubfolderName(name, AsRate(unit, rateUnit), item.Item, "Rate-5-min"), item.Value.FiveMinuteRate);
                Send(SubfolderName(name, AsRate(unit, rateUnit), item.Item, "Rate-15-min"), item.Value.FifteenMinuteRate);
            }
        }
コード例 #5
0
        protected override void ReportMeter(string name, MeterValue value, Unit unit, TimeUnit rateUnit, MetricTags tags)
        {
            this.WriteMetricName(name);
            this.WriteMeter(value, unit, rateUnit);

            if (value.Items.Length > 0)
            {
                WriteValue("Total Items", value.Items.Length.ToString());
            }
            for (int i = 0; i < value.Items.Length; i++)
            {
                var key = "Item " + i.ToString();
                var item = value.Items[i];
                var val = string.Format("{0:00.00}% {1,5} {2} [{3}]", item.Percent, item.Value.Count, unit.Name, item.Item);
                WriteValue(key, val);
                WriteMeter(item.Value, unit, rateUnit);
            }
        }
コード例 #6
0
        protected override void ReportMeter(string name, MeterValue value, Unit unit, TimeUnit rateUnit)
        {
            this.WriteMetricName(name);
            this.WriteMeter(value.Scale(rateUnit), unit, rateUnit);

            if (value.Items.Length > 0)
            {
                WriteValue("Total Items", value.Items.Length.ToString());
            }
            for (int i = 0; i < value.Items.Length; i++)
            {
                var key  = "Item " + i.ToString();
                var item = value.Items[i];
                var val  = string.Format("{0:00.00}% {1,5} {2} [{3}]", item.Percent, item.Value.Count, unit.Name, item.Item);
                WriteValue(key, val);
                WriteMeter(item.Value, unit, rateUnit);
            }
        }
コード例 #7
0
        protected override void ReportMeter(string name, MeterValue value, Unit unit, TimeUnit rateUnit, MetricTags tags)
        {
            this.WriteMetricName(name);
            this.WriteMeter(value, unit, rateUnit);

            if (value.Items.Length > 0)
            {
                WriteValue("Total Items", value.Items.Length.ToString());
            }
            for (int i = 0; i < value.Items.Length; i++)
            {
                var key  = "Item " + i.ToString();
                var item = value.Items[i];
                var val  = $"{item.Percent:00.00}% {item.Value.Count,5} {unit.Name} [{item.Item}]";
                WriteValue(key, val);
                WriteMeter(item.Value, unit, rateUnit);
            }
        }
コード例 #8
0
        public void can_hummanize_timer()
        {
            var expected =
                "\r\n\r\n   Active Sessions = 0\r\n        Total Time = 0.00 ms\r\n             Count = 5 Requests\r\n        Mean Value = 1.00 Requests/s\r\n     1 Minute Rate = 2.00 Requests/s\r\n     5 Minute Rate = 3.00 Requests/s\r\n    15 Minute Rate = 4.00 Requests/s\r\n       Total Items = 1\r\n            Item 0 = 00.50%     1 Requests [item]\r\n             Count = 1 Requests\r\n        Mean Value = 2.00 Requests/s\r\n     1 Minute Rate = 3.00 Requests/s\r\n     5 Minute Rate = 4.00 Requests/s\r\n    15 Minute Rate = 5.00 Requests/s\r\n\r\n             Count = 5 Requests\r\n              Last = 0.00 Requests\r\n   Last User Value = 3\r\n               Min = 0.00 Requests\r\n    Min User Value = 8\r\n               Max = 0.00 Requests\r\n    Max User Value = 5\r\n              Mean = 0.00 Requests\r\n            StdDev = 0.00 Requests\r\n            Median = 0.00 Requests\r\n              75% <= 0.00 Requests\r\n              95% <= 0.00 Requests\r\n              98% <= 0.00 Requests\r\n              99% <= 0.00 Requests\r\n            99.9% <= 0.00 Requests\r\n";
            const int count = 5;

            var meterValue = new MeterValue(count, 1, 2, 3, 4, TimeUnit.Seconds, new[]
            {
                new MeterValue.SetItem("item", 0.5, new MeterValue(1, 2, 3, 4, 5, TimeUnit.Seconds, new MeterValue.SetItem[0]))
            });
            var histogramValue = new HistogramValue(count, 2, "3", 4, "5", 6, 7, "8", 9, 10, 11, 12, 13, 14, 15, 16);

            var timerValue       = new TimerValue(meterValue, histogramValue, 0, 1, TimeUnit.Nanoseconds);
            var timerValueSource = new TimerValueSource("test_timer", ConstantValue.Provider(timerValue), Unit.Requests, TimeUnit.Seconds,
                                                        TimeUnit.Milliseconds, MetricTags.None);
            var result = timerValueSource.Hummanize();

            Assert.Equal(result, expected);
        }
コード例 #9
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="name"></param>
 /// <param name="value"></param>
 /// <param name="unit"></param>
 /// <param name="rateUnit"></param>
 /// <param name="tags"></param>
 protected override void ReportMeter(
     string name,
     MeterValue value,
     Unit unit,
     TimeUnit rateUnit,
     MetricTags tags)
 {
     // Metrics.NET counters can be decremented, but Prometheus' are expected to be monotonically increasing,
     // so this maps to a Prometheus gauge.
     if (_config.OutputSetItems && value.Items?.Length > 0)
     {
         var setItems = value.Items.Select(item => new SetItem(item.Item, item.Value?.Count ?? 0));
         WriteLongMetricSet("gauge", name, setItems, unit, tags);
     }
     else
     {
         WriteLongMetric("gauge", name, value.Count, unit, tags);
     }
 }
コード例 #10
0
        public static TimerValueSource FromSerializableMetric(this TimerMetric source)
        {
            var rateUnit     = source.RateUnit.FromUnit();
            var durationUnit = source.DurationUnit.FromUnit();

            var rateValue = new MeterValue(
                source.Count,
                source.Rate.MeanRate,
                source.Rate.OneMinuteRate,
                source.Rate.FiveMinuteRate,
                source.Rate.FifteenMinuteRate,
                rateUnit);

            var histogramValue = new HistogramValue(
                source.Count,
                source.Histogram.Sum,
                source.Histogram.LastValue,
                source.Histogram.LastUserValue,
                source.Histogram.Max,
                source.Histogram.MaxUserValue,
                source.Histogram.Mean,
                source.Histogram.Min,
                source.Histogram.MinUserValue,
                source.Histogram.StdDev,
                source.Histogram.Median,
                source.Histogram.Percentile75,
                source.Histogram.Percentile95,
                source.Histogram.Percentile98,
                source.Histogram.Percentile99,
                source.Histogram.Percentile999,
                source.Histogram.SampleSize);

            var timerValue = new TimerValue(rateValue, histogramValue, source.ActiveSessions, durationUnit);

            return(new TimerValueSource(
                       source.Name,
                       ConstantValue.Provider(timerValue),
                       source.Unit,
                       rateUnit,
                       durationUnit,
                       source.Tags.FromDictionary()));
        }
コード例 #11
0
        private void ReportMeter(MeterValueSource g)
        {
            string     name     = g.Name;
            MeterValue value    = GetMetricValueSourceValue <MeterValue>(g.ValueProvider);
            Unit       unit     = g.Unit;
            TimeUnit   rateUnit = g.RateUnit;

            var itemColumns = value.Items.SelectMany(i => new[]
            {
                i.Item + " - Count",
                i.Item + " - Unit Count",
                i.Item + " - Percent",
                i.Item + " - Mean Rate",
                i.Item + " - 1 Min Rate",
                i.Item + " - 5 Min Rate",
                i.Item + " - 15 Min Rate"
            });
            var columns = MeterColumns.Concat(itemColumns);

            var itemValues = value.Items.SelectMany(i => new object[]
            {
                i.Value.Count,
                i.Value.UnitCount,
                i.Percent,
                i.Value.MeanRate,
                i.Value.OneMinuteRate,
                i.Value.FiveMinuteRate,
                i.Value.FifteenMinuteRate
            });

            var data = new object[]
            {
                value.Count,
                value.UnitCount,
                value.MeanRate,
                value.OneMinuteRate,
                value.FiveMinuteRate,
                value.FifteenMinuteRate
            }.Concat(itemValues);

            Pack(name, columns, data, g.Tags);
        }
コード例 #12
0
        protected override void ReportMeter(string name, MeterValue value, Unit unit, TimeUnit rateUnit, MetricTags tags)
        {
            var itemProperties = value.Items.SelectMany(i => new[]
            {
                new JsonProperty(i.Item + " - Count", i.Value.Count),
                new JsonProperty(i.Item + " - Percent", i.Percent),
                new JsonProperty(i.Item + " - Mean Rate", i.Value.MeanRate),
                new JsonProperty(i.Item + " - 1 Min Rate", i.Value.OneMinuteRate),
                new JsonProperty(i.Item + " - 5 Min Rate", i.Value.FiveMinuteRate),
                new JsonProperty(i.Item + " - 15 Min Rate", i.Value.FifteenMinuteRate)
            });

            Pack("Meter", name, unit, tags, new[] {
                new JsonProperty("Count", value.Count),
                new JsonProperty("Mean Rate", value.MeanRate),
                new JsonProperty("1 Min Rate", value.OneMinuteRate),
                new JsonProperty("5 Min Rate", value.FiveMinuteRate),
                new JsonProperty("15 Min Rate", value.FifteenMinuteRate)
            }.Concat(itemProperties));
        }
コード例 #13
0
        public void meter_can_use_custom_data_keys_and_should_provide_corresponding_values()
        {
            // Arrange
            var value    = new MeterValue(1, 2, 3, 4, 5, TimeUnit.Seconds);
            var dataKeys = new MetricValueDataKeys(
                meter: new Dictionary <MeterValueDataKeys, string>
            {
                { MeterValueDataKeys.Rate1M, "1_min_rate" },
                { MeterValueDataKeys.RateMean, "mean_rate" }
            });

            // Act
            value.AddMeterValues(out IDictionary <string, object> data, dataKeys.Meter);

            // Assert
            data.ContainsKey(DataKeys.Meter[MeterValueDataKeys.RateMean]).Should().BeFalse();
            data["mean_rate"].Should().Be(2.0);
            data.ContainsKey(DataKeys.Meter[MeterValueDataKeys.Rate1M]).Should().BeFalse();
            data["1_min_rate"].Should().Be(3.0);
        }
コード例 #14
0
        /// <summary>
        /// Report Meters as a single metric for the value, plus individual rate metrics
        /// in case the Ops team wants to report or alert on specific subvalues.
        /// </summary>
        protected override void ReportMeter(string name, MeterValue value, Unit unit, TimeUnit rateUnit, MetricTags tags)
        {
            if (tags.Tags.Contains(DoNotReport))
            {
                return;
            }

            var props = new Dictionary <string, string>();

            props["Unit"]     = unit.Name;
            props["RateUnit"] = Enum.GetName(typeof(TimeUnit), rateUnit);;
            if (tags.Tags != null && tags.Tags.Length > 0)
            {
                props["Tags"] = String.Join(",", tags.Tags);
            }

            props["Name"]  = name + " {MeanRate}";
            props["Value"] = unit.FormatRate(value.MeanRate, rateUnit);
            Client.TrackMetric(props["Name"], value.MeanRate, props);

            props["Name"]  = name + " {OneMinuteRate}";
            props["Value"] = unit.FormatRate(value.OneMinuteRate, rateUnit);
            Client.TrackMetric(props["Name"], value.OneMinuteRate, props);

            props["Name"]  = name + " {FiveMinuteRate}";
            props["Value"] = unit.FormatRate(value.FiveMinuteRate, rateUnit);
            Client.TrackMetric(props["Name"], value.FiveMinuteRate, props);

            props["Name"]  = name + " {FifteenMinuteRate}";
            props["Value"] = unit.FormatRate(value.FifteenMinuteRate, rateUnit);
            Client.TrackMetric(props["Name"], value.FifteenMinuteRate, props);

            props["Name"]              = name;
            props["Value"]             = unit.FormatCount(value.Count);
            props["MeanRate"]          = unit.FormatRate(value.MeanRate, rateUnit);
            props["OneMinuteRate"]     = unit.FormatRate(value.OneMinuteRate, rateUnit);
            props["FiveMinuteRate"]    = unit.FormatRate(value.FiveMinuteRate, rateUnit);
            props["FifteenMinuteRate"] = unit.FormatRate(value.FifteenMinuteRate, rateUnit);

            Client.TrackMetric(name, value.Count, props);
        }
コード例 #15
0
ファイル: RavenDB-5686.cs プロジェクト: radtek/ravendb
        public void CanSerializeAndDeserializeMeterValue()
        {
            var meter = new MeterValue("name", 1, 2.0, 3.0, 4.0, 15.0);

            using (var store = GetDocumentStore())
            {
                using (var session = store.OpenSession())
                {
                    var json   = DocumentConventions.Default.Serialization.DefaultConverter.ToBlittable(meter, session.Advanced.Context);
                    var parsed = (MeterValue)session.Advanced.JsonConverter.FromBlittable(typeof(MeterValue), ref json, "meter", trackEntity: true);

                    Assert.Equal(meter.Name, parsed.Name);

                    Assert.Equal(meter.Count, parsed.Count);
                    Assert.Equal(meter.MeanRate, parsed.MeanRate);

                    Assert.Equal(meter.OneMinuteRate, parsed.OneMinuteRate);
                    Assert.Equal(meter.FiveMinuteRate, parsed.FiveMinuteRate);
                    Assert.Equal(meter.FifteenMinuteRate, parsed.FifteenMinuteRate);
                }
            }
        }
コード例 #16
0
        public IEnumerable <TimerValueSource> SetupTimers()
        {
            const int count = 5;

            var meterValue = new MeterValue(
                count,
                1,
                2,
                3,
                4,
                TimeUnit.Seconds,
                new[]
            {
                new MeterValue.SetItem("item", 0.5, new MeterValue(1, 2, 3, 4, 5, TimeUnit.Seconds, new MeterValue.SetItem[0]))
            });
            var histogramValue = new HistogramValue(count, 2, "3", 4, "5", 6, 7, "8", 9, 10, 11, 12, 13, 14, 15, 16);

            var timerValue = new TimerValue(meterValue, histogramValue, 0, 1, TimeUnit.Nanoseconds);
            var timer      = new TimerValueSource(
                TimerNameDefault,
                ConstantValue.Provider(timerValue),
                Unit.Requests,
                TimeUnit.Seconds,
                TimeUnit.Milliseconds,
                Tags);

            var timerValueWithGroup = new TimerValue(meterValue, histogramValue, 0, 1, TimeUnit.Nanoseconds);

            var timerWithGroup = new TimerValueSource(
                TimerNameWithGroup,
                GroupDefault,
                ConstantValue.Provider(timerValueWithGroup),
                Unit.Requests,
                TimeUnit.Seconds,
                TimeUnit.Milliseconds,
                Tags);

            return(new[] { timer, timerWithGroup });
        }
コード例 #17
0
ファイル: RavenDB-5686.cs プロジェクト: ryanheath/ravendb
        public void CanSerializeAndDeserializeMeterValue()
        {
            var meter = new MeterValue("name", 1, 2.0, 3.0, 4.0, 15.0);

            using (var store = GetDocumentStore())
            {
                using (var session = store.OpenSession())
                {
                    var json   = EntityToBlittable.ConvertCommandToBlittable(meter, session.Advanced.Context);
                    var parsed = (MeterValue)session.Advanced.EntityToBlittable.ConvertToEntity(typeof(MeterValue), "meter", json);

                    Assert.Equal(meter.Name, parsed.Name);

                    Assert.Equal(meter.Count, parsed.Count);
                    Assert.Equal(meter.MeanRate, parsed.MeanRate);

                    Assert.Equal(meter.OneMinuteRate, parsed.OneMinuteRate);
                    Assert.Equal(meter.FiveMinuteRate, parsed.FiveMinuteRate);
                    Assert.Equal(meter.FifteenMinuteRate, parsed.FifteenMinuteRate);
                }
            }
        }
コード例 #18
0
        public static void HumanizeMeter(this StringBuilder sb, MeterValue value, Unit unit)
        {
            sb.AppendLine("Count".FormatReadableMetricValue(unit.FormatCount(value.Count)));
            sb.AppendLine("Mean Value".FormatReadableMetricValue(unit.FormatRate(value.MeanRate, value.RateUnit)));
            sb.AppendLine("1 Minute Rate".FormatReadableMetricValue(unit.FormatRate(value.OneMinuteRate, value.RateUnit)));
            sb.AppendLine("5 Minute Rate".FormatReadableMetricValue(unit.FormatRate(value.FiveMinuteRate, value.RateUnit)));
            sb.AppendLine("15 Minute Rate".FormatReadableMetricValue(unit.FormatRate(value.FifteenMinuteRate, value.RateUnit)));

            if (!value.Items.Any())
            {
                return;
            }

            sb.AppendLine("Total Items".FormatReadableMetricValue(value.Items.Length.ToString()));

            foreach (var keyValue in value.Items.Select((x, i) => new { Value = x, Index = i }))
            {
                var key       = $"Item {keyValue.Index}";
                var itemValue = $"{keyValue.Value.Percent:00.00}% {keyValue.Value.Value.Count,5} {unit.Name} [{keyValue.Value.Item}]";
                sb.AppendLine(key.FormatReadableMetricValue(itemValue));
                sb.HumanizeMeter(keyValue.Value.Value, unit);
            }
        }
コード例 #19
0
        protected void ReportMeter(string name, MeterValue value, Unit unit, TimeUnit rateUnit, MetricTags tags)
        {
            var payload = new JObject
            {
                { "count", value.Count },
                { "meanRate", _resetOnReport ? ((double)value.Count / _reportingPeriodSec) : value.MeanRate },
                { "1MinRate", value.OneMinuteRate },
                { "5MinRate", value.FiveMinuteRate }
            };

            value.Items.ForEach(i =>
            {
                payload.Add(i.Item + "Count", i.Value.Count);
                payload.Add(i.Item + "Percent", i.Percent);
                payload.Add(i.Item + "MeanRate", i.Value.MeanRate);
                payload.Add(i.Item + "1MinRate", i.Value.OneMinuteRate);
                payload.Add(i.Item + "5MinRate", i.Value.FiveMinuteRate);
            });

            var te = Pack("Meter", name, unit, tags, payload);

            _subject.OnNext(te);
        }
コード例 #20
0
        public IEnumerable <MeterValueSource> SetupMeters()
        {
            var meterValue = new MeterValue(
                5,
                1,
                2,
                3,
                4,
                TimeUnit.Seconds,
                new[]
            {
                new MeterValue.SetItem("item", 0.5, new MeterValue(1, 2, 3, 4, 5, TimeUnit.Seconds, new MeterValue.SetItem[0]))
            });
            var meter = new MeterValueSource(MeterNameDefault, ConstantValue.Provider(meterValue), Unit.Calls, TimeUnit.Seconds, Tags);

            var meterValueWithGroup = new MeterValue(
                5,
                1,
                2,
                3,
                4,
                TimeUnit.Seconds,
                new[]
            {
                new MeterValue.SetItem("item", 0.5, new MeterValue(1, 2, 3, 4, 5, TimeUnit.Seconds, new MeterValue.SetItem[0]))
            });
            var meterWithGroup = new MeterValueSource(
                MeterNameWithGroup,
                GroupDefault,
                ConstantValue.Provider(meterValueWithGroup),
                Unit.Calls,
                TimeUnit.Seconds,
                Tags);

            return(new[] { meter, meterWithGroup });
        }
コード例 #21
0
 protected abstract void ReportMeter(string name, MeterValue value, Unit unit, TimeUnit rateUnit, MetricTags tags);
コード例 #22
0
ファイル: CentralSystemService.cs プロジェクト: prabhdip/OCPP
 /// <remarks/>
 public System.IAsyncResult BeginMeterValues(int connectorId, int transactionId, bool transactionIdSpecified, MeterValue[] values, System.AsyncCallback callback, object asyncState)
 {
     return this.BeginInvoke("MeterValues", new object[] {
                 connectorId,
                 transactionId,
                 transactionIdSpecified,
                 values}, callback, asyncState);
 }
コード例 #23
0
ファイル: GenManager.cs プロジェクト: Reavenk/Phonics_Core
 public MeterRecord(GenMeter meter, AudioSource playingSource)
 {
     this.meter         = meter;
     this.meterValue    = meter.Meter;
     this.playingSource = playingSource;
 }
コード例 #24
0
        /// <summary>
        /// Try to parse the given JSON representation of a stop transaction request.
        /// </summary>
        /// <param name="StopTransactionRequestJSON">The JSON to be parsed.</param>
        /// <param name="StopTransactionRequest">The parsed stop transaction request.</param>
        /// <param name="OnException">An optional delegate called whenever an exception occured.</param>
        public static Boolean TryParse(JObject StopTransactionRequestJSON,
                                       out StopTransactionRequest StopTransactionRequest,
                                       OnExceptionDelegate OnException = null)
        {
            try
            {
                StopTransactionRequest = null;

                #region TransactionId

                if (!StopTransactionRequestJSON.ParseMandatory("transactionId",
                                                               "transaction identification",
                                                               Transaction_Id.TryParse,
                                                               out Transaction_Id TransactionId,
                                                               out String ErrorResponse))
                {
                    return(false);
                }

                #endregion

                #region Timestamp

                if (!StopTransactionRequestJSON.ParseMandatory("timestamp",
                                                               "timestamp",
                                                               out DateTime Timestamp,
                                                               out ErrorResponse))
                {
                    return(false);
                }

                #endregion

                #region MeterStop

                if (!StopTransactionRequestJSON.ParseMandatory("meterStop",
                                                               "meter stop",
                                                               out UInt64 MeterStop,
                                                               out ErrorResponse))
                {
                    return(false);
                }

                #endregion

                #region Reason

                if (StopTransactionRequestJSON.ParseOptional("reason",
                                                             "reason",
                                                             ReasonsExtentions.AsReasons,
                                                             out Reasons?  Reason,
                                                             out ErrorResponse))
                {
                    if (ErrorResponse != null)
                    {
                        return(false);
                    }
                }

                #endregion

                #region IdTag

                if (!StopTransactionRequestJSON.ParseMandatory("idTag",
                                                               "identification tag",
                                                               IdToken.TryParse,
                                                               out IdToken IdTag,
                                                               out ErrorResponse))
                {
                    return(false);
                }

                #endregion

                #region TransactionData

                var TransactionData = new List <MeterValue>();

                if (StopTransactionRequestJSON.ParseOptional("transactionData",
                                                             "transaction data",
                                                             out JArray TransactionDataJSON,
                                                             out ErrorResponse))
                {
                    if (ErrorResponse != null)
                    {
                        return(false);
                    }

                    if (TransactionDataJSON.SafeAny())
                    {
                        foreach (var meterValueJSON in TransactionDataJSON)
                        {
                            if (meterValueJSON is JObject &&
                                MeterValue.TryParse(meterValueJSON as JObject, out MeterValue meterValue))
                            {
                                TransactionData.Add(meterValue);
                            }

                            else
                            {
                                return(false);
                            }
                        }
                    }
                }

                #endregion


                StopTransactionRequest = new StopTransactionRequest(TransactionId,
                                                                    Timestamp,
                                                                    MeterStop,
                                                                    IdTag,
                                                                    Reason,
                                                                    TransactionData.Any() ? TransactionData : null);

                return(true);
            }
            catch (Exception e)
            {
                OnException?.Invoke(DateTime.UtcNow, StopTransactionRequestJSON, e);

                StopTransactionRequest = null;
                return(false);
            }
        }
コード例 #25
0
ファイル: CSVReport.cs プロジェクト: 284247028/Metrics.NET
 protected override void ReportMeter(string name, MeterValue value, Unit unit, TimeUnit rateUnit, MetricTags tags)
 {
     Write("Meter", name, MeterValues(value, unit, rateUnit));
 }
コード例 #26
0
 private void WriteMeter(MeterValue value, Unit unit, TimeUnit rateUnit)
 {
     WriteValue("Count", unit.FormatCount(value.Count));
     WriteValue("Mean Value", unit.FormatRate(value.MeanRate, rateUnit));
     WriteValue("1 Minute Rate", unit.FormatRate(value.OneMinuteRate, rateUnit));
     WriteValue("5 Minute Rate", unit.FormatRate(value.FiveMinuteRate, rateUnit));
     WriteValue("15 Minute Rate", unit.FormatRate(value.FifteenMinuteRate, rateUnit));
 }
コード例 #27
0
        protected override void ReportMeter(string name, MeterValue value, Unit unit, TimeUnit rateUnit, MetricTags tags)
        {
            var itemProperties = value.Items.SelectMany(i => new[] 
            {
                new JsonProperty(i.Item + " - Count", i.Value.Count), 
                new JsonProperty(i.Item + " - Percent", i.Percent),
                new JsonProperty(i.Item + " - Mean Rate", i.Value.MeanRate),
                new JsonProperty(i.Item + " - 1 Min Rate", i.Value.OneMinuteRate),
                new JsonProperty(i.Item + " - 5 Min Rate", i.Value.FiveMinuteRate),
                new JsonProperty(i.Item + " - 15 Min Rate", i.Value.FifteenMinuteRate)
            });

            Pack("Meter", name, unit, tags, new[] { 
                new JsonProperty("Count", value.Count),
                new JsonProperty("Mean Rate", value.MeanRate),
                new JsonProperty("1 Min Rate", value.OneMinuteRate),
                new JsonProperty("5 Min Rate", value.FiveMinuteRate),
                new JsonProperty("15 Min Rate", value.FifteenMinuteRate)
            }.Concat(itemProperties));
        }
コード例 #28
0
        public IActionResult Post([FromBody] JObject data)
        {
            try
            {
                MeterData mdata = new MeterData
                {
                    Id          = Guid.NewGuid(),
                    Meter_Id    = data["meter_id"].ToString(),
                    Customer_Id = data["customer_id"].ToString(),
                    Resolution  = data["resolution"].ToString(),
                    From        = DateTime.Parse(data["from"].ToString()),
                    To          = DateTime.Parse(data["to"].ToString()),
                };
                var savedMData = _repository.MeterData.SaveMeterData(mdata);
                _repository.Save();

                ArrayList arr    = new ArrayList();
                var       jobj   = JObject.Parse(data.ToString());
                var       values = jobj["values"];
                var       dict   = JsonConvert.DeserializeObject <Dictionary <DateTime, double> >
                                       (values.ToString());


                foreach (var item in dict)
                {
                    var meterValue = new MeterValue
                    {
                        Id           = Guid.NewGuid(),
                        MeterDataId  = mdata.Id,
                        Meter_Id     = mdata.Meter_Id,
                        Custormer_Id = mdata.Customer_Id,
                        Hour         = item.Key,
                        Value        = item.Value
                    };
                    var returnedMeterValue = new MeterValueReturned
                    {
                        Hour  = item.Key,
                        Value = item.Value
                    };
                    _repository.MeterValue.SaveMeterValue(meterValue);
                    arr.Add(returnedMeterValue);
                    _repository.Save();
                }

                MeterDataExtended returnedMeterData = new MeterDataExtended
                {
                    Id          = savedMData.Id,
                    Meter_Id    = savedMData.Meter_Id,
                    Customer_Id = savedMData.Customer_Id,
                    Resolution  = savedMData.Resolution,
                    From        = savedMData.From,
                    To          = savedMData.To,
                    Values      = arr
                };

                return(Ok(returnedMeterData));
            }
            catch (Exception ex)
            {
                return(StatusCode(500, ex.Message));
            }
        }
コード例 #29
0
 protected override void ReportMeter(string name, MeterValue value, Unit unit, TimeUnit rateUnit)
 {
     this.WriteMetricName(name);
     this.WriteMeter(value.Scale(rateUnit), unit, rateUnit);
 }
コード例 #30
0
ファイル: CSVReporter.cs プロジェクト: kvarv/Metrics.NET
 protected override void ReportMeter(string name, MeterValue value, Unit unit, TimeUnit rateUnit)
 {
     Write("Meter", name, MeterValues(value.Scale(rateUnit), unit, rateUnit));
 }
コード例 #31
0
ファイル: CentralSystemService.cs プロジェクト: prabhdip/OCPP
 /// <remarks/>
 public void MeterValuesAsync(int connectorId, int transactionId, bool transactionIdSpecified, MeterValue[] values, object userState)
 {
     if ((this.MeterValuesOperationCompleted == null)) {
         this.MeterValuesOperationCompleted = new System.Threading.SendOrPostCallback(this.OnMeterValuesOperationCompleted);
     }
     this.InvokeAsync("MeterValues", new object[] {
                 connectorId,
                 transactionId,
                 transactionIdSpecified,
                 values}, this.MeterValuesOperationCompleted, userState);
 }
コード例 #32
0
ファイル: CentralSystemService.cs プロジェクト: prabhdip/OCPP
 /// <remarks/>
 public void MeterValuesAsync(int connectorId, int transactionId, bool transactionIdSpecified, MeterValue[] values)
 {
     this.MeterValuesAsync(connectorId, transactionId, transactionIdSpecified, values, null);
 }
コード例 #33
0
 protected override void ReportMeter(string name, MeterValue value, Unit unit, TimeUnit rateUnit, MetricTags tags)
 {
   this.metricName = name;
   base.ReportMeter(name, value, unit, rateUnit, tags);
 }
コード例 #34
0
 protected override void ReportMeter(string name, MeterValue value, Unit unit, TimeUnit rateUnit, MetricTags tags)
 {
     Send(SubfolderName(name, unit, "Total"), value.Count);
 }
 private static void TranslateMeterValue(MeterValue value, MetricTelemetry mt, string unit)
 {
     mt.Sum = value.MeanRate;
     mt.Properties[Constants.UnitKey]           = unit;
     mt.Properties[Constants.AppMetricsTypeKey] = Constants.MeterTypeValue;
 }
コード例 #36
0
ファイル: CSVReport.cs プロジェクト: 284247028/Metrics.NET
        private static IEnumerable<Value> MeterValues(MeterValue meter, Unit unit, TimeUnit rateUnit)
        {
            yield return new Value("Count", meter.Count);
            yield return new Value("Mean Rate", meter.MeanRate);
            yield return new Value("One Minute Rate", meter.OneMinuteRate);
            yield return new Value("Five Minute Rate", meter.FiveMinuteRate);
            yield return new Value("Fifteen Minute Rate", meter.FifteenMinuteRate);

            if (!string.IsNullOrEmpty(unit.Name))
            {
                yield return new Value("Rate Unit", string.Format("{0}/{1}", unit.Name, rateUnit.Unit()));
            }
        }
コード例 #37
0
 protected override void ReportMeter(string name, MeterValue value, Unit unit, TimeUnit rateUnit, MetricTags tags)
 {
     this.metricName = name;
     base.ReportMeter(name, value, unit, rateUnit, tags);
 }
コード例 #38
0
ファイル: CSVReporter.cs プロジェクト: fengmin0722/Mainline
 protected override void ReportMeter(string name, MeterValue value, Unit unit, TimeUnit rateUnit)
 {
     Write("Meter", name, MeterValues(value, unit, rateUnit));
 }
コード例 #39
0
ファイル: JsonFormatter.cs プロジェクト: jchannon/Metrics.NET
 private static IEnumerable<JsonProperty> Meter(MeterValue value)
 {
     yield return new JsonProperty("Count", value.Count);
     yield return new JsonProperty("MeanRate", value.MeanRate);
     yield return new JsonProperty("OneMinuteRate", value.OneMinuteRate);
     yield return new JsonProperty("FiveMinuteRate", value.FiveMinuteRate);
     yield return new JsonProperty("FifteenMinuteRate", value.FifteenMinuteRate);
 }
コード例 #40
0
ファイル: JsonMeter.cs プロジェクト: Xamarui/Metrics.NET
        public MeterValueSource ToValueSource()
        {
            var rateUnit = TimeUnitExtensions.FromUnit(this.RateUnit);

            var items = this.Items.Select(i =>
                new MeterValue.SetItem(i.Item, i.Percent,
                    new MeterValue(i.Count, i.MeanRate, i.OneMinuteRate, i.FiveMinuteRate, i.FifteenMinuteRate, rateUnit)))
                .ToArray();

            var meterValue = new MeterValue(this.Count, this.MeanRate, this.OneMinuteRate, this.FiveMinuteRate, this.FifteenMinuteRate, rateUnit, items);
            return new MeterValueSource(this.Name, ConstantValue.Provider(meterValue), this.Unit, rateUnit, this.Tags);
        }
コード例 #41
0
ファイル: JsonTimer.cs プロジェクト: Xamarui/Metrics.NET
        public TimerValueSource ToValueSource()
        {
            var rateUnit = TimeUnitExtensions.FromUnit(this.RateUnit);
            var durationUnit = TimeUnitExtensions.FromUnit(this.DurationUnit);

            var rateValue = new MeterValue(this.Count, this.Rate.MeanRate, this.Rate.OneMinuteRate, this.Rate.FiveMinuteRate, this.Rate.FifteenMinuteRate, rateUnit);
            var histogramValue = new HistogramValue(this.Count,
                this.Histogram.LastValue, this.Histogram.LastUserValue,
                this.Histogram.Max, this.Histogram.MaxUserValue, this.Histogram.Mean,
                this.Histogram.Min, this.Histogram.MinUserValue, this.Histogram.StdDev, this.Histogram.Median,
                this.Histogram.Percentile75, this.Histogram.Percentile95, this.Histogram.Percentile98,
                this.Histogram.Percentile99, this.Histogram.Percentile999, this.Histogram.SampleSize);

            var timerValue = new TimerValue(rateValue, histogramValue, this.ActiveSessions, durationUnit);

            return new TimerValueSource(this.Name, ConstantValue.Provider(timerValue), this.Unit, rateUnit, durationUnit, this.Tags);
        }
コード例 #42
0
 internal static void CopyTo(this MeterValue value, MetricTelemetry mt, string unit)
 {
     mt.Sum = value.MeanRate;
     mt.Properties[UnitKey] = unit;
 }
コード例 #43
0
ファイル: JsonTimer.cs プロジェクト: Xamarui/Metrics.NET
 private static RateData ToRate(MeterValue rate)
 {
     return new RateData
     {
         MeanRate = rate.MeanRate,
         OneMinuteRate = rate.OneMinuteRate,
         FiveMinuteRate = rate.FiveMinuteRate,
         FifteenMinuteRate = rate.FifteenMinuteRate
     };
 }
コード例 #44
0
 protected override void ReportMeter(string name, MeterValue value, Unit unit, TimeUnit rateUnit)
 {
     this.WriteMetricName(name);
     this.WriteMeter(value.Scale(rateUnit), unit, rateUnit);
 }
コード例 #45
0
ファイル: EventHubReporter.cs プロジェクト: ins4n333/devcon
 protected override void ReportMeter(string name, MeterValue value, Unit unit, TimeUnit rateUnit, MetricTags tags)
 {
     m_items.Add(new MeterEventHubReportItem(m_service, name, value.OneMinuteRate));
 }