Suppress Java Serializer warnings when extending NoSerializationVerificationNeeded (#19963) (#20785)
This commit is contained in:
parent
625413e413
commit
08aa41c818
4 changed files with 82 additions and 5 deletions
|
|
@ -17,6 +17,8 @@ import scala.beans.BeanInfo
|
|||
import com.typesafe.config._
|
||||
import akka.pattern.ask
|
||||
import org.apache.commons.codec.binary.Hex.encodeHex
|
||||
import akka.actor.NoSerializationVerificationNeeded
|
||||
import test.akka.serialization.NoVerification
|
||||
|
||||
object SerializationTests {
|
||||
|
||||
|
|
@ -424,18 +426,18 @@ class DefaultSerializationWarningSpec extends AkkaSpec(
|
|||
ConfigFactory.parseString("akka.actor.warn-about-java-serializer-usage = on")) {
|
||||
|
||||
val ser = SerializationExtension(system)
|
||||
val messagePrefix = "Using the default Java serializer for class.*"
|
||||
val messagePrefix = "Using the default Java serializer for class"
|
||||
|
||||
"Using the default Java serializer" must {
|
||||
|
||||
"log a warning when serializing classes outside of java.lang package" in {
|
||||
EventFilter.warning(message = messagePrefix) intercept {
|
||||
EventFilter.warning(start = messagePrefix, occurrences = 1) intercept {
|
||||
ser.serializerFor(classOf[java.math.BigDecimal])
|
||||
}
|
||||
}
|
||||
|
||||
"not log warning when serializing classes from java.lang package" in {
|
||||
EventFilter.warning(message = messagePrefix, occurrences = 0) intercept {
|
||||
EventFilter.warning(start = messagePrefix, occurrences = 0) intercept {
|
||||
ser.serializerFor(classOf[java.lang.String])
|
||||
}
|
||||
}
|
||||
|
|
@ -444,6 +446,54 @@ class DefaultSerializationWarningSpec extends AkkaSpec(
|
|||
|
||||
}
|
||||
|
||||
class NoVerificationWarningSpec extends AkkaSpec(
|
||||
ConfigFactory.parseString(
|
||||
"akka.actor.warn-about-java-serializer-usage = on\n" +
|
||||
"akka.actor.warn-on-no-serialization-verification = on")) {
|
||||
|
||||
val ser = SerializationExtension(system)
|
||||
val messagePrefix = "Using the default Java serializer for class"
|
||||
|
||||
"When warn-on-no-serialization-verification = on, using the default Java serializer" must {
|
||||
|
||||
"log a warning on classes without extending NoSerializationVerificationNeeded" in {
|
||||
EventFilter.warning(start = messagePrefix, occurrences = 1) intercept {
|
||||
ser.serializerFor(classOf[java.math.BigDecimal])
|
||||
}
|
||||
}
|
||||
|
||||
"still log warning on classes extending NoSerializationVerificationNeeded" in {
|
||||
EventFilter.warning(start = messagePrefix, occurrences = 1) intercept {
|
||||
ser.serializerFor(classOf[NoVerification])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class NoVerificationWarningOffSpec extends AkkaSpec(
|
||||
ConfigFactory.parseString(
|
||||
"akka.actor.warn-about-java-serializer-usage = on\n" +
|
||||
"akka.actor.warn-on-no-serialization-verification = off")) {
|
||||
|
||||
val ser = SerializationExtension(system)
|
||||
val messagePrefix = "Using the default Java serializer for class"
|
||||
|
||||
"When warn-on-no-serialization-verification = off, using the default Java serializer" must {
|
||||
|
||||
"log a warning on classes without extending NoSerializationVerificationNeeded" in {
|
||||
EventFilter.warning(start = messagePrefix, occurrences = 1) intercept {
|
||||
ser.serializerFor(classOf[java.math.BigDecimal])
|
||||
}
|
||||
}
|
||||
|
||||
"not log warning on classes extending NoSerializationVerificationNeeded" in {
|
||||
EventFilter.warning(start = messagePrefix, occurrences = 0) intercept {
|
||||
ser.serializerFor(classOf[NoVerification])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected[akka] trait TestSerializable
|
||||
|
||||
protected[akka] class TestSerializer extends Serializer {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue