[ 
https://issues.apache.org/jira/browse/CASSANDRA-15539?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17032028#comment-17032028
 ] 

David Capwell commented on CASSANDRA-15539:
-------------------------------------------

bq. I would say we should split the process in two tree logical parts: first 
one is to commit API extraction, while leaving all the tests in-tree, then 
committing tests to a separate repo, and finally removing the tests. This 
allows us to work around the chicken-and-egg problem of two repositories sort 
of depending on each other.

Makes sense.  Between each phase we will need to update Jenkins and CircleCI.

bq. I'm also thinking about how to make it fully frictionless for PR builds 
that change both the library and tests, especially with snapshot builds. This 
means that we might end up with tests relying not on the latest (SNAPSHOT) 
version of the API, but rather relying on the latest published (RELEASE) 
version of the API. Let's say we have published in-jvm-dtest-api of version 
0.0.2 and started using it in Cassandra. If we first commit the part that runs 
in-jvm dtests out of tree, it will try to run tests for all branches against 
0.0.2, even though Cassandra with 0.0.2 couldn't have been built by then, since 
0.0.2 wasn't published yet. So we will have to first commit the API changes, 
then bump version of API dep in Cassandra, and only then bump the version of 
API dep in the library that runs in-jvm-tests out of tree.

Thats one of the reasons I wanted the implementation in the new repo =D

I think the better we get at having low level primitives in the core API the 
easier it will be to not require changes in the API; simple example is your 
recent interceptor patch, the existing filters can be based off that and we can 
build more on it, so wouldn't require updating the implementation.

> Extract in-jvm API and tests out of Cassandra and into a separate repository
> ----------------------------------------------------------------------------
>
>                 Key: CASSANDRA-15539
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-15539
>             Project: Cassandra
>          Issue Type: Task
>          Components: Test/dtest
>            Reporter: Alex Petrov
>            Assignee: Alex Petrov
>            Priority: Normal
>
> Extract in-jvm DTest _API_ and tests into a separate repository that is 
> shared between Cassandra branches. Tests themselves should be buildable using 
> just API, which is not  the case now, since cluster creation relies on impl 
> package, since we do not have factories / constructors in API.
> Main goals we’re trying to achieve:
> 1. We should be able to fail a build on API incompatibility between versions 
> 2. Make it as easy as possible to detect break APIs between versions. 
> 3. Make development of _tests_ based on in-jvm framework simpler
> 4. Reduce surface area of impact when making modifications to tests 
> Potentially, we’d also like to use a plugin to detect API incompatibilities 
> between in-jvm DTest API and in-branch implementations, and start running 
> tests using shared in-jvm test repository with each existing implementation 
> in the branch. This entails both running tests for all branches whenever 
> there’s a change in tests jar and running tests for a specific branch 
> whenever the branch has changed.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to