mirror of
https://github.com/docker/docs.git
synced 2026-11-05 00:14:17 +03:00
StackSender forwards beam messages to a dynamic list of backend receivers. New backends are stacked on top. When a message is sent, each backend is tried until one succeeds. Any failing backends encountered along the way are removed from the queue. Signed-off-by: Solomon Hykes <solomon@docker.com>
34 lines
607 B
Go
34 lines
607 B
Go
package inmem
|
|
|
|
import (
|
|
"github.com/dotcloud/docker/pkg/testutils"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestSendStack(t *testing.T) {
|
|
r, w := Pipe()
|
|
defer r.Close()
|
|
defer w.Close()
|
|
s := NewStackSender()
|
|
s.Add(w)
|
|
testutils.Timeout(t, func() {
|
|
go func() {
|
|
msg, _, _, err := r.Receive(0)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if msg.Name != "hello" {
|
|
t.Fatalf("%#v", msg)
|
|
}
|
|
if strings.Join(msg.Args, " ") != "wonderful world" {
|
|
t.Fatalf("%#v", msg)
|
|
}
|
|
}()
|
|
_, _, err := s.Send(&Message{"hello", []string{"wonderful", "world"}, nil}, 0)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
})
|
|
}
|