Simplify MetricsGossip and NodeMetrics merge, see #2547
* Also fixed problem with removed nodes potentially added back to MetricsGossip
This commit is contained in:
parent
1466ad84af
commit
e9e1580d47
4 changed files with 110 additions and 100 deletions
|
|
@ -4,26 +4,17 @@
|
|||
|
||||
package akka.cluster
|
||||
|
||||
import akka.testkit.AkkaSpec
|
||||
import org.scalatest.WordSpec
|
||||
import org.scalatest.matchers.MustMatchers
|
||||
import akka.actor.Address
|
||||
|
||||
@org.junit.runner.RunWith(classOf[org.scalatest.junit.JUnitRunner])
|
||||
class NodeMetricsSpec extends AkkaSpec with MetricsCollectorFactory {
|
||||
|
||||
val collector = createMetricsCollector
|
||||
class NodeMetricsSpec extends WordSpec with MustMatchers {
|
||||
|
||||
val node1 = Address("akka", "sys", "a", 2554)
|
||||
|
||||
val node2 = Address("akka", "sys", "a", 2555)
|
||||
|
||||
"NodeMetrics must" must {
|
||||
"recognize updatable nodes" in {
|
||||
(NodeMetrics(node1, 0) updatable NodeMetrics(node1, 1)) must be(true)
|
||||
}
|
||||
|
||||
"recognize non-updatable nodes" in {
|
||||
(NodeMetrics(node1, 1) updatable NodeMetrics(node2, 0)) must be(false)
|
||||
}
|
||||
|
||||
"return correct result for 2 'same' nodes" in {
|
||||
(NodeMetrics(node1, 0) sameAs NodeMetrics(node1, 0)) must be(true)
|
||||
|
|
@ -34,21 +25,23 @@ class NodeMetricsSpec extends AkkaSpec with MetricsCollectorFactory {
|
|||
}
|
||||
|
||||
"merge 2 NodeMetrics by most recent" in {
|
||||
val sample1 = NodeMetrics(node1, 1, collector.sample.metrics)
|
||||
val sample2 = NodeMetrics(node1, 2, collector.sample.metrics)
|
||||
val sample1 = NodeMetrics(node1, 1, Set(Metric.create("a", 10, None), Metric.create("b", 20, None)).flatten)
|
||||
val sample2 = NodeMetrics(node1, 2, Set(Metric.create("a", 11, None), Metric.create("c", 30, None)).flatten)
|
||||
|
||||
val merged = sample1 merge sample2
|
||||
merged.timestamp must be(sample2.timestamp)
|
||||
merged.metrics must be(sample2.metrics)
|
||||
merged.metric("a").map(_.value) must be(Some(11))
|
||||
merged.metric("b").map(_.value) must be(Some(20))
|
||||
merged.metric("c").map(_.value) must be(Some(30))
|
||||
}
|
||||
|
||||
"not merge 2 NodeMetrics if master is more recent" in {
|
||||
val sample1 = NodeMetrics(node1, 1, collector.sample.metrics)
|
||||
val sample2 = NodeMetrics(node2, 0, sample1.metrics)
|
||||
val sample1 = NodeMetrics(node1, 1, Set(Metric.create("a", 10, None), Metric.create("b", 20, None)).flatten)
|
||||
val sample2 = NodeMetrics(node1, 0, Set(Metric.create("a", 11, None), Metric.create("c", 30, None)).flatten)
|
||||
|
||||
val merged = sample2 merge sample2 // older and not same
|
||||
merged.timestamp must be(sample2.timestamp)
|
||||
merged.metrics must be(sample2.metrics)
|
||||
val merged = sample1 merge sample2 // older and not same
|
||||
merged.timestamp must be(sample1.timestamp)
|
||||
merged.metrics must be(sample1.metrics)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue