package transformer import ( "context" "crypto/rand" "testing" cidtest "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/container/id/test" objectSDK "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/object" "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/version" "github.com/stretchr/testify/require" ) func TestChannelTarget(t *testing.T) { const maxSize = 100 ch := make(chan *objectSDK.Object, 10) tt := new(testTarget) ct := NewChannelTarget(ch) chTarget, _ := newPayloadSizeLimiter(maxSize, func() ObjectWriter { return ct }) testTarget, _ := newPayloadSizeLimiter(maxSize, func() ObjectWriter { return tt }) ver := version.Current() cnr := cidtest.ID() hdr := objectSDK.New() hdr.SetContainerID(cnr) hdr.SetType(objectSDK.TypeRegular) hdr.SetVersion(&ver) payload := make([]byte, maxSize*2+maxSize/2) _, _ = rand.Read(payload) ctx := context.Background() expectedIDs := writeObject(t, ctx, testTarget, hdr, payload) actualIDs := writeObject(t, ctx, chTarget, hdr, payload) _ = expectedIDs _ = actualIDs //require.Equal(t, expectedIDs, actualIDs) for i := range tt.objects { select { case obj := <-ch: // Because of the split ID objects can be different. // However, payload and attributes must be the same. require.Equal(t, tt.objects[i].Payload(), obj.Payload()) require.Equal(t, tt.objects[i].Attributes(), obj.Attributes()) default: require.FailNow(t, "received less parts than expected") } } select { case <-ch: require.FailNow(t, "received more parts than expected") default: } }