scylladb / gocql

Package gocql implements a fast and robust ScyllaDB client for the Go programming language.
https://docs.scylladb.com/stable/using-scylla/drivers/cql-drivers/scylla-go-driver.html
BSD 3-Clause "New" or "Revised" License
189 stars 59 forks source link

Build API for CCM to be used to provision and manipulate clusters in integration tests #336

Open dkropachev opened 1 week ago

dkropachev commented 1 week ago

Basic functional requirements

  1. It is possible to have couple of clusters alive at the same time
  2. Logs should be accessible at the end, user should be able to track them down to the test
  3. It should be possible to use one cluster for multiple tests
  4. Actual scylla version is read from the cluster
  5. Input scylla version should support CCM format: release:6.1, unstable:master/latest, unstable/master:2020-02-15T03:02:19Z, etc
  6. Input scylla version should support regular format: 6.2.0, 2024.1
  7. It assumes that CCM is already present in the system

Additional functional requirements

  1. Have a cluster pool with resource limitations: memory, CPU. Say you want to make it possible tests to run in parallel on different clusters, but you can't spawn all the clusters at the same time, so you need to have a pool and a queue, tests submitting requests to provision a cluster to the queue, pool eventually fulfills the requests when resources test wants are available, when test is done, cluster is stopped, resources are returned back to a pool and it can provision another cluster.
  2. Make it possible for a pool to reuse cluster. Need to test if it makes sense, just to check if it is easier to clean cluster up or spawn new one, after 6.2.0 cluster provisioning very quick.