|
4 | 4 | "context"
|
5 | 5 | "fmt"
|
6 | 6 | "testing"
|
| 7 | + "time" |
7 | 8 |
|
8 | 9 | "github.com/stretchr/testify/require"
|
9 | 10 | corev1 "k8s.io/api/core/v1"
|
@@ -560,3 +561,124 @@ func TestBuildOptions_WhenInvalidCAConfigMap_SetDegraded(t *testing.T) {
|
560 | 561 | require.Error(t, err)
|
561 | 562 | require.Equal(t, degradedErr, err)
|
562 | 563 | }
|
| 564 | + |
| 565 | +func TestAllowStructuredMetadata(t *testing.T) { |
| 566 | + testTime := time.Date(2024, 7, 1, 1, 0, 0, 0, time.UTC) |
| 567 | + tt := []struct { |
| 568 | + desc string |
| 569 | + schemas []lokiv1.ObjectStorageSchema |
| 570 | + wantAllow bool |
| 571 | + }{ |
| 572 | + { |
| 573 | + desc: "disallow - no schemas", |
| 574 | + schemas: []lokiv1.ObjectStorageSchema{}, |
| 575 | + wantAllow: false, |
| 576 | + }, |
| 577 | + { |
| 578 | + desc: "disallow - only v12", |
| 579 | + schemas: []lokiv1.ObjectStorageSchema{ |
| 580 | + { |
| 581 | + Version: lokiv1.ObjectStorageSchemaV12, |
| 582 | + EffectiveDate: "2024-07-01", |
| 583 | + }, |
| 584 | + }, |
| 585 | + wantAllow: false, |
| 586 | + }, |
| 587 | + { |
| 588 | + desc: "allow - only v13", |
| 589 | + schemas: []lokiv1.ObjectStorageSchema{ |
| 590 | + { |
| 591 | + Version: lokiv1.ObjectStorageSchemaV13, |
| 592 | + EffectiveDate: "2024-07-01", |
| 593 | + }, |
| 594 | + }, |
| 595 | + wantAllow: true, |
| 596 | + }, |
| 597 | + { |
| 598 | + desc: "disallow - v13 in future", |
| 599 | + schemas: []lokiv1.ObjectStorageSchema{ |
| 600 | + { |
| 601 | + Version: lokiv1.ObjectStorageSchemaV12, |
| 602 | + EffectiveDate: "2024-07-01", |
| 603 | + }, |
| 604 | + { |
| 605 | + Version: lokiv1.ObjectStorageSchemaV13, |
| 606 | + EffectiveDate: "2024-07-02", |
| 607 | + }, |
| 608 | + }, |
| 609 | + wantAllow: false, |
| 610 | + }, |
| 611 | + { |
| 612 | + desc: "disallow - v13 in past", |
| 613 | + schemas: []lokiv1.ObjectStorageSchema{ |
| 614 | + { |
| 615 | + Version: lokiv1.ObjectStorageSchemaV13, |
| 616 | + EffectiveDate: "2024-06-01", |
| 617 | + }, |
| 618 | + { |
| 619 | + Version: lokiv1.ObjectStorageSchemaV12, |
| 620 | + EffectiveDate: "2024-07-01", |
| 621 | + }, |
| 622 | + }, |
| 623 | + wantAllow: false, |
| 624 | + }, |
| 625 | + { |
| 626 | + desc: "disallow - v13 in past and future", |
| 627 | + schemas: []lokiv1.ObjectStorageSchema{ |
| 628 | + { |
| 629 | + Version: lokiv1.ObjectStorageSchemaV13, |
| 630 | + EffectiveDate: "2024-06-01", |
| 631 | + }, |
| 632 | + { |
| 633 | + Version: lokiv1.ObjectStorageSchemaV12, |
| 634 | + EffectiveDate: "2024-07-01", |
| 635 | + }, |
| 636 | + { |
| 637 | + Version: lokiv1.ObjectStorageSchemaV13, |
| 638 | + EffectiveDate: "2024-07-02", |
| 639 | + }, |
| 640 | + }, |
| 641 | + wantAllow: false, |
| 642 | + }, |
| 643 | + { |
| 644 | + desc: "allow - v13 active", |
| 645 | + schemas: []lokiv1.ObjectStorageSchema{ |
| 646 | + { |
| 647 | + Version: lokiv1.ObjectStorageSchemaV12, |
| 648 | + EffectiveDate: "2024-06-01", |
| 649 | + }, |
| 650 | + { |
| 651 | + Version: lokiv1.ObjectStorageSchemaV13, |
| 652 | + EffectiveDate: "2024-07-01", |
| 653 | + }, |
| 654 | + }, |
| 655 | + wantAllow: true, |
| 656 | + }, |
| 657 | + { |
| 658 | + desc: "allow - v13 active, v12 in future", |
| 659 | + schemas: []lokiv1.ObjectStorageSchema{ |
| 660 | + { |
| 661 | + Version: lokiv1.ObjectStorageSchemaV13, |
| 662 | + EffectiveDate: "2024-07-01", |
| 663 | + }, |
| 664 | + { |
| 665 | + Version: lokiv1.ObjectStorageSchemaV12, |
| 666 | + EffectiveDate: "2024-08-01", |
| 667 | + }, |
| 668 | + }, |
| 669 | + wantAllow: true, |
| 670 | + }, |
| 671 | + } |
| 672 | + |
| 673 | + for _, tc := range tt { |
| 674 | + tc := tc |
| 675 | + t.Run(tc.desc, func(t *testing.T) { |
| 676 | + t.Parallel() |
| 677 | + |
| 678 | + allow := allowStructuredMetadata(tc.schemas, testTime) |
| 679 | + if allow != tc.wantAllow { |
| 680 | + t.Errorf("got %v, want %v", allow, tc.wantAllow) |
| 681 | + } |
| 682 | + }) |
| 683 | + } |
| 684 | +} |
0 commit comments