Beispiel #1
0
        public void NodeMetric_should_update_3_nodeMetrics_with_ewma_applied()
        {
            const double decay   = ClusterMetricsTestConfig.DefaultDecayFactor;
            const double epsilon = 0.001;

            var sample1 = new NodeMetrics(_node1, 1, ImmutableHashSet.Create(
                                              NodeMetrics.Types.Metric.Create("a", 1, decay).Value,
                                              NodeMetrics.Types.Metric.Create("b", 4, decay).Value
                                              ));
            var sample2 = new NodeMetrics(_node1, 2, ImmutableHashSet.Create(
                                              NodeMetrics.Types.Metric.Create("a", 2, decay).Value,
                                              NodeMetrics.Types.Metric.Create("c", 5, decay).Value
                                              ));
            var sample3 = new NodeMetrics(_node1, 3, ImmutableHashSet.Create(
                                              NodeMetrics.Types.Metric.Create("a", 3, decay).Value,
                                              NodeMetrics.Types.Metric.Create("d", 6, decay).Value
                                              ));

            var updated = sample1.Update(sample2).Update(sample3);

            updated.Metrics.Should().HaveCount(4);
            updated.Timestamp.Should().Be(sample3.Timestamp);

            updated.Metric("a").Value.Value.LongValue.Should().Be(3);
            updated.Metric("b").Value.Value.LongValue.Should().Be(4);
            updated.Metric("c").Value.Value.LongValue.Should().Be(5);
            updated.Metric("d").Value.Value.LongValue.Should().Be(6);

            updated.Metric("a").Value.SmoothValue.Should().BeApproximately(1.512, epsilon);
            updated.Metric("b").Value.SmoothValue.Should().BeApproximately(4.000, epsilon);
            updated.Metric("c").Value.SmoothValue.Should().BeApproximately(5.000, epsilon);
            updated.Metric("d").Value.SmoothValue.Should().BeApproximately(6.000, epsilon);
        }
Beispiel #2
0
        public void NodeMetrics_should_update_2_nodeMetrics_by_most_resent()
        {
            var sample1 = new NodeMetrics(_node1, 1, ImmutableHashSet.Create(
                                              NodeMetrics.Types.Metric.Create("a", 10, Option <double> .None).Value,
                                              NodeMetrics.Types.Metric.Create("b", 20, Option <double> .None).Value
                                              ));
            var sample2 = new NodeMetrics(_node1, 2, ImmutableHashSet.Create(
                                              NodeMetrics.Types.Metric.Create("a", 11, Option <double> .None).Value,
                                              NodeMetrics.Types.Metric.Create("c", 30, Option <double> .None).Value
                                              ));

            var updated = sample1.Update(sample2);

            updated.Metrics.Should().HaveCount(3);
            updated.Timestamp.Should().Be(sample2.Timestamp);
            updated.Metric("a").Value.Value.LongValue.Should().Be(11);
            updated.Metric("b").Value.Value.LongValue.Should().Be(20);
            updated.Metric("c").Value.Value.LongValue.Should().Be(30);
        }