-
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 13 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,64 @@ | ||||||||||||||
| package redisxtest | ||||||||||||||
|
|
||||||||||||||
| import ( | ||||||||||||||
| "context" | ||||||||||||||
|
|
||||||||||||||
| "github.com/alicebob/miniredis/v2" | ||||||||||||||
| "github.com/joomcode/redispipe/redis" | ||||||||||||||
| "github.com/joomcode/redispipe/redisconn" | ||||||||||||||
|
|
||||||||||||||
| "github.com/reddit/baseplate.go/redis/cache/redisx" | ||||||||||||||
| ) | ||||||||||||||
|
|
||||||||||||||
| // MockRedisCluster wraps a local version of redis | ||||||||||||||
| type MockRedisCluster struct { | ||||||||||||||
| redisCluster *miniredis.Miniredis | ||||||||||||||
| } | ||||||||||||||
|
|
||||||||||||||
| func NewMockRedisCluster() (mockRedisCluster MockRedisCluster, err error) { | ||||||||||||||
| redisCluster, err := miniredis.Run() | ||||||||||||||
| if err != nil { | ||||||||||||||
| return MockRedisCluster{}, err | ||||||||||||||
| } | ||||||||||||||
|
|
||||||||||||||
| return MockRedisCluster{ | ||||||||||||||
| redisCluster: redisCluster, | ||||||||||||||
| }, nil | ||||||||||||||
| } | ||||||||||||||
|
|
||||||||||||||
| // Addr returns address of mock redis cluster e.g. '127.0.0.1:12345'. | ||||||||||||||
| func (mrc *MockRedisCluster) Addr() string { | ||||||||||||||
| return mrc.redisCluster.Addr() | ||||||||||||||
| } | ||||||||||||||
|
|
||||||||||||||
| // Close shuts down the MockRedisCluster | ||||||||||||||
| func (mrc *MockRedisCluster) Close() error { | ||||||||||||||
| mrc.redisCluster.Close() | ||||||||||||||
| return nil | ||||||||||||||
| } | ||||||||||||||
|
|
||||||||||||||
| // NewMockRedisClient sets up a client and sender to a mock redis cluster | ||||||||||||||
| func NewMockRedisClient( | ||||||||||||||
|
Comment on lines
+13
to
+14
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. now there's nothing really "mocking" here (the mocking part is done via miniredis, which is no longer done here). I would rename this function to
|
||||||||||||||
| ctx context.Context, | ||||||||||||||
| address string, | ||||||||||||||
| opts redisconn.Opts, | ||||||||||||||
| ) (client redisx.BaseSync, 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. I would still recommend change this function signature into: it's OK for the mocked cluster to be a global singleton that's initialized in |
||||||||||||||
|
|
||||||||||||||
| // Create connection | ||||||||||||||
| conn, err := redisconn.Connect(ctx, address, opts) | ||||||||||||||
| if err != nil { | ||||||||||||||
| return redisx.BaseSync{}, nil, err | ||||||||||||||
| } | ||||||||||||||
|
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
|
||||||||||||||
|
|
||||||||||||||
| // Create client | ||||||||||||||
| client = redisx.BaseSync{ | ||||||||||||||
| SyncCtx: redis.SyncCtx{S: conn}, | ||||||||||||||
| } | ||||||||||||||
|
|
||||||||||||||
| // Teardown closure | ||||||||||||||
| teardown = func() { | ||||||||||||||
| 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 | ||||||||||||||
| } | ||||||||||||||
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.