public virtual void TestCopy() { AbstractMetricsContext.TagMap tags = new AbstractMetricsContext.TagMap(); tags["tagkey"] = "tagval"; AbstractMetricsContext.MetricMap metrics = new AbstractMetricsContext.MetricMap(); metrics["metrickey"] = 123.4; OutputRecord r = new OutputRecord(tags, metrics); Assert.Equal(tags, r.GetTagsCopy()); NUnit.Framework.Assert.AreNotSame(tags, r.GetTagsCopy()); Assert.Equal(metrics, r.GetMetricsCopy()); NUnit.Framework.Assert.AreNotSame(metrics, r.GetMetricsCopy()); }
/// <summary>Called by MetricsRecordImpl.update().</summary> /// <remarks> /// Called by MetricsRecordImpl.update(). Creates or updates a row in /// the internal table of metric data. /// </remarks> protected internal virtual void Update(MetricsRecordImpl record) { string recordName = record.GetRecordName(); AbstractMetricsContext.TagMap tagTable = record.GetTagTable(); IDictionary <string, MetricValue> metricUpdates = record.GetMetricTable(); AbstractMetricsContext.RecordMap recordMap = GetRecordMap(recordName); lock (recordMap) { AbstractMetricsContext.MetricMap metricMap = recordMap[tagTable]; if (metricMap == null) { metricMap = new AbstractMetricsContext.MetricMap(); AbstractMetricsContext.TagMap tagMap = new AbstractMetricsContext.TagMap(tagTable ); // clone tags recordMap[tagMap] = metricMap; } ICollection <KeyValuePair <string, MetricValue> > entrySet = metricUpdates; foreach (KeyValuePair <string, MetricValue> entry in entrySet) { string metricName = entry.Key; MetricValue updateValue = entry.Value; Number updateNumber = updateValue.GetNumber(); Number currentNumber = metricMap[metricName]; if (currentNumber == null || updateValue.IsAbsolute()) { metricMap[metricName] = updateNumber; } else { Number newNumber = Sum(updateNumber, currentNumber); metricMap[metricName] = newNumber; } } } }
/// <summary>Creates a new instance of OutputRecord</summary> internal OutputRecord(AbstractMetricsContext.TagMap tagMap, AbstractMetricsContext.MetricMap metricMap) { this.tagMap = tagMap; this.metricMap = metricMap; }
internal MetricMap(AbstractMetricsContext.MetricMap orig) : base(orig) { }