mirror of https://github.com/docker/docs.git
56 lines
1.2 KiB
Go
56 lines
1.2 KiB
Go
package utils
|
|
|
|
import (
|
|
"github.com/docker/beam"
|
|
"github.com/dotcloud/docker/pkg/testutils"
|
|
"testing"
|
|
)
|
|
|
|
func TestHubSendEmpty(t *testing.T) {
|
|
hub := NewHub()
|
|
// Send to empty hub should silently drop
|
|
r, w, err := hub.Send(&beam.Message{Name: "hello", Args: nil}, beam.R|beam.W)
|
|
// Send must not return an error
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
// We set beam.R, so a valid receiver must be returned
|
|
if r == nil {
|
|
t.Fatalf("%#v", r)
|
|
}
|
|
// We set beam.W, so a valid receiver must be returned
|
|
if w == nil {
|
|
t.Fatalf("%#v", w)
|
|
}
|
|
}
|
|
|
|
type CountSender int
|
|
|
|
func (s *CountSender) Send(msg *beam.Message, mode int) (beam.Receiver, beam.Sender, error) {
|
|
(*s)++
|
|
return nil, nil, nil
|
|
}
|
|
|
|
func TestHubSendOneHandler(t *testing.T) {
|
|
hub := NewHub()
|
|
defer hub.Close()
|
|
testutils.Timeout(t, func() {
|
|
in, _, err := hub.Send(&beam.Message{Name: "register", Args: nil}, beam.R)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
go func() {
|
|
if _, _, err := hub.Send(&beam.Message{Name: "hello", Args: nil}, 0); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}()
|
|
msg, _, _, err := in.Receive(0)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if msg.Name != "hello" {
|
|
t.Fatalf("%#v", msg)
|
|
}
|
|
})
|
|
}
|