diff --git a/akka-cluster-metrics/src/test/scala/akka/cluster/metrics/MetricSpec.scala b/akka-cluster-metrics/src/test/scala/akka/cluster/metrics/MetricSpec.scala index 4f28759320..70cf3e9da2 100644 --- a/akka-cluster-metrics/src/test/scala/akka/cluster/metrics/MetricSpec.scala +++ b/akka-cluster-metrics/src/test/scala/akka/cluster/metrics/MetricSpec.scala @@ -135,6 +135,15 @@ class MetricsGossipSpec extends AkkaSpec(MetricsConfig.defaultEnabled) with Impl val collector = createMetricsCollector + /** + * sometimes Sigar will not be able to return a valid value (NaN and such) so must ensure they + * have the same Metric types + */ + def newSample(previousSample: Set[Metric]): Set[Metric] = { + // Metric.equals is based on name equality + collector.sample.metrics.filter(previousSample.contains) ++ previousSample + } + "A MetricsGossip" must { "add new NodeMetrics" in { val m1 = NodeMetrics(Address("akka.tcp", "sys", "a", 2554), newTimestamp, collector.sample.metrics) @@ -161,7 +170,7 @@ class MetricsGossipSpec extends AkkaSpec(MetricsConfig.defaultEnabled) with Impl g1.nodes.size should ===(2) val beforeMergeNodes = g1.nodes - val m2Updated = m2 copy (metrics = collector.sample.metrics, timestamp = m2.timestamp + 1000) + val m2Updated = m2 copy (metrics = newSample(m2.metrics), timestamp = m2.timestamp + 1000) val g2 = g1 :+ m2Updated // merge peers g2.nodes.size should ===(2) g2.nodeMetricsFor(m1.address).map(_.metrics) should ===(Some(m1.metrics)) @@ -173,7 +182,7 @@ class MetricsGossipSpec extends AkkaSpec(MetricsConfig.defaultEnabled) with Impl val m1 = NodeMetrics(Address("akka.tcp", "sys", "a", 2554), newTimestamp, collector.sample.metrics) val m2 = NodeMetrics(Address("akka.tcp", "sys", "a", 2555), newTimestamp, collector.sample.metrics) val m3 = NodeMetrics(Address("akka.tcp", "sys", "a", 2556), newTimestamp, collector.sample.metrics) - val m2Updated = m2 copy (metrics = collector.sample.metrics, timestamp = m2.timestamp + 1000) + val m2Updated = m2 copy (metrics = newSample(m2.metrics), timestamp = m2.timestamp + 1000) val g1 = MetricsGossip.empty :+ m1 :+ m2 val g2 = MetricsGossip.empty :+ m3 :+ m2Updated diff --git a/akka-cluster/src/test/scala/akka/cluster/MetricsGossipSpec.scala b/akka-cluster/src/test/scala/akka/cluster/MetricsGossipSpec.scala index 4be9e1c024..23e4ea689c 100644 --- a/akka-cluster/src/test/scala/akka/cluster/MetricsGossipSpec.scala +++ b/akka-cluster/src/test/scala/akka/cluster/MetricsGossipSpec.scala @@ -18,6 +18,15 @@ class MetricsGossipSpec extends AkkaSpec(MetricsEnabledSpec.config) with Implici val collector = createMetricsCollector + /** + * sometimes Sigar will not be able to return a valid value (NaN and such) so must ensure they + * have the same Metric types + */ + def newSample(previousSample: Set[Metric]): Set[Metric] = { + // Metric.equals is based on name equality + collector.sample.metrics.filter(previousSample.contains) ++ previousSample + } + "A MetricsGossip" must { "add new NodeMetrics" in { val m1 = NodeMetrics(Address("akka.tcp", "sys", "a", 2554), newTimestamp, collector.sample.metrics) @@ -44,7 +53,7 @@ class MetricsGossipSpec extends AkkaSpec(MetricsEnabledSpec.config) with Implici g1.nodes.size should ===(2) val beforeMergeNodes = g1.nodes - val m2Updated = m2 copy (metrics = collector.sample.metrics, timestamp = m2.timestamp + 1000) + val m2Updated = m2 copy (metrics = newSample(m2.metrics), timestamp = m2.timestamp + 1000) val g2 = g1 :+ m2Updated // merge peers g2.nodes.size should ===(2) g2.nodeMetricsFor(m1.address).map(_.metrics) should ===(Some(m1.metrics)) @@ -56,7 +65,7 @@ class MetricsGossipSpec extends AkkaSpec(MetricsEnabledSpec.config) with Implici val m1 = NodeMetrics(Address("akka.tcp", "sys", "a", 2554), newTimestamp, collector.sample.metrics) val m2 = NodeMetrics(Address("akka.tcp", "sys", "a", 2555), newTimestamp, collector.sample.metrics) val m3 = NodeMetrics(Address("akka.tcp", "sys", "a", 2556), newTimestamp, collector.sample.metrics) - val m2Updated = m2 copy (metrics = collector.sample.metrics, timestamp = m2.timestamp + 1000) + val m2Updated = m2 copy (metrics = newSample(m2.metrics), timestamp = m2.timestamp + 1000) val g1 = MetricsGossip.empty :+ m1 :+ m2 val g2 = MetricsGossip.empty :+ m3 :+ m2Updated