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  }