docs/utils/hub_test.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)
}
})
}