mirror of https://github.com/docker/docs.git
75 lines
1.4 KiB
Go
75 lines
1.4 KiB
Go
package unix
|
|
|
|
import (
|
|
"github.com/docker/libswarm/beam"
|
|
"github.com/dotcloud/docker/pkg/testutils"
|
|
"testing"
|
|
)
|
|
|
|
func TestPair(t *testing.T) {
|
|
r, w, err := Pair()
|
|
if err != nil {
|
|
t.Fatal("Unexpected error")
|
|
}
|
|
defer r.Close()
|
|
defer w.Close()
|
|
testutils.Timeout(t, func() {
|
|
go func() {
|
|
msg, err := r.Receive(0)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if msg.Verb != beam.Log {
|
|
t.Fatalf("%#v", *msg)
|
|
}
|
|
if msg.Args[0] != "hello world" {
|
|
t.Fatalf("%#v", *msg)
|
|
}
|
|
}()
|
|
_, err := w.Send(&beam.Message{Verb: beam.Log, Args: []string{"hello world"}})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestSendReply(t *testing.T) {
|
|
r, w, err := Pair()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer r.Close()
|
|
defer w.Close()
|
|
testutils.Timeout(t, func() {
|
|
// Send
|
|
go func() {
|
|
// Send a message with mode=R
|
|
ret, err := w.Send(&beam.Message{Args: []string{"this is the request"}, Ret: beam.RetPipe})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
// Read for a reply
|
|
msg, err := ret.Receive(0)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if msg.Args[0] != "this is the reply" {
|
|
t.Fatalf("%#v", msg)
|
|
}
|
|
}()
|
|
// Receive a message with mode=W
|
|
msg, err := r.Receive(beam.Ret)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if msg.Args[0] != "this is the request" {
|
|
t.Fatalf("%#v", msg)
|
|
}
|
|
// Send a reply
|
|
_, err = msg.Ret.Send(&beam.Message{Args: []string{"this is the reply"}})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
})
|
|
}
|