mirror of https://github.com/docker/docs.git
140 lines
2.7 KiB
Go
140 lines
2.7 KiB
Go
package libswarm
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
func TestVerbArgs(t *testing.T) {
|
|
receiver, sender := Pipe()
|
|
sentMsg := &Message{Verb: Set, Args: []string{"foo", "bar"}}
|
|
|
|
go sender.Send(sentMsg)
|
|
|
|
receivedMsg, err := receiver.Receive(0)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if receivedMsg == nil {
|
|
t.Fatalf("Didn't get a message")
|
|
}
|
|
if receivedMsg.Verb != sentMsg.Verb {
|
|
t.Fatalf("Expected %s, got %s", sentMsg.Verb.String(), receivedMsg.Verb.String())
|
|
}
|
|
if !reflect.DeepEqual(receivedMsg.Args, sentMsg.Args) {
|
|
t.Fatalf("Expected %#v, got %#v", sentMsg.Args, receivedMsg.Args)
|
|
}
|
|
}
|
|
|
|
func TestReturnChannel(t *testing.T) {
|
|
receiver, sender := Pipe()
|
|
replyReceiver, replySender := Pipe()
|
|
|
|
go func() {
|
|
receivedMsg, err := receiver.Receive(0)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if receivedMsg == nil {
|
|
t.Fatalf("Didn't get a message")
|
|
}
|
|
receivedMsg.Ret.Send(&Message{Verb: Set})
|
|
}()
|
|
|
|
_, err := sender.Send(&Message{Verb: Get, Ret: replySender})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
reply, err := replyReceiver.Receive(0)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if reply == nil {
|
|
t.Fatalf("Didn't get a reply")
|
|
}
|
|
if reply.Verb != Set {
|
|
t.Fatalf("Expected Set, got %s", reply.Verb.String())
|
|
}
|
|
}
|
|
|
|
func TestRetPipe(t *testing.T) {
|
|
receiver, sender := Pipe()
|
|
|
|
go func() {
|
|
receivedMsg, err := receiver.Receive(0)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if receivedMsg == nil {
|
|
t.Fatalf("Didn't get a message")
|
|
}
|
|
receivedMsg.Ret.Send(&Message{Verb: Set})
|
|
}()
|
|
|
|
replyReceiver, err := sender.Send(&Message{Verb: Get, Ret: RetPipe})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
reply, err := replyReceiver.Receive(0)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if reply == nil {
|
|
t.Fatalf("Didn't get a reply")
|
|
}
|
|
if reply.Verb != Set {
|
|
t.Fatalf("Expected Set, got %s", reply.Verb.String())
|
|
}
|
|
}
|
|
|
|
func TestAttachment(t *testing.T) {
|
|
expectedContents := "hello world\n"
|
|
|
|
f, err := ioutil.TempFile("/tmp", "libswarm-beam-TestAttachment-")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer f.Close()
|
|
if err = ioutil.WriteFile(f.Name(), []byte(expectedContents), 0700); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err = f.Sync(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
receiver, sender := Pipe()
|
|
|
|
go func() {
|
|
msg, err := receiver.Receive(0)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
msg.Ret.Send(&Message{Verb: Connect, Att: f})
|
|
}()
|
|
|
|
ret, err := sender.Send(&Message{Verb: Connect, Ret: RetPipe})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
reply, err := ret.Receive(0)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if reply.Att == nil {
|
|
t.Fatalf("Didn't get an attachment back")
|
|
}
|
|
|
|
contents, err := ioutil.ReadAll(reply.Att)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if string(contents) != expectedContents {
|
|
t.Fatalf("Expected %#v, got %#v", expectedContents, string(contents))
|
|
}
|
|
}
|