git.frostfs.info/TrueCloudLab/frostfs-sdk-go@v0.0.0-20241022124111-5361f0ecebd3/object/transformer/channel_test.go (about) 1 package transformer 2 3 import ( 4 "context" 5 "crypto/rand" 6 "testing" 7 8 cidtest "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/container/id/test" 9 objectSDK "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/object" 10 "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/version" 11 "github.com/stretchr/testify/require" 12 ) 13 14 func TestChannelTarget(t *testing.T) { 15 const maxSize = 100 16 17 ch := make(chan *objectSDK.Object, 10) 18 tt := new(testTarget) 19 ct := NewChannelTarget(ch) 20 21 chTarget, _ := newPayloadSizeLimiter(maxSize, 0, func() ObjectWriter { return ct }) 22 testTarget, _ := newPayloadSizeLimiter(maxSize, 0, func() ObjectWriter { return tt }) 23 24 ver := version.Current() 25 cnr := cidtest.ID() 26 hdr := objectSDK.New() 27 hdr.SetContainerID(cnr) 28 hdr.SetType(objectSDK.TypeRegular) 29 hdr.SetVersion(&ver) 30 31 payload := make([]byte, maxSize*2+maxSize/2) 32 _, _ = rand.Read(payload) 33 34 ctx := context.Background() 35 expectedIDs := writeObject(t, ctx, testTarget, hdr, payload) 36 actualIDs := writeObject(t, ctx, chTarget, hdr, payload) 37 _ = expectedIDs 38 _ = actualIDs 39 // require.Equal(t, expectedIDs, actualIDs) 40 41 for i := range tt.objects { 42 select { 43 case obj := <-ch: 44 // Because of the split ID objects can be different. 45 // However, payload and attributes must be the same. 46 require.Equal(t, tt.objects[i].Payload(), obj.Payload()) 47 require.Equal(t, tt.objects[i].Attributes(), obj.Attributes()) 48 default: 49 require.FailNow(t, "received less parts than expected") 50 } 51 } 52 53 select { 54 case <-ch: 55 require.FailNow(t, "received more parts than expected") 56 default: 57 } 58 }