tzulitai commented on a change in pull request #7580: [FLINK-11436] Fix Java 
deserialization failure of the AvroSerializer
URL: https://github.com/apache/flink/pull/7580#discussion_r251268519
 
 

 ##########
 File path: 
flink-formats/flink-avro/src/test/java/org/apache/flink/formats/avro/typeutils/AvroSerializerMigrationTest.java
 ##########
 @@ -68,4 +87,124 @@ public 
AvroSerializerMigrationTest(TestSpecification<Address> testSpec) {
                return testSpecifications.get();
        }
 
+       // 
---------------------------------------------------------------------------------------------------------------
+       // The following batch of tests are making sure that AvroSerializer 
class is able to be Java-Deserialized.
+       // see [FLINK-11436] for more information.
+       // Once we drop support for versions that carried snapshots with 
Java-Deserialized serializers we can drop this
+       // batch of tests.
+       // 
---------------------------------------------------------------------------------------------------------------
+
+       @Test
+       public void javaDeserializeFromFlink_1_6() throws IOException {
+               final String avroSerializer = 
"AAAAAQAAAUis7QAFc3IANm9yZy5hcGFjaGUuZmxpbmsuZm9ybWF0cy5hdnJvLnR5cGV1dGlscy5BdnJv\n"
 +
+                       
"U2VyaWFsaXplcgAAAAAAAAABAgACTAAMc2NoZW1hU3RyaW5ndAASTGphdmEvbGFuZy9TdHJpbmc7TAAE\n"
 +
+                       
"dHlwZXQAEUxqYXZhL2xhbmcvQ2xhc3M7eHIANG9yZy5hcGFjaGUuZmxpbmsuYXBpLmNvbW1vbi50eXBl\n"
 +
+                       
"dXRpbHMuVHlwZVNlcmlhbGl6ZXIAAAAAAAAAAQIAAHhwcHZyAC9vcmcuYXBhY2hlLmZsaW5rLmZvcm1h\n"
 +
+                       
"dHMuYXZyby5nZW5lcmF0ZWQuQWRkcmVzc+z2o/io4ENqDAAAeHIAK29yZy5hcGFjaGUuYXZyby5zcGVj\n"
 +
+                       "aWZpYy5TcGVjaWZpY1JlY29yZEJhc2UCovmsxrc0HQwAAHhw";
+
+               TypeSerializer<?> avro = javaDeserialize(avroSerializer);
+
+               assertThat(avro, instanceOf(AvroSerializer.class));
+       }
+
+       @Test
+       public void javaDeserializeFromFlink_1_6_GenericRecord() throws 
IOException {
+               String avroSerializerBase64 = 
"AAAAAQAAAges7QAFc3IANm9yZy5hcGFjaGUuZmxpbmsuZm9ybWF0cy5hdnJvLnR5cGV1dGlscy5BdnJv\n"
 +
+                       
"U2VyaWFsaXplcgAAAAAAAAABAgACTAAMc2NoZW1hU3RyaW5ndAASTGphdmEvbGFuZy9TdHJpbmc7TAAE\n"
 +
+                       
"dHlwZXQAEUxqYXZhL2xhbmcvQ2xhc3M7eHIANG9yZy5hcGFjaGUuZmxpbmsuYXBpLmNvbW1vbi50eXBl\n"
 +
+                       
"dXRpbHMuVHlwZVNlcmlhbGl6ZXIAAAAAAAAAAQIAAHhwdAEBeyJ0eXBlIjoicmVjb3JkIiwibmFtZSI6\n"
 +
+                       
"IkFkZHJlc3MiLCJuYW1lc3BhY2UiOiJvcmcuYXBhY2hlLmZsaW5rLmZvcm1hdHMuYXZyby5nZW5lcmF0\n"
 +
+                       
"ZWQiLCJmaWVsZHMiOlt7Im5hbWUiOiJudW0iLCJ0eXBlIjoiaW50In0seyJuYW1lIjoic3RyZWV0Iiwi\n"
 +
+                       
"dHlwZSI6InN0cmluZyJ9LHsibmFtZSI6ImNpdHkiLCJ0eXBlIjoic3RyaW5nIn0seyJuYW1lIjoic3Rh\n"
 +
+                       
"dGUiLCJ0eXBlIjoic3RyaW5nIn0seyJuYW1lIjoiemlwIiwidHlwZSI6InN0cmluZyJ9XX12cgAlb3Jn\n"
 +
+                       
"LmFwYWNoZS5hdnJvLmdlbmVyaWMuR2VuZXJpY1JlY29yZAAAAAAAAAAAAAAAeHA=";
+
+               TypeSerializer<?> serializer = 
javaDeserialize(avroSerializerBase64);
+
+               AvroSerializer<?> avroSerializer = (AvroSerializer<?>) 
serializer;
+               assertSame(avroSerializer.getType(), GenericRecord.class);
+               assertThat(avroSerializer.getAvroSchema(), notNullValue());
+       }
+
+       @Test
+       public void javaDeserializeFromFlink_1_7() throws IOException {
+               String avroSerializerBase64 = 
"AAAAAQAAAeKs7QAFc3IANm9yZy5hcGFjaGUuZmxpbmsuZm9ybWF0cy5hdnJvLnR5cGV1dGlscy5BdnJv\n"
 +
+                       
"U2VyaWFsaXplcgAAAAAAAAACAgADTAAOcHJldmlvdXNTY2hlbWF0AEBMb3JnL2FwYWNoZS9mbGluay9m\n"
 +
+                       
"b3JtYXRzL2F2cm8vdHlwZXV0aWxzL1NlcmlhbGl6YWJsZUF2cm9TY2hlbWE7TAAGc2NoZW1hcQB+AAFM\n"
 +
+                       
"AAR0eXBldAARTGphdmEvbGFuZy9DbGFzczt4cgA0b3JnLmFwYWNoZS5mbGluay5hcGkuY29tbW9uLnR5\n"
 +
+                       
"cGV1dGlscy5UeXBlU2VyaWFsaXplcgAAAAAAAAABAgAAeHBzcgA+b3JnLmFwYWNoZS5mbGluay5mb3Jt\n"
 +
+                       
"YXRzLmF2cm8udHlwZXV0aWxzLlNlcmlhbGl6YWJsZUF2cm9TY2hlbWEAAAAAAAAAAQMAAHhwdwEAeHNx\n"
 +
+                       
"AH4ABXcBAHh2cgAvb3JnLmFwYWNoZS5mbGluay5mb3JtYXRzLmF2cm8uZ2VuZXJhdGVkLkFkZHJlc3Ps\n"
 +
+                       
"9qP4qOBDagwAAHhyACtvcmcuYXBhY2hlLmF2cm8uc3BlY2lmaWMuU3BlY2lmaWNSZWNvcmRCYXNlAqL5\n"
 +
+                       "rMa3NB0MAAB4cA==";
+
+               AvroSerializer<?> avroSerializer = (AvroSerializer<?>) 
javaDeserialize(avroSerializerBase64);
+               assertSame(avroSerializer.getType(), Address.class);
+               assertThat(avroSerializer.getAvroSchema(), is(Address.SCHEMA$));
+       }
+
+       @Test
+       public void javaDeserializeFromFlink_1_7_afterInitialization() throws 
IOException {
+               String avroSerializerBase64 = 
"AAAAAQAAAeKs7QAFc3IANm9yZy5hcGFjaGUuZmxpbmsuZm9ybWF0cy5hdnJvLnR5cGV1dGlscy5BdnJv\n"
 +
+                       
"U2VyaWFsaXplcgAAAAAAAAACAgADTAAOcHJldmlvdXNTY2hlbWF0AEBMb3JnL2FwYWNoZS9mbGluay9m\n"
 +
+                       
"b3JtYXRzL2F2cm8vdHlwZXV0aWxzL1NlcmlhbGl6YWJsZUF2cm9TY2hlbWE7TAAGc2NoZW1hcQB+AAFM\n"
 +
+                       
"AAR0eXBldAARTGphdmEvbGFuZy9DbGFzczt4cgA0b3JnLmFwYWNoZS5mbGluay5hcGkuY29tbW9uLnR5\n"
 +
+                       
"cGV1dGlscy5UeXBlU2VyaWFsaXplcgAAAAAAAAABAgAAeHBzcgA+b3JnLmFwYWNoZS5mbGluay5mb3Jt\n"
 +
+                       
"YXRzLmF2cm8udHlwZXV0aWxzLlNlcmlhbGl6YWJsZUF2cm9TY2hlbWEAAAAAAAAAAQMAAHhwdwEAeHNx\n"
 +
+                       
"AH4ABXcBAHh2cgAvb3JnLmFwYWNoZS5mbGluay5mb3JtYXRzLmF2cm8uZ2VuZXJhdGVkLkFkZHJlc3Ps\n"
 +
+                       
"9qP4qOBDagwAAHhyACtvcmcuYXBhY2hlLmF2cm8uc3BlY2lmaWMuU3BlY2lmaWNSZWNvcmRCYXNlAqL5\n"
 +
+                       "rMa3NB0MAAB4cA==";
+
+               AvroSerializer<?> avroSerializer = (AvroSerializer<?>) 
javaDeserialize(avroSerializerBase64);
+               assertSame(avroSerializer.getType(), Address.class);
+               assertThat(avroSerializer.getAvroSchema(), is(Address.SCHEMA$));
+       }
+
+       @Test
+       public void compositeSerializerFromFlink_1_6_WithNestedAvroSerializer() 
throws IOException {
+               String streamElementSerializerBase64 = 
"AAAAAQAAAq2s7QAFc3IAR29yZy5hcGFjaGUuZmxpbmsuc3RyZWFtaW5nLnJ1bnRpbWUuc3RyZWFtcmVj\n"
 +
+                       
"b3JkLlN0cmVhbUVsZW1lbnRTZXJpYWxpemVyAAAAAAAAAAECAAFMAA50eXBlU2VyaWFsaXplcnQANkxv\n"
 +
+                       
"cmcvYXBhY2hlL2ZsaW5rL2FwaS9jb21tb24vdHlwZXV0aWxzL1R5cGVTZXJpYWxpemVyO3hyADRvcmcu\n"
 +
+                       
"YXBhY2hlLmZsaW5rLmFwaS5jb21tb24udHlwZXV0aWxzLlR5cGVTZXJpYWxpemVyAAAAAAAAAAECAAB4\n"
 +
+                       
"cHNyADZvcmcuYXBhY2hlLmZsaW5rLmZvcm1hdHMuYXZyby50eXBldXRpbHMuQXZyb1NlcmlhbGl6ZXIA\n"
 +
+                       
"AAAAAAAAAQIAAkwADHNjaGVtYVN0cmluZ3QAEkxqYXZhL2xhbmcvU3RyaW5nO0wABHR5cGV0ABFMamF2\n"
 +
+                       
"YS9sYW5nL0NsYXNzO3hxAH4AAnQBAXsidHlwZSI6InJlY29yZCIsIm5hbWUiOiJBZGRyZXNzIiwibmFt\n"
 +
+                       
"ZXNwYWNlIjoib3JnLmFwYWNoZS5mbGluay5mb3JtYXRzLmF2cm8uZ2VuZXJhdGVkIiwiZmllbGRzIjpb\n"
 +
+                       
"eyJuYW1lIjoibnVtIiwidHlwZSI6ImludCJ9LHsibmFtZSI6InN0cmVldCIsInR5cGUiOiJzdHJpbmci\n"
 +
+                       
"fSx7Im5hbWUiOiJjaXR5IiwidHlwZSI6InN0cmluZyJ9LHsibmFtZSI6InN0YXRlIiwidHlwZSI6InN0\n"
 +
+                       
"cmluZyJ9LHsibmFtZSI6InppcCIsInR5cGUiOiJzdHJpbmcifV19dnIAJW9yZy5hcGFjaGUuYXZyby5n\n"
 +
+                       "ZW5lcmljLkdlbmVyaWNSZWNvcmQAAAAAAAAAAAAAAHhw";
+
+               StreamElementSerializer<?> ser = (StreamElementSerializer<?>) 
javaDeserialize(streamElementSerializerBase64);
+               TypeSerializer<?> containedTypeSerializer = 
ser.getContainedTypeSerializer();
+
+               assertThat(containedTypeSerializer, 
instanceOf(AvroSerializer.class));
+
+               AvroSerializer<?> avroSerializer = (AvroSerializer<?>) 
containedTypeSerializer;
+               assertSame(avroSerializer.getType(), GenericRecord.class);
+               assertThat(avroSerializer.getAvroSchema(), is(Address.SCHEMA$));
+       }
+
+       @Test
+       public void makeSureThatFieldsWereNotChanged() {
 
 Review comment:
   Would it be even safer to also check that we don't attempt to uptick the 
serial version uid here?

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to