func TestStackWithPipe(t *testing.T) { r, w := inmem.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(&beam.Message{"hello", []string{"wonderful", "world"}}, 0) if err != nil { t.Fatal(err) } }) }
// Misbehaving backends must be removed func TestStackAddBad(t *testing.T) { s := NewStackSender() buf := inmem.Buffer{} s.Add(&buf) r, w := inmem.Pipe() s.Add(w) if s.Len() != 2 { t.Fatalf("%#v", s) } r.Close() if _, _, err := s.Send(&beam.Message{"for the buffer", nil}, 0); err != nil { t.Fatal(err) } if s.Len() != 1 { t.Fatalf("%#v") } if len(buf) != 1 { t.Fatalf("%#v", buf) } if buf[0].Name != "for the buffer" { t.Fatalf("%#v", buf) } }