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 }