github.com/TrueCloudLab/frostfs-api-go/v2@v2.0.0-20230228134343-196241c4e79a/object/test/generate.go (about)

     1  package objecttest
     2  
     3  import (
     4  	"github.com/TrueCloudLab/frostfs-api-go/v2/internal/random"
     5  	"github.com/TrueCloudLab/frostfs-api-go/v2/object"
     6  	"github.com/TrueCloudLab/frostfs-api-go/v2/refs"
     7  	refstest "github.com/TrueCloudLab/frostfs-api-go/v2/refs/test"
     8  	sessiontest "github.com/TrueCloudLab/frostfs-api-go/v2/session/test"
     9  )
    10  
    11  func GenerateShortHeader(empty bool) *object.ShortHeader {
    12  	m := new(object.ShortHeader)
    13  
    14  	if !empty {
    15  		m.SetObjectType(13)
    16  		m.SetCreationEpoch(100)
    17  		m.SetPayloadLength(12321)
    18  		m.SetOwnerID(refstest.GenerateOwnerID(false))
    19  	}
    20  
    21  	m.SetVersion(refstest.GenerateVersion(empty))
    22  	m.SetHomomorphicHash(refstest.GenerateChecksum(empty))
    23  	m.SetPayloadHash(refstest.GenerateChecksum(empty))
    24  
    25  	return m
    26  }
    27  
    28  func GenerateAttribute(empty bool) *object.Attribute {
    29  	m := new(object.Attribute)
    30  
    31  	if !empty {
    32  		m.SetKey("object key")
    33  		m.SetValue("object value")
    34  	}
    35  
    36  	return m
    37  }
    38  
    39  func GenerateAttributes(empty bool) []object.Attribute {
    40  	var res []object.Attribute
    41  
    42  	if !empty {
    43  		res = append(res,
    44  			*GenerateAttribute(false),
    45  			*GenerateAttribute(false),
    46  		)
    47  	}
    48  
    49  	return res
    50  }
    51  
    52  func GenerateSplitHeader(empty bool) *object.SplitHeader {
    53  	return generateSplitHeader(empty, true)
    54  }
    55  
    56  func generateSplitHeader(empty, withPar bool) *object.SplitHeader {
    57  	m := new(object.SplitHeader)
    58  
    59  	if !empty {
    60  		m.SetSplitID([]byte{1, 3, 5})
    61  		m.SetParent(refstest.GenerateObjectID(false))
    62  		m.SetPrevious(refstest.GenerateObjectID(false))
    63  		m.SetChildren(refstest.GenerateObjectIDs(false))
    64  	}
    65  
    66  	m.SetParentSignature(refstest.GenerateSignature(empty))
    67  
    68  	if withPar {
    69  		m.SetParentHeader(generateHeader(empty, false))
    70  	}
    71  
    72  	return m
    73  }
    74  
    75  func GenerateHeader(empty bool) *object.Header {
    76  	return generateHeader(empty, true)
    77  }
    78  
    79  func generateHeader(empty, withSplit bool) *object.Header {
    80  	m := new(object.Header)
    81  
    82  	if !empty {
    83  		m.SetPayloadLength(777)
    84  		m.SetCreationEpoch(432)
    85  		m.SetObjectType(111)
    86  		m.SetOwnerID(refstest.GenerateOwnerID(false))
    87  		m.SetContainerID(refstest.GenerateContainerID(false))
    88  		m.SetAttributes(GenerateAttributes(false))
    89  	}
    90  
    91  	m.SetVersion(refstest.GenerateVersion(empty))
    92  	m.SetPayloadHash(refstest.GenerateChecksum(empty))
    93  	m.SetHomomorphicHash(refstest.GenerateChecksum(empty))
    94  	m.SetSessionToken(sessiontest.GenerateSessionToken(empty))
    95  
    96  	if withSplit {
    97  		m.SetSplit(generateSplitHeader(empty, false))
    98  	}
    99  
   100  	return m
   101  }
   102  
   103  func GenerateHeaderWithSignature(empty bool) *object.HeaderWithSignature {
   104  	m := new(object.HeaderWithSignature)
   105  
   106  	m.SetSignature(refstest.GenerateSignature(empty))
   107  	m.SetHeader(GenerateHeader(empty))
   108  
   109  	return m
   110  }
   111  
   112  func GenerateObject(empty bool) *object.Object {
   113  	m := new(object.Object)
   114  
   115  	if !empty {
   116  		m.SetPayload([]byte{7, 8, 9})
   117  		m.SetObjectID(refstest.GenerateObjectID(false))
   118  	}
   119  
   120  	m.SetSignature(refstest.GenerateSignature(empty))
   121  	m.SetHeader(GenerateHeader(empty))
   122  
   123  	return m
   124  }
   125  
   126  func GenerateSplitInfo(empty bool) *object.SplitInfo {
   127  	m := new(object.SplitInfo)
   128  
   129  	if !empty {
   130  		m.SetSplitID([]byte("splitID"))
   131  		m.SetLastPart(refstest.GenerateObjectID(false))
   132  		m.SetLink(refstest.GenerateObjectID(false))
   133  	}
   134  
   135  	return m
   136  }
   137  
   138  func GenerateGetRequestBody(empty bool) *object.GetRequestBody {
   139  	m := new(object.GetRequestBody)
   140  
   141  	if !empty {
   142  		m.SetRaw(true)
   143  		m.SetAddress(refstest.GenerateAddress(false))
   144  	}
   145  
   146  	return m
   147  }
   148  
   149  func GenerateGetRequest(empty bool) *object.GetRequest {
   150  	m := new(object.GetRequest)
   151  
   152  	if !empty {
   153  		m.SetBody(GenerateGetRequestBody(false))
   154  	}
   155  
   156  	m.SetMetaHeader(sessiontest.GenerateRequestMetaHeader(empty))
   157  	m.SetVerificationHeader(sessiontest.GenerateRequestVerificationHeader(empty))
   158  
   159  	return m
   160  }
   161  
   162  func GenerateGetObjectPartInit(empty bool) *object.GetObjectPartInit {
   163  	m := new(object.GetObjectPartInit)
   164  
   165  	if !empty {
   166  		m.SetObjectID(refstest.GenerateObjectID(false))
   167  	}
   168  
   169  	m.SetSignature(refstest.GenerateSignature(empty))
   170  	m.SetHeader(GenerateHeader(empty))
   171  
   172  	return m
   173  }
   174  
   175  func GenerateGetObjectPartChunk(empty bool) *object.GetObjectPartChunk {
   176  	m := new(object.GetObjectPartChunk)
   177  
   178  	if !empty {
   179  		m.SetChunk([]byte("get chunk"))
   180  	}
   181  
   182  	return m
   183  }
   184  
   185  func GenerateGetResponseBody(empty bool) *object.GetResponseBody {
   186  	m := new(object.GetResponseBody)
   187  
   188  	if !empty {
   189  		switch random.Uint32(3) {
   190  		case 0:
   191  			m.SetObjectPart(GenerateGetObjectPartInit(false))
   192  		case 1:
   193  			m.SetObjectPart(GenerateGetObjectPartChunk(false))
   194  		case 2:
   195  			m.SetObjectPart(GenerateSplitInfo(false))
   196  		}
   197  	}
   198  
   199  	return m
   200  }
   201  
   202  func GenerateGetResponse(empty bool) *object.GetResponse {
   203  	m := new(object.GetResponse)
   204  
   205  	if !empty {
   206  		m.SetBody(GenerateGetResponseBody(false))
   207  	}
   208  
   209  	m.SetMetaHeader(sessiontest.GenerateResponseMetaHeader(empty))
   210  	m.SetVerificationHeader(sessiontest.GenerateResponseVerificationHeader(empty))
   211  
   212  	return m
   213  }
   214  
   215  func GeneratePutObjectPartInit(empty bool) *object.PutObjectPartInit {
   216  	m := new(object.PutObjectPartInit)
   217  
   218  	if !empty {
   219  		m.SetCopiesNumber(234)
   220  		m.SetObjectID(refstest.GenerateObjectID(false))
   221  	}
   222  
   223  	m.SetSignature(refstest.GenerateSignature(empty))
   224  	m.SetHeader(GenerateHeader(empty))
   225  
   226  	return m
   227  }
   228  
   229  func GeneratePutObjectPartChunk(empty bool) *object.PutObjectPartChunk {
   230  	m := new(object.PutObjectPartChunk)
   231  
   232  	if !empty {
   233  		m.SetChunk([]byte("put chunk"))
   234  	}
   235  
   236  	return m
   237  }
   238  
   239  func GeneratePutRequestBody(empty bool) *object.PutRequestBody {
   240  	m := new(object.PutRequestBody)
   241  
   242  	if !empty {
   243  		switch random.Uint32(2) {
   244  		case 0:
   245  			m.SetObjectPart(GeneratePutObjectPartInit(false))
   246  		case 1:
   247  			m.SetObjectPart(GeneratePutObjectPartChunk(false))
   248  		}
   249  	}
   250  
   251  	return m
   252  }
   253  
   254  func GeneratePutRequest(empty bool) *object.PutRequest {
   255  	m := new(object.PutRequest)
   256  
   257  	if !empty {
   258  		m.SetBody(GeneratePutRequestBody(false))
   259  	}
   260  
   261  	m.SetMetaHeader(sessiontest.GenerateRequestMetaHeader(empty))
   262  	m.SetVerificationHeader(sessiontest.GenerateRequestVerificationHeader(empty))
   263  
   264  	return m
   265  }
   266  
   267  func GeneratePutResponseBody(empty bool) *object.PutResponseBody {
   268  	m := new(object.PutResponseBody)
   269  
   270  	if !empty {
   271  		m.SetObjectID(refstest.GenerateObjectID(false))
   272  	}
   273  
   274  	return m
   275  }
   276  
   277  func GeneratePutResponse(empty bool) *object.PutResponse {
   278  	m := new(object.PutResponse)
   279  
   280  	if !empty {
   281  		m.SetBody(GeneratePutResponseBody(false))
   282  	}
   283  
   284  	m.SetMetaHeader(sessiontest.GenerateResponseMetaHeader(empty))
   285  	m.SetVerificationHeader(sessiontest.GenerateResponseVerificationHeader(empty))
   286  
   287  	return m
   288  }
   289  
   290  func GenerateDeleteRequestBody(empty bool) *object.DeleteRequestBody {
   291  	m := new(object.DeleteRequestBody)
   292  
   293  	if !empty {
   294  		m.SetAddress(refstest.GenerateAddress(false))
   295  	}
   296  
   297  	return m
   298  }
   299  
   300  func GenerateDeleteRequest(empty bool) *object.DeleteRequest {
   301  	m := new(object.DeleteRequest)
   302  
   303  	if !empty {
   304  		m.SetBody(GenerateDeleteRequestBody(false))
   305  	}
   306  
   307  	m.SetMetaHeader(sessiontest.GenerateRequestMetaHeader(empty))
   308  	m.SetVerificationHeader(sessiontest.GenerateRequestVerificationHeader(empty))
   309  
   310  	return m
   311  }
   312  
   313  func GenerateDeleteResponseBody(empty bool) *object.DeleteResponseBody {
   314  	m := new(object.DeleteResponseBody)
   315  
   316  	if !empty {
   317  		m.SetTombstone(refstest.GenerateAddress(false))
   318  	}
   319  
   320  	return m
   321  }
   322  
   323  func GenerateDeleteResponse(empty bool) *object.DeleteResponse {
   324  	m := new(object.DeleteResponse)
   325  
   326  	if !empty {
   327  		m.SetBody(GenerateDeleteResponseBody(false))
   328  	}
   329  
   330  	m.SetMetaHeader(sessiontest.GenerateResponseMetaHeader(empty))
   331  	m.SetVerificationHeader(sessiontest.GenerateResponseVerificationHeader(empty))
   332  
   333  	return m
   334  }
   335  
   336  func GenerateHeadRequestBody(empty bool) *object.HeadRequestBody {
   337  	m := new(object.HeadRequestBody)
   338  
   339  	if !empty {
   340  		m.SetRaw(true)
   341  		m.SetMainOnly(true)
   342  		m.SetAddress(refstest.GenerateAddress(false))
   343  	}
   344  
   345  	return m
   346  }
   347  
   348  func GenerateHeadRequest(empty bool) *object.HeadRequest {
   349  	m := new(object.HeadRequest)
   350  
   351  	if !empty {
   352  		m.SetBody(GenerateHeadRequestBody(false))
   353  	}
   354  
   355  	m.SetMetaHeader(sessiontest.GenerateRequestMetaHeader(empty))
   356  	m.SetVerificationHeader(sessiontest.GenerateRequestVerificationHeader(empty))
   357  
   358  	return m
   359  }
   360  
   361  func GenerateHeadResponseBody(empty bool) *object.HeadResponseBody {
   362  	m := new(object.HeadResponseBody)
   363  
   364  	if !empty {
   365  		switch random.Uint32(3) {
   366  		case 0:
   367  			m.SetHeaderPart(GenerateHeaderWithSignature(false))
   368  		case 1:
   369  			m.SetHeaderPart(GenerateShortHeader(false))
   370  		case 2:
   371  			m.SetHeaderPart(GenerateSplitInfo(false))
   372  		}
   373  	}
   374  
   375  	return m
   376  }
   377  
   378  func GenerateHeadResponse(empty bool) *object.HeadResponse {
   379  	m := new(object.HeadResponse)
   380  
   381  	if !empty {
   382  		m.SetBody(GenerateHeadResponseBody(false))
   383  	}
   384  
   385  	m.SetMetaHeader(sessiontest.GenerateResponseMetaHeader(empty))
   386  	m.SetVerificationHeader(sessiontest.GenerateResponseVerificationHeader(empty))
   387  
   388  	return m
   389  }
   390  
   391  func GenerateSearchFilter(empty bool) *object.SearchFilter {
   392  	m := new(object.SearchFilter)
   393  
   394  	if !empty {
   395  		m.SetKey("search filter key")
   396  		m.SetValue("search filter val")
   397  		m.SetMatchType(987)
   398  	}
   399  
   400  	return m
   401  }
   402  
   403  func GenerateSearchFilters(empty bool) []object.SearchFilter {
   404  	var res []object.SearchFilter
   405  
   406  	if !empty {
   407  		res = append(res,
   408  			*GenerateSearchFilter(false),
   409  			*GenerateSearchFilter(false),
   410  		)
   411  	}
   412  
   413  	return res
   414  }
   415  
   416  func GenerateSearchRequestBody(empty bool) *object.SearchRequestBody {
   417  	m := new(object.SearchRequestBody)
   418  
   419  	if !empty {
   420  		m.SetVersion(555)
   421  		m.SetContainerID(refstest.GenerateContainerID(false))
   422  		m.SetFilters(GenerateSearchFilters(false))
   423  	}
   424  
   425  	return m
   426  }
   427  
   428  func GenerateSearchRequest(empty bool) *object.SearchRequest {
   429  	m := new(object.SearchRequest)
   430  
   431  	if !empty {
   432  		m.SetBody(GenerateSearchRequestBody(false))
   433  	}
   434  
   435  	m.SetMetaHeader(sessiontest.GenerateRequestMetaHeader(empty))
   436  	m.SetVerificationHeader(sessiontest.GenerateRequestVerificationHeader(empty))
   437  
   438  	return m
   439  }
   440  
   441  func GenerateSearchResponseBody(empty bool) *object.SearchResponseBody {
   442  	m := new(object.SearchResponseBody)
   443  
   444  	if !empty {
   445  		m.SetIDList(refstest.GenerateObjectIDs(false))
   446  	}
   447  
   448  	return m
   449  }
   450  
   451  func GenerateSearchResponse(empty bool) *object.SearchResponse {
   452  	m := new(object.SearchResponse)
   453  
   454  	if !empty {
   455  		m.SetBody(GenerateSearchResponseBody(false))
   456  	}
   457  
   458  	m.SetMetaHeader(sessiontest.GenerateResponseMetaHeader(empty))
   459  	m.SetVerificationHeader(sessiontest.GenerateResponseVerificationHeader(empty))
   460  
   461  	return m
   462  }
   463  
   464  func GenerateRange(empty bool) *object.Range {
   465  	m := new(object.Range)
   466  
   467  	if !empty {
   468  		m.SetLength(11)
   469  		m.SetOffset(22)
   470  	}
   471  
   472  	return m
   473  }
   474  
   475  func GenerateRanges(empty bool) []object.Range {
   476  	var res []object.Range
   477  
   478  	if !empty {
   479  		res = append(res,
   480  			*GenerateRange(false),
   481  			*GenerateRange(false),
   482  		)
   483  	}
   484  
   485  	return res
   486  }
   487  
   488  func GenerateGetRangeRequestBody(empty bool) *object.GetRangeRequestBody {
   489  	m := new(object.GetRangeRequestBody)
   490  
   491  	if !empty {
   492  		m.SetRaw(true)
   493  		m.SetAddress(refstest.GenerateAddress(empty))
   494  		m.SetRange(GenerateRange(empty))
   495  	}
   496  
   497  	return m
   498  }
   499  
   500  func GenerateGetRangeRequest(empty bool) *object.GetRangeRequest {
   501  	m := new(object.GetRangeRequest)
   502  
   503  	if !empty {
   504  		m.SetBody(GenerateGetRangeRequestBody(false))
   505  	}
   506  
   507  	m.SetMetaHeader(sessiontest.GenerateRequestMetaHeader(empty))
   508  	m.SetVerificationHeader(sessiontest.GenerateRequestVerificationHeader(empty))
   509  
   510  	return m
   511  }
   512  
   513  func GenerateGetRangePartChunk(empty bool) *object.GetRangePartChunk {
   514  	m := new(object.GetRangePartChunk)
   515  
   516  	if !empty {
   517  		m.SetChunk([]byte("get range chunk"))
   518  	}
   519  
   520  	return m
   521  }
   522  
   523  func GenerateGetRangeResponseBody(empty bool) *object.GetRangeResponseBody {
   524  	m := new(object.GetRangeResponseBody)
   525  
   526  	if !empty {
   527  		switch random.Uint32(2) {
   528  		case 0:
   529  			m.SetRangePart(GenerateGetRangePartChunk(false))
   530  		case 1:
   531  			m.SetRangePart(GenerateSplitInfo(false))
   532  		}
   533  	}
   534  
   535  	return m
   536  }
   537  
   538  func GenerateGetRangeResponse(empty bool) *object.GetRangeResponse {
   539  	m := new(object.GetRangeResponse)
   540  
   541  	if !empty {
   542  		m.SetBody(GenerateGetRangeResponseBody(false))
   543  	}
   544  
   545  	m.SetMetaHeader(sessiontest.GenerateResponseMetaHeader(empty))
   546  	m.SetVerificationHeader(sessiontest.GenerateResponseVerificationHeader(empty))
   547  
   548  	return m
   549  }
   550  
   551  func GenerateGetRangeHashRequestBody(empty bool) *object.GetRangeHashRequestBody {
   552  	m := new(object.GetRangeHashRequestBody)
   553  
   554  	if !empty {
   555  		m.SetSalt([]byte("range hash salt"))
   556  		m.SetType(455)
   557  		m.SetAddress(refstest.GenerateAddress(false))
   558  		m.SetRanges(GenerateRanges(false))
   559  	}
   560  
   561  	return m
   562  }
   563  
   564  func GenerateGetRangeHashRequest(empty bool) *object.GetRangeHashRequest {
   565  	m := new(object.GetRangeHashRequest)
   566  
   567  	if !empty {
   568  		m.SetBody(GenerateGetRangeHashRequestBody(false))
   569  	}
   570  
   571  	m.SetMetaHeader(sessiontest.GenerateRequestMetaHeader(empty))
   572  	m.SetVerificationHeader(sessiontest.GenerateRequestVerificationHeader(empty))
   573  
   574  	return m
   575  }
   576  
   577  func GenerateGetRangeHashResponseBody(empty bool) *object.GetRangeHashResponseBody {
   578  	m := new(object.GetRangeHashResponseBody)
   579  
   580  	if !empty {
   581  		m.SetType(678)
   582  		m.SetHashList([][]byte{{1}, {2}})
   583  	}
   584  
   585  	return m
   586  }
   587  
   588  func GenerateGetRangeHashResponse(empty bool) *object.GetRangeHashResponse {
   589  	m := new(object.GetRangeHashResponse)
   590  
   591  	if !empty {
   592  		m.SetBody(GenerateGetRangeHashResponseBody(false))
   593  	}
   594  
   595  	m.SetMetaHeader(sessiontest.GenerateResponseMetaHeader(empty))
   596  	m.SetVerificationHeader(sessiontest.GenerateResponseVerificationHeader(empty))
   597  
   598  	return m
   599  }
   600  
   601  func GenerateLock(empty bool) *object.Lock {
   602  	m := new(object.Lock)
   603  
   604  	if !empty {
   605  		m.SetMembers([]refs.ObjectID{
   606  			*refstest.GenerateObjectID(false),
   607  			*refstest.GenerateObjectID(false),
   608  		})
   609  	}
   610  
   611  	return m
   612  }