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  }