-
Notifications
You must be signed in to change notification settings - Fork 87
Add redisxtest #484
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
base: master
Are you sure you want to change the base?
Add redisxtest #484
Changes from 5 commits
0bcd4fb
1046c61
109ab82
6149f7f
94e25e8
6443170
b9a7d47
a07bb69
a3a0caa
d66f70d
f638087
124335f
acd77b3
481b431
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| // Package redisxtest provides utilities for baseplate.go/redids/cache/redisx testing. | ||
| // | ||
| // This includes functions for mocking redis instances. | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. same comment here regarding "mocking". I think with the current state of this change the first paragraph is enough for the package doc and we can just remove this paragraph. |
||
| package redisxtest | ||
| Original file line number | Diff line number | Diff line change | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,43 @@ | ||||||||||||||
| package redisxtest | ||||||||||||||
|
|
||||||||||||||
| import ( | ||||||||||||||
| "context" | ||||||||||||||
| "time" | ||||||||||||||
|
|
||||||||||||||
| "github.com/alicebob/miniredis/v2" | ||||||||||||||
| "github.com/joomcode/redispipe/redis" | ||||||||||||||
| "github.com/joomcode/redispipe/redisconn" | ||||||||||||||
|
|
||||||||||||||
| "github.com/reddit/baseplate.go/redis/cache/redisx" | ||||||||||||||
| ) | ||||||||||||||
|
|
||||||||||||||
| // NewMockRedisClient sets up a mock redis cluster, client and sender | ||||||||||||||
| // This should be called from TestMain since the miniredis instance created is locked | ||||||||||||||
| func NewMockRedisClient(ctx context.Context, timeout time.Duration) (client redisx.Syncx, teardown func(), err error) { | ||||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. if this is only intended to be used by unit tests, we do not really need to return
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Looks like the main use case is to set this up in
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @konradreiche that is correct. We have been following the pattern of setup in |
||||||||||||||
| redisCluster, err := miniredis.Run() | ||||||||||||||
| if err != nil { | ||||||||||||||
| return redisx.Syncx{}, func() {}, err | ||||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nit: in an error return, we would want to return |
||||||||||||||
| } | ||||||||||||||
|
Comment on lines
+24
to
+26
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. oh and this function no longer need to return an error. this can be just:
Suggested change
|
||||||||||||||
|
|
||||||||||||||
| conn, err := redisconn.Connect(ctx, redisCluster.Addr(), redisconn.Opts{IOTimeout: timeout}) | ||||||||||||||
| if err != nil { | ||||||||||||||
| redisCluster.Close() | ||||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this is a very unexpected side effect. if a client cannot connect to the server, it will also kill the server, causing other, clients to stop working.
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Removed.
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Removed |
||||||||||||||
| return redisx.Syncx{}, func() {}, err | ||||||||||||||
| } | ||||||||||||||
|
|
||||||||||||||
| client = redisx.Syncx{ | ||||||||||||||
| Sync: redisx.BaseSync{SyncCtx: redis.SyncCtx{S: conn}}, | ||||||||||||||
| } | ||||||||||||||
|
|
||||||||||||||
| // Teardown closure | ||||||||||||||
| teardown = func() { | ||||||||||||||
| redisCluster.Close() | ||||||||||||||
| conn.Close() | ||||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. check the error and log it if it fails? |
||||||||||||||
| } | ||||||||||||||
|
|
||||||||||||||
| return client, teardown, nil | ||||||||||||||
| } | ||||||||||||||
|
|
||||||||||||||
| func FlushRedis(ctx context.Context, client redisx.Syncx) error { | ||||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't see this used by
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Removing. This was a func we were using locally that got dropped in here. Agree it is probably not necessary. |
||||||||||||||
| return client.Send(ctx, redisx.Req(nil, "FLUSHALL")) | ||||||||||||||
| } | ||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
no need to spell out the full
baseplate.go/redids/cache/redisx, just say "... for redisx testing" is enough.