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

zakelly pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git


The following commit(s) were added to refs/heads/master by this push:
     new 9fbcc0f0810 [FLINK-35458][test][type] Add serializer upgrade test for 
set serializer (#26445)
9fbcc0f0810 is described below

commit 9fbcc0f0810f1bd27c5a52b82372b90c6718180e
Author: Zhanghao Chen <m...@outlook.com>
AuthorDate: Mon Jun 16 14:34:32 2025 +0800

    [FLINK-35458][test][type] Add serializer upgrade test for set serializer 
(#26445)
---
 .../typeutils/base/SetSerializerUpgradeTest.java   | 108 +++++++++++++++++++++
 .../set-serializer-2.0/serializer-snapshot         | Bin 0 -> 184 bytes
 .../test/resources/set-serializer-2.0/test-data    | Bin 0 -> 19 bytes
 3 files changed, 108 insertions(+)

diff --git 
a/flink-core/src/test/java/org/apache/flink/api/common/typeutils/base/SetSerializerUpgradeTest.java
 
b/flink-core/src/test/java/org/apache/flink/api/common/typeutils/base/SetSerializerUpgradeTest.java
new file mode 100644
index 00000000000..b21086db859
--- /dev/null
+++ 
b/flink-core/src/test/java/org/apache/flink/api/common/typeutils/base/SetSerializerUpgradeTest.java
@@ -0,0 +1,108 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.flink.api.common.typeutils.base;
+
+import org.apache.flink.FlinkVersion;
+import org.apache.flink.api.common.typeutils.TypeSerializer;
+import org.apache.flink.api.common.typeutils.TypeSerializerConditions;
+import org.apache.flink.api.common.typeutils.TypeSerializerSchemaCompatibility;
+import org.apache.flink.api.common.typeutils.TypeSerializerUpgradeTestBase;
+import org.apache.flink.test.util.MigrationTest;
+
+import org.assertj.core.api.Condition;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+/** A {@link TypeSerializerUpgradeTestBase} for {@link SetSerializerSnapshot}. 
*/
+class SetSerializerUpgradeTest extends 
TypeSerializerUpgradeTestBase<List<String>, List<String>> {
+
+    private static final String SPEC_NAME = "set-serializer";
+
+    @Override
+    public Collection<FlinkVersion> getMigrationVersions() {
+        return FlinkVersion.rangeOf(
+                FlinkVersion.v2_0, 
MigrationTest.getMostRecentlyPublishedVersion());
+    }
+
+    public Collection<TestSpecification<?, ?>> 
createTestSpecifications(FlinkVersion flinkVersion)
+            throws Exception {
+
+        ArrayList<TestSpecification<?, ?>> testSpecifications = new 
ArrayList<>();
+        testSpecifications.add(
+                new TestSpecification<>(
+                        SPEC_NAME,
+                        flinkVersion,
+                        SetSerializerSetup.class,
+                        SetSerializerVerifier.class));
+
+        return testSpecifications;
+    }
+
+    // 
----------------------------------------------------------------------------------------------
+    //  Specification for "list-serializer"
+    // 
----------------------------------------------------------------------------------------------
+
+    /**
+     * This class is only public to work with {@link
+     * org.apache.flink.api.common.typeutils.ClassRelocator}.
+     */
+    public static final class SetSerializerSetup implements 
PreUpgradeSetup<Set<String>> {
+        @Override
+        public TypeSerializer<Set<String>> createPriorSerializer() {
+            return new SetSerializer<>(StringSerializer.INSTANCE);
+        }
+
+        @Override
+        public Set<String> createTestData() {
+            Set<String> data = new HashSet<>(2);
+            data.add("Apache");
+            data.add("Flink");
+            return data;
+        }
+    }
+
+    /**
+     * This class is only public to work with {@link
+     * org.apache.flink.api.common.typeutils.ClassRelocator}.
+     */
+    public static final class SetSerializerVerifier implements 
UpgradeVerifier<Set<String>> {
+        @Override
+        public TypeSerializer<Set<String>> createUpgradedSerializer() {
+            return new SetSerializer<>(StringSerializer.INSTANCE);
+        }
+
+        @Override
+        public Condition<Set<String>> testDataCondition() {
+            Set<String> data = new HashSet<>(2);
+            data.add("Apache");
+            data.add("Flink");
+            return new Condition<>(data::equals, "data is (Apache, Flink)");
+        }
+
+        @Override
+        public Condition<TypeSerializerSchemaCompatibility<Set<String>>>
+                schemaCompatibilityCondition(FlinkVersion version) {
+            return TypeSerializerConditions.isCompatibleAsIs();
+        }
+    }
+}
diff --git 
a/flink-core/src/test/resources/set-serializer-2.0/serializer-snapshot 
b/flink-core/src/test/resources/set-serializer-2.0/serializer-snapshot
new file mode 100644
index 00000000000..7506c7227f0
Binary files /dev/null and 
b/flink-core/src/test/resources/set-serializer-2.0/serializer-snapshot differ
diff --git a/flink-core/src/test/resources/set-serializer-2.0/test-data 
b/flink-core/src/test/resources/set-serializer-2.0/test-data
new file mode 100644
index 00000000000..c61ce3c9e82
Binary files /dev/null and 
b/flink-core/src/test/resources/set-serializer-2.0/test-data differ

Reply via email to