mirror of https://github.com/docker/docs.git
Basic tests for Message/Sender/Receiver
Signed-off-by: Aanand Prasad <aanand.prasad@gmail.com>
This commit is contained in:
parent
1e15a54d0e
commit
189af64caf
|
@ -0,0 +1,139 @@
|
|||
package beam
|
||||
|
||||
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))
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue