2018-10-29 17:19:37 +08:00
|
|
|
/*
|
2019-01-02 18:55:26 +08:00
|
|
|
* Copyright (C) 2009-2019 Lightbend Inc. <https://www.lightbend.com>
|
2014-12-12 11:49:32 -06:00
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
package akka.cluster.metrics.protobuf
|
|
|
|
|
|
2017-03-16 15:12:35 +01:00
|
|
|
import akka.actor.{ Address, ExtendedActorSystem }
|
2014-12-12 11:49:32 -06:00
|
|
|
import akka.testkit.AkkaSpec
|
|
|
|
|
import akka.cluster.MemberStatus
|
2017-03-16 15:12:35 +01:00
|
|
|
import akka.cluster.metrics._
|
2014-12-12 11:49:32 -06:00
|
|
|
import akka.cluster.TestMember
|
|
|
|
|
|
|
|
|
|
class MessageSerializerSpec extends AkkaSpec(
|
2017-03-16 15:12:35 +01:00
|
|
|
"""
|
|
|
|
|
akka.actor.provider = cluster
|
|
|
|
|
akka.actor.serialize-messages = off
|
|
|
|
|
akka.actor.allow-java-serialization = off
|
|
|
|
|
akka.actor.enable-additional-serialization-bindings = on
|
|
|
|
|
""") {
|
2014-12-12 11:49:32 -06:00
|
|
|
|
|
|
|
|
val serializer = new MessageSerializer(system.asInstanceOf[ExtendedActorSystem])
|
|
|
|
|
|
|
|
|
|
def checkSerialization(obj: AnyRef): Unit = {
|
|
|
|
|
val blob = serializer.toBinary(obj)
|
2015-05-28 18:42:22 +02:00
|
|
|
val ref = serializer.fromBinary(blob, serializer.manifest(obj))
|
2014-12-12 11:49:32 -06:00
|
|
|
obj match {
|
2019-02-09 15:25:39 +01:00
|
|
|
case _ =>
|
2015-01-16 11:09:59 +01:00
|
|
|
ref should ===(obj)
|
2014-12-12 11:49:32 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
import MemberStatus._
|
|
|
|
|
|
|
|
|
|
val a1 = TestMember(Address("akka.tcp", "sys", "a", 2552), Joining, Set.empty)
|
|
|
|
|
val b1 = TestMember(Address("akka.tcp", "sys", "b", 2552), Up, Set("r1"))
|
|
|
|
|
val c1 = TestMember(Address("akka.tcp", "sys", "c", 2552), Leaving, Set("r2"))
|
|
|
|
|
val d1 = TestMember(Address("akka.tcp", "sys", "d", 2552), Exiting, Set("r1", "r2"))
|
|
|
|
|
val e1 = TestMember(Address("akka.tcp", "sys", "e", 2552), Down, Set("r3"))
|
|
|
|
|
val f1 = TestMember(Address("akka.tcp", "sys", "f", 2552), Removed, Set("r2", "r3"))
|
|
|
|
|
|
|
|
|
|
"ClusterMessages" must {
|
|
|
|
|
|
|
|
|
|
"be serializable" in {
|
|
|
|
|
|
2016-06-02 14:06:57 +02:00
|
|
|
val metricsGossip = MetricsGossip(Set(
|
|
|
|
|
NodeMetrics(a1.address, 4711, Set(Metric("foo", 1.2, None))),
|
|
|
|
|
NodeMetrics(b1.address, 4712, Set(
|
|
|
|
|
Metric("foo", 2.1, Some(EWMA(value = 100.0, alpha = 0.18))),
|
2014-12-12 11:49:32 -06:00
|
|
|
Metric("bar1", Double.MinPositiveValue, None),
|
|
|
|
|
Metric("bar2", Float.MaxValue, None),
|
|
|
|
|
Metric("bar3", Int.MaxValue, None),
|
|
|
|
|
Metric("bar4", Long.MaxValue, None),
|
|
|
|
|
Metric("bar5", BigInt(Long.MaxValue), None)))))
|
|
|
|
|
|
|
|
|
|
checkSerialization(MetricsGossipEnvelope(a1.address, metricsGossip, true))
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
2017-03-16 15:12:35 +01:00
|
|
|
|
|
|
|
|
"AdaptiveLoadBalancingPool" must {
|
|
|
|
|
"be serializable" in {
|
|
|
|
|
val simplePool = AdaptiveLoadBalancingPool()
|
|
|
|
|
checkSerialization(simplePool)
|
|
|
|
|
|
|
|
|
|
val complicatedPool = AdaptiveLoadBalancingPool(
|
|
|
|
|
metricsSelector = MixMetricsSelector(Vector(CpuMetricsSelector, HeapMetricsSelector, SystemLoadAverageMetricsSelector)),
|
|
|
|
|
nrOfInstances = 7,
|
|
|
|
|
routerDispatcher = "my-dispatcher",
|
|
|
|
|
usePoolDispatcher = true)
|
|
|
|
|
checkSerialization(complicatedPool)
|
|
|
|
|
}
|
|
|
|
|
}
|
2014-12-12 11:49:32 -06:00
|
|
|
}
|