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

João Reis commented on CASSANDRA-19978:
---------------------------------------

I agree that TC makes it easier for people to run integration tests locally, 
I'm not disputing that. However we lose a lot of features that CCM already 
offers us out of the box that will require a lot of effort to add to a TC 
approach and maintain.
{quote}When I was handling a task to fix flaky tests, I saw some issue and PRs 
there are discussions regarding some CCM might get rusty with CI, as a result, 
those tests had been skipped.
{quote}
I'd have to check those tests because from my experience with the C# driver 
tests that heavily use CCM it's perfectly doable to write CCM tests that are 
reliable.
{quote}I agree with Stefan’s point that since GoCQL is a Go-first project, it 
makes sense to rely on Go libraries.
{quote}
I think having a standardized way of testing the C* drivers should be a higher 
priority so we can collectively maintain something that all drivers benefit 
from (and also makes it easier for C* driver contributors to work on other C* 
drivers).

 

In summary, imo TC and CCM serve the same role in the context of driver testing 
and the differences are:
 * CCM is maintained by the C* project and offers a lot more out of the box but 
is more complicated to set up
 * TC is way easier to use but requires a lot more effort on the driver 
developer side to replicate things that CCM already offers (multi node 
clusters, topology changes, config customization, using non GA C* versions)

Since the only benefit of TC seems to be the easy to use aspect we can try to 
come up with a way to make CCM easier to set up locally to run gocql tests.

Another option as I mentioned before would be to use TC for tests that don't 
require additional infrastructure code (single node clusters, no topology 
changes, default config) and keep CCM for the tests that need those things so a 
contributor can run just the TC tests locally if they want to. It would be a 
"compromise" approach that I'm not a big fan of to be honest since it requires 
dealing with 2 tools that should serve the same end goal and it would still 
prevent us from running the whole test suite with a non GA C* version unless we 
create and maintain a way to do it with TC.

> Rewrite integration test setup in Go
> ------------------------------------
>
>                 Key: CASSANDRA-19978
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-19978
>             Project: Cassandra
>          Issue Type: Task
>          Components: Client/gocql-driver
>            Reporter: João Reis
>            Priority: Normal
>
> {quote}Currently integration tests use ccm to setup a Cassandra cluster for 
> testing.
> It is not easy to simulate things like topology changes, nodes joining, 
> leaving, re-joining with a different IP address, etc.
> We could rewrite integration test runner using Docker API directly or using a 
> library like testcontainers-go.
> {quote}
>  
> https://github.com/apache/cassandra-gocql-driver/issues/1686



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

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to