Creating ObjectDataOutput for Unit Testing Stream Serializers in 3.7

92 views
Skip to first unread message

mat...@kryptnostic.com

unread,
Aug 17, 2016, 3:07:34 AM8/17/16
to Hazelcast
Back in 3.5 we could use the DefaultSerializationServiceBuilder to get a SerializationService, allowing us to create ObjectDataOutput classes for testing our Stream Serializers (we have A LOT).

When trying this in 3.7 (after switching to InternalSerializationService) we get an error when running our unit tests. Are there any easier ways to get an ObjectDataOutput for unit testing stream serializers?

com.hazelcast.core.HazelcastException: java.lang.ClassCastException: Cannot cast com.hazelcast.collection.impl.collection.CollectionPortableHook to com.hazelcast.internal.serialization.PortableHook
at com.hazelcast.util.ServiceLoader$NewInstanceIterator.next(ServiceLoader.java:338)
at com.hazelcast.internal.serialization.impl.PortableHookLoader.load(PortableHookLoader.java:51)
at com.hazelcast.internal.serialization.impl.PortableHookLoader.<init>(PortableHookLoader.java:44)
at com.hazelcast.internal.serialization.impl.SerializationServiceV1.<init>(SerializationServiceV1.java:88)
at com.hazelcast.internal.serialization.impl.DefaultSerializationServiceBuilder.createSerializationService(DefaultSerializationServiceBuilder.java:264)
at com.hazelcast.internal.serialization.impl.DefaultSerializationServiceBuilder.build(DefaultSerializationServiceBuilder.java:218)
at com.kryptnostic.rhizome.hazelcast.serializers.BaseSerializerTest.testSerializeDeserialize(BaseSerializerTest.java:40)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
Caused by: java.lang.ClassCastException: Cannot cast com.hazelcast.collection.impl.collection.CollectionPortableHook to com.hazelcast.internal.serialization.PortableHook
at java.lang.Class.cast(Class.java:3369)
at com.hazelcast.util.ServiceLoader$NewInstanceIterator.next(ServiceLoader.java:336)
... 29 more

Jaromir Hamala

unread,
Aug 17, 2016, 3:20:42 AM8/17/16
to Hazelcast, mat...@kryptnostic.com
Hi,

are you sure you do not have multiple versions of Hazelcast on your classpath? Can you share your test code?

Cheers,
Jaromir

mat...@kryptnostic.com

unread,
Aug 17, 2016, 3:59:59 AM8/17/16
to Hazelcast, mat...@kryptnostic.com
3.5.5: https://github.com/kryptnostic/rhizome/blob/develop/src/test/java/com/kryptnostic/rhizome/hazelcast/serializers/BaseSerializerTest.java

I think you are right. The problem only happens when I run in eclipse and even then only in one particular project. When I run gradle from the command line all the tests pass. 

-mtr 
Reply all
Reply to author
Forward
0 new messages