Skip to content

Commit

Permalink
[FLINK-13159] [tests] Add subclass serialization cases to PojoSeriali…
Browse files Browse the repository at this point in the history
…zerSnapshotMigrationTest

This closes apache#9375.
  • Loading branch information
tzulitai committed Aug 8, 2019
1 parent 101552b commit 594a7eb
Show file tree
Hide file tree
Showing 9 changed files with 41 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import java.util.Collection;

import static org.apache.flink.api.common.typeutils.TypeSerializerMatchers.hasSameCompatibilityAs;
import static org.apache.flink.api.common.typeutils.TypeSerializerMatchers.isCompatibleWithReconfiguredSerializer;
import static org.junit.Assert.assertTrue;

/**
Expand Down Expand Up @@ -84,6 +85,22 @@ public TestPojoWithNewAndRemovedFields(String name, int age, String githubId, Co
}
}

/**
* Data test files of test specification that used this type
* had the data written using {@code PojoSerializer}s generated
* using the base class {@code TestPojo}.
*/
public static class TestPojoSubclass extends TestPojo {
public String githubId;

public TestPojoSubclass() {}

public TestPojoSubclass(int id, String name, int age, String githubId) {
super(id, name, age);
this.githubId = githubId;
}
}

public PojoSerializerSnapshotMigrationTest(TestSpecification<Object> testSpecification) {
super(testSpecification);
}
Expand All @@ -107,6 +124,19 @@ public static Collection<TestSpecification<?>> testSpecifications() {
PojoSerializerSnapshotMigrationTest::testPojoWithNewAndRemovedFieldsSerializerSupplier,
hasSameCompatibilityAs(TypeSerializerSchemaCompatibility.compatibleAfterMigration()));

testSpecifications.addWithCompatibilityMatcher(
"pojo-unregistered-subclass-serializer",
PojoSerializer.class,
PojoSerializerSnapshot.class,
PojoSerializerSnapshotMigrationTest::testPojoSerializerSupplier,
isCompatibleWithReconfiguredSerializer());

testSpecifications.add(
"pojo-registered-subclass-serializer",
PojoSerializer.class,
PojoSerializerSnapshot.class,
PojoSerializerSnapshotMigrationTest::testPojoSerializerWithSubclassRegisteredSupplier);

return testSpecifications.get();
}

Expand All @@ -125,4 +155,15 @@ private static TypeSerializer<TestPojoWithNewAndRemovedFields> testPojoWithNewAn
assertTrue(serializer instanceof PojoSerializer);
return serializer;
}

private static TypeSerializer<TestPojo> testPojoSerializerWithSubclassRegisteredSupplier() {
ExecutionConfig executionConfig = new ExecutionConfig();
executionConfig.registerPojoType(TestPojoSubclass.class);

TypeSerializer<TestPojo> serializer =
TypeExtractor.createTypeInfo(TestPojo.class).createSerializer(executionConfig);

assertTrue(serializer instanceof PojoSerializer);
return serializer;
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

0 comments on commit 594a7eb

Please sign in to comment.