package objecttest import ( "git.frostfs.info/TrueCloudLab/aarifullin/v2/internal/random" object "git.frostfs.info/TrueCloudLab/aarifullin/v2/object/grpc" refstest "git.frostfs.info/TrueCloudLab/aarifullin/v2/refs/test" sessiontest "git.frostfs.info/TrueCloudLab/aarifullin/v2/session/test" ) func GenerateShortHeader(empty bool) *object.ShortHeader { m := new(object.ShortHeader) if !empty { m.SetObjectType(13) m.SetCreationEpoch(100) m.SetPayloadLength(12321) m.SetOwnerId(refstest.GenerateOwnerID(false)) } m.SetVersion(refstest.GenerateVersion(empty)) m.SetHomomorphicHash(refstest.GenerateChecksum(empty)) m.SetPayloadHash(refstest.GenerateChecksum(empty)) return m } func GenerateAttribute(empty bool) *object.Header_Attribute { m := new(object.Header_Attribute) if !empty { m.SetKey("object key") m.SetValue("object value") } return m } func GenerateAttributes(empty bool) []*object.Header_Attribute { var res []*object.Header_Attribute if !empty { res = append(res, GenerateAttribute(false), GenerateAttribute(false), ) } return res } func GenerateSplitHeader(empty bool) *object.Header_Split { return generateSplitHeader(empty, true) } func generateSplitHeader(empty, withPar bool) *object.Header_Split { m := new(object.Header_Split) if !empty { m.SetSplitId([]byte{1, 3, 5}) m.SetParent(refstest.GenerateObjectID(false)) m.SetPrevious(refstest.GenerateObjectID(false)) m.SetChildren(refstest.GenerateObjectIDs(false)) } m.SetParentSignature(refstest.GenerateSignature(empty)) if withPar { m.SetParentHeader(generateHeader(empty, false)) } return m } func GenerateHeader(empty bool) *object.Header { return generateHeader(empty, true) } func generateHeader(empty, withSplit bool) *object.Header { m := new(object.Header) if !empty { m.SetPayloadLength(777) m.SetCreationEpoch(432) m.SetObjectType(111) m.SetOwnerId(refstest.GenerateOwnerID(false)) m.SetContainerId(refstest.GenerateContainerID(false)) m.SetAttributes(GenerateAttributes(false)) } m.SetVersion(refstest.GenerateVersion(empty)) m.SetPayloadHash(refstest.GenerateChecksum(empty)) m.SetHomomorphicHash(refstest.GenerateChecksum(empty)) m.SetSessionToken(sessiontest.GenerateSessionToken(empty)) if withSplit { m.SetSplit(generateSplitHeader(empty, false)) } return m } func GenerateHeaderWithSignature(empty bool) *object.HeaderWithSignature { m := new(object.HeaderWithSignature) m.SetSignature(refstest.GenerateSignature(empty)) m.SetHeader(GenerateHeader(empty)) return m } func GenerateObject(empty bool) *object.Object { m := new(object.Object) if !empty { m.SetPayload([]byte{7, 8, 9}) m.SetObjectId(refstest.GenerateObjectID(false)) } m.SetSignature(refstest.GenerateSignature(empty)) m.SetHeader(GenerateHeader(empty)) return m } func GenerateSplitInfo(empty bool) *object.SplitInfo { m := new(object.SplitInfo) if !empty { m.SetSplitId([]byte("splitID")) m.SetLastPart(refstest.GenerateObjectID(false)) m.SetLink(refstest.GenerateObjectID(false)) } return m } func GenerateGetRequestBody(empty bool) *object.GetRequest_Body { m := new(object.GetRequest_Body) if !empty { m.SetRaw(true) m.SetAddress(refstest.GenerateAddress(false)) } return m } func GenerateGetRequest(empty bool) *object.GetRequest { m := new(object.GetRequest) if !empty { m.SetBody(GenerateGetRequestBody(false)) } m.SetMetaHeader(sessiontest.GenerateRequestMetaHeader(empty)) m.SetVerifyHeader(sessiontest.GenerateRequestVerificationHeader(empty)) return m } func GenerateGetObjectPartInit(empty bool) *object.GetResponse_Body_Init { m := new(object.GetResponse_Body_Init) if !empty { m.SetObjectId(refstest.GenerateObjectID(false)) } m.SetSignature(refstest.GenerateSignature(empty)) m.SetHeader(GenerateHeader(empty)) return m } func GenerateGetObjectPartChunk(empty bool) *object.GetResponse_Body_Chunk { m := new(object.GetResponse_Body_Chunk) if !empty { m.SetChunk([]byte("get chunk")) } return m } func GenerateGetResponseBody(empty bool) *object.GetResponse_Body { m := new(object.GetResponse_Body) if !empty { switch random.Uint32(3) { case 0: m.SetInit(GenerateGetObjectPartInit(false)) case 1: m.SetChunk(GenerateGetObjectPartChunk(false)) case 2: m.SetSplitInfo(GenerateSplitInfo(false)) } } return m } type GetResponseBodyType uint const ( InitType GetResponseBodyType = iota ChunkType SplitInfoType ) func GenerateGetResponseBodyWithBodyType(bt GetResponseBodyType) *object.GetResponse_Body { m := new(object.GetResponse_Body) switch bt { case 0: m.SetInit(GenerateGetObjectPartInit(false)) case 1: m.SetChunk(GenerateGetObjectPartChunk(false)) case 2: m.SetSplitInfo(GenerateSplitInfo(false)) default: panic("undefined body type") } return m } func GenerateGetResponse(empty bool) *object.GetResponse { m := new(object.GetResponse) if !empty { m.SetBody(GenerateGetResponseBody(false)) } m.SetMetaHeader(sessiontest.GenerateResponseMetaHeader(empty)) m.SetVerifyHeader(sessiontest.GenerateResponseVerificationHeader(empty)) return m } func GeneratePutObjectPartInit(empty bool) *object.PutRequest_Body_Init { m := new(object.PutRequest_Body_Init) if !empty { m.SetCopiesNumber([]uint32{234}) m.SetObjectId(refstest.GenerateObjectID(false)) } m.SetSignature(refstest.GenerateSignature(empty)) m.SetHeader(GenerateHeader(empty)) return m } func GeneratePutObjectPartChunk(empty bool) *object.PutRequest_Body_Chunk { m := new(object.PutRequest_Body_Chunk) if !empty { m.SetChunk([]byte("put chunk")) } return m } func GeneratePutRequestBody(empty bool) *object.PutRequest_Body { m := new(object.PutRequest_Body) if !empty { switch random.Uint32(2) { case 0: m.SetInit(GeneratePutObjectPartInit(false)) case 1: m.SetChunk(GeneratePutObjectPartChunk(false)) } } return m } func GeneratePutRequest(empty bool) *object.PutRequest { m := new(object.PutRequest) if !empty { m.SetBody(GeneratePutRequestBody(false)) } m.SetMetaHeader(sessiontest.GenerateRequestMetaHeader(empty)) m.SetVerifyHeader(sessiontest.GenerateRequestVerificationHeader(empty)) return m } func GeneratePutResponseBody(empty bool) *object.PutResponse_Body { m := new(object.PutResponse_Body) if !empty { m.SetObjectId(refstest.GenerateObjectID(false)) } return m } func GeneratePutResponse(empty bool) *object.PutResponse { m := new(object.PutResponse) if !empty { m.SetBody(GeneratePutResponseBody(false)) } m.SetMetaHeader(sessiontest.GenerateResponseMetaHeader(empty)) m.SetVerifyHeader(sessiontest.GenerateResponseVerificationHeader(empty)) return m } func GenerateDeleteRequestBody(empty bool) *object.DeleteRequest_Body { m := new(object.DeleteRequest_Body) if !empty { m.SetAddress(refstest.GenerateAddress(false)) } return m } func GenerateDeleteRequest(empty bool) *object.DeleteRequest { m := new(object.DeleteRequest) if !empty { m.SetBody(GenerateDeleteRequestBody(false)) } m.SetMetaHeader(sessiontest.GenerateRequestMetaHeader(empty)) m.SetVerifyHeader(sessiontest.GenerateRequestVerificationHeader(empty)) return m } func GenerateDeleteResponseBody(empty bool) *object.DeleteResponse_Body { m := new(object.DeleteResponse_Body) if !empty { m.SetTombstone(refstest.GenerateAddress(false)) } return m } func GenerateDeleteResponse(empty bool) *object.DeleteResponse { m := new(object.DeleteResponse) if !empty { m.SetBody(GenerateDeleteResponseBody(false)) } m.SetMetaHeader(sessiontest.GenerateResponseMetaHeader(empty)) m.SetVerifyHeader(sessiontest.GenerateResponseVerificationHeader(empty)) return m } func GenerateHeadRequestBody(empty bool) *object.HeadRequest_Body { m := new(object.HeadRequest_Body) if !empty { m.SetRaw(true) m.SetMainOnly(true) m.SetAddress(refstest.GenerateAddress(false)) } return m } func GenerateHeadRequest(empty bool) *object.HeadRequest { m := new(object.HeadRequest) if !empty { m.SetBody(GenerateHeadRequestBody(false)) } m.SetMetaHeader(sessiontest.GenerateRequestMetaHeader(empty)) m.SetVerifyHeader(sessiontest.GenerateRequestVerificationHeader(empty)) return m } func GenerateHeadResponseBody(empty bool) *object.HeadResponse_Body { m := new(object.HeadResponse_Body) if !empty { switch random.Uint32(3) { case 0: m.SetHeader(GenerateHeaderWithSignature(false)) case 1: m.SetShortHeader(GenerateShortHeader(false)) case 2: m.SetSplitInfo(GenerateSplitInfo(false)) } } return m } func GenerateHeadResponse(empty bool) *object.HeadResponse { m := new(object.HeadResponse) if !empty { m.SetBody(GenerateHeadResponseBody(false)) } m.SetMetaHeader(sessiontest.GenerateResponseMetaHeader(empty)) m.SetVerifyHeader(sessiontest.GenerateResponseVerificationHeader(empty)) return m } func GenerateSearchFilter(empty bool) *object.SearchRequest_Body_Filter { m := new(object.SearchRequest_Body_Filter) if !empty { m.SetKey("search filter key") m.SetValue("search filter val") m.SetMatchType(987) } return m } func GenerateSearchFilters(empty bool) []*object.SearchRequest_Body_Filter { var res []*object.SearchRequest_Body_Filter if !empty { res = append(res, GenerateSearchFilter(false), GenerateSearchFilter(false), ) } return res } func GenerateSearchRequestBody(empty bool) *object.SearchRequest_Body { m := new(object.SearchRequest_Body) if !empty { m.SetVersion(555) m.SetContainerId(refstest.GenerateContainerID(false)) m.SetFilters(GenerateSearchFilters(false)) } return m } func GenerateSearchRequest(empty bool) *object.SearchRequest { m := new(object.SearchRequest) if !empty { m.SetBody(GenerateSearchRequestBody(false)) } m.SetMetaHeader(sessiontest.GenerateRequestMetaHeader(empty)) m.SetVerifyHeader(sessiontest.GenerateRequestVerificationHeader(empty)) return m } func GenerateSearchResponseBody(empty bool) *object.SearchResponse_Body { m := new(object.SearchResponse_Body) if !empty { m.SetIdList(refstest.GenerateObjectIDs(false)) } return m } func GenerateSearchResponse(empty bool) *object.SearchResponse { m := new(object.SearchResponse) if !empty { m.SetBody(GenerateSearchResponseBody(false)) } m.SetMetaHeader(sessiontest.GenerateResponseMetaHeader(empty)) m.SetVerifyHeader(sessiontest.GenerateResponseVerificationHeader(empty)) return m } func GenerateRange(empty bool) *object.Range { m := new(object.Range) if !empty { m.SetLength(11) m.SetOffset(22) } return m } func GenerateRanges(empty bool) []*object.Range { var res []*object.Range if !empty { res = append(res, GenerateRange(false), GenerateRange(false), ) } return res } func GenerateGetRangeRequestBody(empty bool) *object.GetRangeRequest_Body { m := new(object.GetRangeRequest_Body) if !empty { m.SetRaw(true) m.SetAddress(refstest.GenerateAddress(empty)) m.SetRange(GenerateRange(empty)) } return m } func GenerateGetRangeRequest(empty bool) *object.GetRangeRequest { m := new(object.GetRangeRequest) if !empty { m.SetBody(GenerateGetRangeRequestBody(false)) } m.SetMetaHeader(sessiontest.GenerateRequestMetaHeader(empty)) m.SetVerifyHeader(sessiontest.GenerateRequestVerificationHeader(empty)) return m } func GenerateGetRangePartChunk(empty bool) *object.GetRangeResponse_Body_Chunk { m := new(object.GetRangeResponse_Body_Chunk) if !empty { m.SetChunk([]byte("get range chunk")) } return m } func GenerateGetRangeResponseBody(empty bool) *object.GetRangeResponse_Body { m := new(object.GetRangeResponse_Body) if !empty { switch random.Uint32(2) { case 0: m.SetChunk(GenerateGetRangePartChunk(false)) case 1: m.SetSplitInfo(GenerateSplitInfo(false)) } } return m } func GenerateGetRangeResponse(empty bool) *object.GetRangeResponse { m := new(object.GetRangeResponse) if !empty { m.SetBody(GenerateGetRangeResponseBody(false)) } m.SetMetaHeader(sessiontest.GenerateResponseMetaHeader(empty)) m.SetVerifyHeader(sessiontest.GenerateResponseVerificationHeader(empty)) return m } func GenerateGetRangeHashRequestBody(empty bool) *object.GetRangeHashRequest_Body { m := new(object.GetRangeHashRequest_Body) if !empty { m.SetSalt([]byte("range hash salt")) m.SetType(455) m.SetAddress(refstest.GenerateAddress(false)) m.SetRanges(GenerateRanges(false)) } return m } func GenerateGetRangeHashRequest(empty bool) *object.GetRangeHashRequest { m := new(object.GetRangeHashRequest) if !empty { m.SetBody(GenerateGetRangeHashRequestBody(false)) } m.SetMetaHeader(sessiontest.GenerateRequestMetaHeader(empty)) m.SetVerifyHeader(sessiontest.GenerateRequestVerificationHeader(empty)) return m } func GenerateGetRangeHashResponseBody(empty bool) *object.GetRangeHashResponse_Body { m := new(object.GetRangeHashResponse_Body) if !empty { m.SetType(678) m.SetHashList([][]byte{{1}, {2}}) } return m } func GenerateGetRangeHashResponse(empty bool) *object.GetRangeHashResponse { m := new(object.GetRangeHashResponse) if !empty { m.SetBody(GenerateGetRangeHashResponseBody(false)) } m.SetMetaHeader(sessiontest.GenerateResponseMetaHeader(empty)) m.SetVerifyHeader(sessiontest.GenerateResponseVerificationHeader(empty)) return m } func GeneratePutSingleRequest(empty bool) *object.PutSingleRequest { m := new(object.PutSingleRequest) if !empty { m.SetBody(GeneratePutSingleRequestBody(false)) } m.SetMetaHeader(sessiontest.GenerateRequestMetaHeader(empty)) m.SetVerifyHeader(sessiontest.GenerateRequestVerificationHeader(empty)) return m } func GeneratePutSingleRequestBody(empty bool) *object.PutSingleRequest_Body { b := new(object.PutSingleRequest_Body) if !empty { b.SetObject(GenerateObject(empty)) b.SetCopiesNumber([]uint32{12345}) } return b } func GeneratePutSingleResponse(empty bool) *object.PutSingleResponse { m := new(object.PutSingleResponse) if !empty { m.SetBody(new(object.PutSingleResponse_Body)) } m.SetMetaHeader(sessiontest.GenerateResponseMetaHeader(empty)) m.SetVerifyHeader(sessiontest.GenerateResponseVerificationHeader(empty)) return m }