Browse Source
The current implementation of subscribe is difficult to mock because the queue that we send updates on in unexported, so you cannot create a subscribe.Client object and then add your own updates. While it is possible to run a subscribe server in tests, subscribe servers will shutdown before dispatching their udpates to all clients, which can be flakey (and is difficult to workaround). In this commit, we add a subscription interface so that these testing struggles can be addressed with a mock.master
carla
4 years ago
4 changed files with 36 additions and 8 deletions
@ -0,0 +1,17 @@
|
||||
package subscribe |
||||
|
||||
// Subscription is an interface implemented by subscriptions to a server
|
||||
// providing updates.
|
||||
type Subscription interface { |
||||
// Updates returns a read-only channel where the updates the client has
|
||||
// subscribed to will be delivered.
|
||||
Updates() <-chan interface{} |
||||
|
||||
// Quit is a channel that will be closed in case the server decides to
|
||||
// no longer deliver updates to this client.
|
||||
Quit() <-chan struct{} |
||||
|
||||
// Cancel should be called in case the client no longer wants to
|
||||
// subscribe for updates from the server.
|
||||
Cancel() |
||||
} |
Loading…
Reference in new issue