github.com/Jeffail/benthos/v3@v3.65.0/lib/message/roundtrip/writer_test.go (about) 1 package roundtrip 2 3 import ( 4 "context" 5 "testing" 6 "time" 7 8 "github.com/Jeffail/benthos/v3/lib/message" 9 "github.com/Jeffail/benthos/v3/lib/types" 10 ) 11 12 func TestWriter(t *testing.T) { 13 impl := &resultStoreImpl{} 14 w := Writer{} 15 if err := w.Connect(); err != nil { 16 t.Fatal(err) 17 } 18 19 ctx := context.WithValue(context.Background(), ResultStoreKey, impl) 20 21 msg := message.New(nil) 22 var p types.Part = message.NewPart([]byte("foo")) 23 p = message.WithContext(ctx, p) 24 msg.Append(p) 25 msg.Append(message.NewPart([]byte("bar"))) 26 27 if err := w.Write(msg); err != nil { 28 t.Fatal(err) 29 } 30 31 impl.Get() 32 results := impl.Get() 33 if len(results) != 1 { 34 t.Fatalf("Wrong count of result batches: %v", len(results)) 35 } 36 if results[0].Len() != 2 { 37 t.Fatalf("Wrong count of messages: %v", results[0].Len()) 38 } 39 if exp, act := "foo", string(results[0].Get(0).Get()); exp != act { 40 t.Errorf("Wrong message contents: %v != %v", act, exp) 41 } 42 if exp, act := "bar", string(results[0].Get(1).Get()); exp != act { 43 t.Errorf("Wrong message contents: %v != %v", act, exp) 44 } 45 if store := message.GetContext(results[0].Get(0)).Value(ResultStoreKey); store != nil { 46 t.Error("Unexpected nested result store") 47 } 48 49 w.CloseAsync() 50 if err := w.WaitForClose(time.Second); err != nil { 51 t.Error(err) 52 } 53 }