[ 
https://issues.apache.org/jira/browse/IGNITE-25264?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Iurii Gerzhedovich updated IGNITE-25264:
----------------------------------------
    Component/s: sql

> Catalog serialization tests improvements
> ----------------------------------------
>
>                 Key: IGNITE-25264
>                 URL: https://issues.apache.org/jira/browse/IGNITE-25264
>             Project: Ignite
>          Issue Type: Improvement
>          Components: sql
>    Affects Versions: 3.0
>            Reporter: Viacheslav Blinov
>            Assignee: Maksim Zhuravkov
>            Priority: Major
>              Labels: ignite-3
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> Currently we have a few problems in catalog serialization tests:
>  * tests code is a mixture of data fixtures, algorithms of making a check and 
> assertions - it would be beneficial for supportability of the tests to split 
> those aspects
>  * tests make incorrect assumption that the version of entity serialization 
> format should be the same as the version of the overall serialization 
> protocol, while the design of the feature intended to make those aspects 
> separate, in particular:
> {code:java}
> private static class VersionCheckingProvider implements 
> CatalogEntrySerializerProvider {
>     private final CatalogEntrySerializerProvider provider;
>     private final int protocolVersion;
>     private VersionCheckingProvider(int expectedProtocolVersion) {
>         this.provider = DEFAULT_PROVIDER;
>         this.protocolVersion = expectedProtocolVersion;
>     }
>     @Override
>     public <T extends MarshallableEntry> CatalogObjectSerializer<T> get(int 
> version, int typeId) {
>         CatalogObjectSerializer<MarshallableEntry> serializer = 
> provider.get(version, typeId);
>         checkVersion(typeId, version);
>         return (CatalogObjectSerializer<T>) serializer;
>     }
>     @Override
>     public int latestSerializerVersion(int typeId) {
>         int latest = provider.latestSerializerVersion(typeId);
>         checkVersion(typeId, latest);
>         return latest;
>     }
>     private void checkVersion(int typeId, int entryVersion) {
>         if (entryVersion != protocolVersion) {
>             Assertions.fail("Requested unexpected version for type " + typeId 
> + ". Expected version must be " + protocolVersion);
>         }
>     }
> } {code}
>  * tests lack utility infrastructure to easily create new binary fixtures to 
> add new testcases with changed serialization format for specific entities, 
> some simple utility to create a new binary asset to be used in a 
> deserialization test later would be beneficial



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to