[
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]