Hi, Pavel! First of all, I'd like to clarify that the Compatibility Testing Framework was designed to work with a cluster of multi-version nodes. The main idea is to run a test to verify backward compatibility or do some kind of rolling upgrades.
It's not about persistence compatibility, but actually, it is used for this now. >> 1) It's uncomfortable to add and support new versions of Ignite product. I'm not sure what is a problem here? As I understand you suggest to do similar things - adding new pom.xml when new a version is released. Pay attention that not all tests should be tested on all versions, some test may want to test specific versions each other. >> 2) Manual maven dependency through java api. This is not about usability, it's about the framework's internals. If you have issues let's fix it and improve approach if needed. >> 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. Please, describe the issue in more details? On Tue, Feb 19, 2019 at 7:55 PM Pavel Kovalenko <jokse...@gmail.com> wrote: > > Anton, > > >> What about the current compatibility framework? > Current compatibility framework will be removed after final adjusting to > new framework. > > >> Could you please share examples for each feature you mentioned? > You can see example in PR e.g. file > modules/compatibility/ignite-versions/2.1.0/pom.xml > <https://github.com/apache/ignite/pull/5974/files#diff-3c44ef223c31de9ff1e10bd7699cbcdc> > > I think such representing of Ignite product version is more cleaner than > existing approach with Java classes with dependencies and manual dependecy > management. > > >> Anyway. I don't like the idea to implement something new instead of > improving the existing. > If you have concrete proposals how to improve current framework please > share it. > > > вт, 19 февр. 2019 г. в 19:11, Anton Vinogradov <a...@apache.org>: > > > +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. > > > > > -- Best Regards, Vyacheslav D.