github.com/percona/percona-xtradb-cluster-operator@v1.14.0/cmd/pitr/recoverer/recoverer_test.go (about)

     1  package recoverer
     2  
     3  import (
     4  	"testing"
     5  )
     6  
     7  func TestGetBucketAndPrefix(t *testing.T) {
     8  	type testCase struct {
     9  		address        string
    10  		expecteBucket  string
    11  		expectedPrefix string
    12  	}
    13  	cases := []testCase{
    14  		{
    15  			address:        "operator-testing/test",
    16  			expecteBucket:  "operator-testing",
    17  			expectedPrefix: "test/",
    18  		},
    19  		{
    20  			address:        "s3://operator-testing/test",
    21  			expecteBucket:  "operator-testing",
    22  			expectedPrefix: "test/",
    23  		},
    24  		{
    25  			address:        "https://somedomain/operator-testing/test",
    26  			expecteBucket:  "operator-testing",
    27  			expectedPrefix: "test/",
    28  		},
    29  		{
    30  			address:        "operator-testing/test/",
    31  			expecteBucket:  "operator-testing",
    32  			expectedPrefix: "test/",
    33  		},
    34  		{
    35  			address:        "operator-testing/test/pitr",
    36  			expecteBucket:  "operator-testing",
    37  			expectedPrefix: "test/pitr/",
    38  		},
    39  		{
    40  			address:        "https://somedomain/operator-testing",
    41  			expecteBucket:  "operator-testing",
    42  			expectedPrefix: "",
    43  		},
    44  		{
    45  			address:        "operator-testing",
    46  			expecteBucket:  "operator-testing",
    47  			expectedPrefix: "",
    48  		},
    49  	}
    50  	for _, c := range cases {
    51  		t.Run(c.address, func(t *testing.T) {
    52  			bucket, prefix, err := getBucketAndPrefix(c.address)
    53  			if err != nil {
    54  				t.Errorf("get from '%s': %s", c.address, err.Error())
    55  			}
    56  			if bucket != c.expecteBucket || prefix != c.expectedPrefix {
    57  				t.Errorf("%s: bucket expect '%s', got '%s'; prefix expect '%s', got '%s'", c.address, c.expecteBucket, bucket, c.expectedPrefix, prefix)
    58  			}
    59  		})
    60  	}
    61  }
    62  
    63  func TestGetGTIDFromContent(t *testing.T) {
    64  	c := []byte(`sometext GTID of the last set 'test_set:1-10'
    65  	`)
    66  
    67  	set, err := getGTIDFromXtrabackup(c)
    68  	if err != nil {
    69  		t.Error("get last gtid set", err.Error())
    70  	}
    71  	if set != "test_set:1-10" {
    72  		t.Error("set not test_set:1-10 but", set)
    73  	}
    74  }
    75  
    76  func TestGetExtendGTIDSet(t *testing.T) {
    77  	type testCase struct {
    78  		gtidSet         string
    79  		gtid            string
    80  		expectedGTIDSet string
    81  	}
    82  	cases := []testCase{
    83  		{
    84  			gtidSet:         "source-id:1-40",
    85  			gtid:            "source-id:15",
    86  			expectedGTIDSet: "source-id:15-40",
    87  		},
    88  		{
    89  			gtidSet:         "source-id:1-40",
    90  			gtid:            "source-id:11-15",
    91  			expectedGTIDSet: "source-id:11-40",
    92  		},
    93  	}
    94  	for _, c := range cases {
    95  		t.Run(c.gtid, func(t *testing.T) {
    96  			set, err := getExtendGTIDSet(c.gtidSet, c.gtid)
    97  			if err != nil {
    98  				t.Errorf("get from '%s': %s", c.gtid, err.Error())
    99  			}
   100  			if set != c.expectedGTIDSet {
   101  				t.Errorf("%s: expect '%s', got '%s'", c.gtid, c.expectedGTIDSet, set)
   102  			}
   103  		})
   104  	}
   105  }