3aa008ab04
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.
18 lines
549 B
Go
18 lines
549 B
Go
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()
|
|
}
|