[ https://issues.apache.org/jira/browse/BEAM-14334?focusedWorklogId=769537&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-769537 ]
ASF GitHub Bot logged work on BEAM-14334: ----------------------------------------- Author: ASF GitHub Bot Created on: 12/May/22 10:55 Start Date: 12/May/22 10:55 Worklog Time Spent: 10m Work Description: mosche commented on code in PR #17406: URL: https://github.com/apache/beam/pull/17406#discussion_r871239931 ########## runners/spark/src/test/java/org/apache/beam/runners/spark/coders/SparkRunnerKryoRegistratorTest.java: ########## @@ -48,61 +49,45 @@ public static class WithKryoSerializer { public static SparkContextRule contextRule = new SparkContextRule( KV.of("spark.serializer", "org.apache.spark.serializer.KryoSerializer"), - KV.of("spark.kryo.registrator", WrapperKryoRegistrator.class.getName())); + KV.of("spark.kryo.registrator", TestKryoRegistrator.class.getName())); @Test public void testKryoRegistration() { + TestKryoRegistrator.wasInitiated = false; runSimplePipelineWithSparkContextOptions(contextRule); - assertTrue( - "WrapperKryoRegistrator wasn't initiated, probably KryoSerializer is not set", - WrapperKryoRegistrator.wasInitiated); - } - - /** - * A {@link SparkRunnerKryoRegistrator} that registers an internal class to validate - * KryoSerialization resolution. Use only for test purposes. Needs to be public for - * serialization. - */ - public static class WrapperKryoRegistrator extends SparkRunnerKryoRegistrator { - - static boolean wasInitiated = false; - - public WrapperKryoRegistrator() { - wasInitiated = true; - } - - @Override - public void registerClasses(Kryo kryo) { - super.registerClasses(kryo); - Registration registration = kryo.getRegistration(MicrobatchSource.class); - com.esotericsoftware.kryo.Serializer kryoSerializer = registration.getSerializer(); - assertTrue(kryoSerializer instanceof StatelessJavaSerializer); - } + assertTrue(TestKryoRegistrator.wasInitiated); } } public static class WithoutKryoSerializer { @ClassRule public static SparkContextRule contextRule = - new SparkContextRule( - KV.of("spark.kryo.registrator", KryoRegistratorIsNotCalled.class.getName())); + new SparkContextRule(KV.of("spark.kryo.registrator", TestKryoRegistrator.class.getName())); @Test public void testDefaultSerializerNotCallingKryo() { + TestKryoRegistrator.wasInitiated = false; runSimplePipelineWithSparkContextOptions(contextRule); + assertFalse(TestKryoRegistrator.wasInitiated); Review Comment: Instead of throwing, I'm asserting it was not initiated... the intend of the test should be much clearer now Issue Time Tracking ------------------- Worklog Id: (was: 769537) Time Spent: 8h 20m (was: 8h 10m) > Avoid using forkEvery in Spark runner tests > ------------------------------------------- > > Key: BEAM-14334 > URL: https://issues.apache.org/jira/browse/BEAM-14334 > Project: Beam > Issue Type: Improvement > Components: runner-spark, testing > Reporter: Moritz Mack > Assignee: Moritz Mack > Priority: P2 > Time Spent: 8h 20m > Remaining Estimate: 0h > > Usage of *{color:#FF0000}forkEvery 1{color}* is typically a strong sign of > poor quality / bad code and should be avoided: > * It significantly impacts performance when running tests. > * And it often hides resource leaks, either in code or worse in the runner > itself. -- This message was sent by Atlassian Jira (v8.20.7#820007)