Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(scylladb): add scylladb provider #2919

Open
wants to merge 21 commits into
base: main
Choose a base branch
from

Conversation

danielhe4rt
Copy link

What does this PR do?

Implements the Database ScyllaDB as a new provider.

Under the ScyllaDBContainer you will have the possibility of:

  • Enable Shard Awareness port using WithShardAwareness;
  • Set Docker Start Commands with WithCommand
  • Fetch ports with ConnectionHost
  • Enable ScyllaDB Alternator Endpoint (DynamoDB Compatible API)

API Example

ctx := context.Background()

ctr, err := scylladb.Run(ctx,
   "scylladb/scylla:6.2",
   scylladb.WithConfigFile(filepath.Join("testdata", "scylla.yaml")),
   scylladb.WithShardAwareness(),
   //...
)

Why is it important?

ScyllaDB is a NoSQL Database that is being constantly used by big companies and acts as a Drop-in Replacement to CassandraDB and DynamoDB.

How to test this PR

Clone the repository and enter the scylladb module folder:

git clone https://github.com/basementdevs/testcontainers-go basement-testcontainers-go
cd basement-testcontainers-go/modules/scylladb
make test

@danielhe4rt danielhe4rt requested a review from a team as a code owner December 13, 2024 16:29
Copy link

netlify bot commented Dec 13, 2024

Deploy Preview for testcontainers-go ready!

Name Link
🔨 Latest commit aabf4d9
🔍 Latest deploy log https://app.netlify.com/sites/testcontainers-go/deploys/6781712653ac6600080fbe71
😎 Deploy Preview https://deploy-preview-2919--testcontainers-go.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

Copy link
Contributor

@stevenh stevenh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for a PR @danielhe4rt, have done an initial review with some suggestions and questions for you.

@@ -0,0 +1,194 @@
package scylladb_test
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we include a test using ssl? I think would be nice to have.

}

// WithShardAwareness enable shard-awareness in the ScyllaDB container so you can use the `19042` port.
func WithShardAwareness() testcontainers.CustomizeRequestOption {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

scylladb starts both ports 9042 and 19042 by default. IMO we should expose a fn to get the mapped port for 19042 and omit this one.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@danielhe4rt @eddumelendez I'm taking over the PR and adding the suggestions on top of the original PR.

I'd like to have this in the upcoming release.

Thanks all for your time here

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ups, I noticed this PR is sent from the main branch of the fork, so unfortunately I cannot contribute commits to it.

@danielhe4rt could you please address the above comments 🙏 ?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done! Sorry for the delay. Tomorrow I'll sync with @CodeLieutenant and finish it for good. Give us one more day @mdelapenya. We're also gonna stream it, so you can find us on twitch.tv/danielhe4rt.

@danielhe4rt danielhe4rt requested a review from mdelapenya January 9, 2025 19:03
Copy link
Member

@mdelapenya mdelapenya left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@danielhe4rt thanks for your time in this PR, I added a few comments/suggestions in the review.

Could you address them 🙏 ?

Thank you in advance

}, nil
}

func getDynamoAlternatorClient(t *testing.T, c *scylladb.Container, port int) (*dynamodb.Client, error) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion: if the assertions in the calling tests are all the same (create a table using the client), you may want to merge them into this helper function, and name it assertCreateTable(t *testing.T). You could also merge the createTable helper

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants