You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by tz...@apache.org on 2019/08/08 08:00:52 UTC

[flink] 03/03: [FLINK-13159] [tests] Add subclass serialization cases to PojoSerializerSnapshotMigrationTest

This is an automated email from the ASF dual-hosted git repository.

tzulitai pushed a commit to branch release-1.9
in repository https://gitbox.apache.org/repos/asf/flink.git

commit 5c09e1c29897e7c098ee55c0d7881c5d2016d94c
Author: Tzu-Li (Gordon) Tai <tz...@apache.org>
AuthorDate: Wed Aug 7 11:43:02 2019 +0200

    [FLINK-13159] [tests] Add subclass serialization cases to PojoSerializerSnapshotMigrationTest
    
    This closes #9375.
---
 .../PojoSerializerSnapshotMigrationTest.java       |  41 +++++++++++++++++++++
 ...nk-1.6-pojo-registered-subclass-serializer-data | Bin 0 -> 350 bytes
 ....6-pojo-registered-subclass-serializer-snapshot | Bin 0 -> 9236 bytes
 ...-1.6-pojo-unregistered-subclass-serializer-data | Bin 0 -> 1320 bytes
 ...-pojo-unregistered-subclass-serializer-snapshot | Bin 0 -> 8890 bytes
 ...nk-1.7-pojo-registered-subclass-serializer-data | Bin 0 -> 350 bytes
 ....7-pojo-registered-subclass-serializer-snapshot | Bin 0 -> 12183 bytes
 ...-1.7-pojo-unregistered-subclass-serializer-data | Bin 0 -> 1320 bytes
 ...-pojo-unregistered-subclass-serializer-snapshot | Bin 0 -> 11832 bytes
 9 files changed, 41 insertions(+)

diff --git a/flink-core/src/test/java/org/apache/flink/api/java/typeutils/runtime/PojoSerializerSnapshotMigrationTest.java b/flink-core/src/test/java/org/apache/flink/api/java/typeutils/runtime/PojoSerializerSnapshotMigrationTest.java
index 6dfcb64..fa83f05 100644
--- a/flink-core/src/test/java/org/apache/flink/api/java/typeutils/runtime/PojoSerializerSnapshotMigrationTest.java
+++ b/flink-core/src/test/java/org/apache/flink/api/java/typeutils/runtime/PojoSerializerSnapshotMigrationTest.java
@@ -31,6 +31,7 @@ import org.junit.runners.Parameterized;
 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;
 
 /**
@@ -84,6 +85,22 @@ public class PojoSerializerSnapshotMigrationTest extends TypeSerializerSnapshotM
 		}
 	}
 
+	/**
+	 * 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);
 	}
@@ -107,6 +124,19 @@ public class PojoSerializerSnapshotMigrationTest extends TypeSerializerSnapshotM
 			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();
 	}
 
@@ -125,4 +155,15 @@ public class PojoSerializerSnapshotMigrationTest extends TypeSerializerSnapshotM
 		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;
+	}
 }
diff --git a/flink-core/src/test/resources/flink-1.6-pojo-registered-subclass-serializer-data b/flink-core/src/test/resources/flink-1.6-pojo-registered-subclass-serializer-data
new file mode 100644
index 0000000..ca0b187
Binary files /dev/null and b/flink-core/src/test/resources/flink-1.6-pojo-registered-subclass-serializer-data differ
diff --git a/flink-core/src/test/resources/flink-1.6-pojo-registered-subclass-serializer-snapshot b/flink-core/src/test/resources/flink-1.6-pojo-registered-subclass-serializer-snapshot
new file mode 100644
index 0000000..4bb2055
Binary files /dev/null and b/flink-core/src/test/resources/flink-1.6-pojo-registered-subclass-serializer-snapshot differ
diff --git a/flink-core/src/test/resources/flink-1.6-pojo-unregistered-subclass-serializer-data b/flink-core/src/test/resources/flink-1.6-pojo-unregistered-subclass-serializer-data
new file mode 100644
index 0000000..3450dd4
Binary files /dev/null and b/flink-core/src/test/resources/flink-1.6-pojo-unregistered-subclass-serializer-data differ
diff --git a/flink-core/src/test/resources/flink-1.6-pojo-unregistered-subclass-serializer-snapshot b/flink-core/src/test/resources/flink-1.6-pojo-unregistered-subclass-serializer-snapshot
new file mode 100644
index 0000000..9231146
Binary files /dev/null and b/flink-core/src/test/resources/flink-1.6-pojo-unregistered-subclass-serializer-snapshot differ
diff --git a/flink-core/src/test/resources/flink-1.7-pojo-registered-subclass-serializer-data b/flink-core/src/test/resources/flink-1.7-pojo-registered-subclass-serializer-data
new file mode 100644
index 0000000..ca0b187
Binary files /dev/null and b/flink-core/src/test/resources/flink-1.7-pojo-registered-subclass-serializer-data differ
diff --git a/flink-core/src/test/resources/flink-1.7-pojo-registered-subclass-serializer-snapshot b/flink-core/src/test/resources/flink-1.7-pojo-registered-subclass-serializer-snapshot
new file mode 100644
index 0000000..ca6c054
Binary files /dev/null and b/flink-core/src/test/resources/flink-1.7-pojo-registered-subclass-serializer-snapshot differ
diff --git a/flink-core/src/test/resources/flink-1.7-pojo-unregistered-subclass-serializer-data b/flink-core/src/test/resources/flink-1.7-pojo-unregistered-subclass-serializer-data
new file mode 100644
index 0000000..3450dd4
Binary files /dev/null and b/flink-core/src/test/resources/flink-1.7-pojo-unregistered-subclass-serializer-data differ
diff --git a/flink-core/src/test/resources/flink-1.7-pojo-unregistered-subclass-serializer-snapshot b/flink-core/src/test/resources/flink-1.7-pojo-unregistered-subclass-serializer-snapshot
new file mode 100644
index 0000000..99a7482
Binary files /dev/null and b/flink-core/src/test/resources/flink-1.7-pojo-unregistered-subclass-serializer-snapshot differ