+5,327 −59 What about the current compatibility framework? I see no removal or updates.
>> Each new version is represented by a single pom Sound not good. Could you please share examples for each feature you mentioned? Anyway. I don't like the idea to implement something new instead of improving the existing. On Tue, Feb 19, 2019 at 6:48 PM Pavel Kovalenko <jokse...@gmail.com> wrote: > Igniters, > > I would like to start a discussion about replacement existing > persistence compatibility test framework with the newer version. > The main purpose of that action is simplifying compatibility tests > development and support. > > The current version of the test framework has 3 disadvantages: > 1) It's uncomfortable to add and support new versions of Ignite product. > When a new version has released a developer must manually add new test > methods to all existing test suites to support the new product version. > 2) Manual maven dependency through java api. > If a new version of Ignite product has some specific dependency version > (like H2) a developer should take care about and manually cover this case > using java api. > 3) It doesn't cover the case when some code which works on the current > version will not work on older versions due to compile/runtime > incompatibility. > > A new version of the framework that is under development right now [1] > doesn't have such problems. > Here is a list of key features and possibilities: > > 1) One codebase - multiple versions support. > The key feature of the new framework is significant simplifying adding and > supporting the new versions of Ignite product. > Each new version is represented by a single pom file that contains Ignite > dependencies of specific version (core, indexing, etc.). All subdependecies > like H2 are covered by Maven automatically. > To add a new version for compatibility a developer just need to add a new > pom file with a new version of Ignite. All existing tests will > automatically detect the new version and will run tests against this > version without additional changes. This feature covers p. 1 and 2 of the > existing framework. > 2) Unified API to access and run code on old and new versions of Ignite. > Each of Ignite instance is represented by remote JVM with a single point of > interaction - running abstract closures. Each closure is just a class which > implement a "runner interface". Each closure object is serialized to a file > through Xstream library and executed on remote Ignite JVM. This approach > gives unified access to interact with both old and new versions of Ignite > and simplifies overall tests development. > 3) Ignite versions support for closures. Sometimes a closure couldn't be > run on newer or older Ignite version due to compile/runtime incompatibility > of that code. To resolve this problem a special annotation has introduced. > This annotation named as "@Since" contains minimal possible Ignite product > version where annotated closure can be compiled and run. Such closures are > processed on Ignite versions compile phase and this makes it possible to > use one closure for multiple Ignite versions without additional code > changes. Closures and versioning resolve p. 3 of the existing framework. > > [1] - https://issues.apache.org/jira/browse/IGNITE-11133 > > I would like to hear any opinions about the new framework. >