frostfs-api-go/object/test/generate.go
Airat Arifullin 2511f4ca70
All checks were successful
Tests and linters / Tests (1.19) (pull_request) Successful in 1m39s
Tests and linters / Lint (pull_request) Successful in 1m46s
Tests and linters / Tests with -race (pull_request) Successful in 3m12s
Tests and linters / Tests (1.20) (pull_request) Successful in 7m6s
[#40] types: Generate StableMarshaler/StableSize methods for protobufs
* Add plugin option for protogen in Makefile
* Fix the generator for the plugin in util/protogen
* Erase convertable types, move helpful methods to gRPC protobufs
* Erase helpers for convertations
* Generate StableMarshlal/StableSize for protobufs by the protoc plugin

Signed-off-by: Airat Arifullin a.arifullin@yadro.com
2023-07-10 15:29:21 +03:00

655 lines
14 KiB
Go

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
}