vitess.io/vitess@v0.16.2/go/vt/vtorc/inst/oracle_gtid_set_test.go (about) 1 package inst 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 ) 8 9 func TestNewOracleGtidSetEntry(t *testing.T) { 10 { 11 uuidSet := "00020194-3333-3333-3333-333333333333:1-7" 12 entry, err := NewOracleGtidSetEntry(uuidSet) 13 require.NoError(t, err) 14 require.Equal(t, entry.UUID, "00020194-3333-3333-3333-333333333333") 15 require.Equal(t, entry.Ranges, "1-7") 16 } 17 { 18 uuidSet := "00020194-3333-3333-3333-333333333333:1-7:10-20" 19 entry, err := NewOracleGtidSetEntry(uuidSet) 20 require.NoError(t, err) 21 require.Equal(t, entry.UUID, "00020194-3333-3333-3333-333333333333") 22 require.Equal(t, entry.Ranges, "1-7:10-20") 23 } 24 { 25 uuidSet := "00020194-3333-3333-3333-333333333333" 26 _, err := NewOracleGtidSetEntry(uuidSet) 27 require.Error(t, err) 28 } 29 } 30 31 func TestExplode(t *testing.T) { 32 { 33 uuidSet := "00020194-3333-3333-3333-333333333333:7" 34 entry, err := NewOracleGtidSetEntry(uuidSet) 35 require.NoError(t, err) 36 37 exploded := entry.Explode() 38 require.Equal(t, len(exploded), 1) 39 require.Equal(t, exploded[0].String(), "00020194-3333-3333-3333-333333333333:7") 40 } 41 { 42 uuidSet := "00020194-3333-3333-3333-333333333333:1-3" 43 entry, err := NewOracleGtidSetEntry(uuidSet) 44 require.NoError(t, err) 45 46 exploded := entry.Explode() 47 require.Equal(t, len(exploded), 3) 48 require.Equal(t, exploded[0].String(), "00020194-3333-3333-3333-333333333333:1") 49 require.Equal(t, exploded[1].String(), "00020194-3333-3333-3333-333333333333:2") 50 require.Equal(t, exploded[2].String(), "00020194-3333-3333-3333-333333333333:3") 51 } 52 { 53 uuidSet := "00020194-3333-3333-3333-333333333333:1-3:6-7" 54 entry, err := NewOracleGtidSetEntry(uuidSet) 55 require.NoError(t, err) 56 57 exploded := entry.Explode() 58 require.Equal(t, len(exploded), 5) 59 require.Equal(t, exploded[0].String(), "00020194-3333-3333-3333-333333333333:1") 60 require.Equal(t, exploded[1].String(), "00020194-3333-3333-3333-333333333333:2") 61 require.Equal(t, exploded[2].String(), "00020194-3333-3333-3333-333333333333:3") 62 require.Equal(t, exploded[3].String(), "00020194-3333-3333-3333-333333333333:6") 63 require.Equal(t, exploded[4].String(), "00020194-3333-3333-3333-333333333333:7") 64 } 65 { 66 gtidSetVal := "00020192-1111-1111-1111-111111111111:29-30, 00020194-3333-3333-3333-333333333333:7-8" 67 gtidSet, err := NewOracleGtidSet(gtidSetVal) 68 require.NoError(t, err) 69 70 exploded := gtidSet.Explode() 71 require.Equal(t, len(exploded), 4) 72 require.Equal(t, exploded[0].String(), "00020192-1111-1111-1111-111111111111:29") 73 require.Equal(t, exploded[1].String(), "00020192-1111-1111-1111-111111111111:30") 74 require.Equal(t, exploded[2].String(), "00020194-3333-3333-3333-333333333333:7") 75 require.Equal(t, exploded[3].String(), "00020194-3333-3333-3333-333333333333:8") 76 } 77 } 78 79 func TestNewOracleGtidSet(t *testing.T) { 80 { 81 gtidSetVal := "00020192-1111-1111-1111-111111111111:20-30, 00020194-3333-3333-3333-333333333333:7-8" 82 gtidSet, err := NewOracleGtidSet(gtidSetVal) 83 require.NoError(t, err) 84 85 require.Equal(t, len(gtidSet.GtidEntries), 2) 86 require.Equal(t, gtidSet.GtidEntries[0].String(), "00020192-1111-1111-1111-111111111111:20-30") 87 require.Equal(t, gtidSet.GtidEntries[1].String(), "00020194-3333-3333-3333-333333333333:7-8") 88 } 89 { 90 gtidSetVal := " ,,, , , 00020192-1111-1111-1111-111111111111:20-30,,,, 00020194-3333-3333-3333-333333333333:7-8,, ,," 91 gtidSet, err := NewOracleGtidSet(gtidSetVal) 92 require.NoError(t, err) 93 94 require.Equal(t, len(gtidSet.GtidEntries), 2) 95 require.Equal(t, gtidSet.GtidEntries[0].String(), "00020192-1111-1111-1111-111111111111:20-30") 96 require.Equal(t, gtidSet.GtidEntries[1].String(), "00020194-3333-3333-3333-333333333333:7-8") 97 } 98 { 99 gtidSetVal := " ,,, , ,, ,," 100 gtidSet, err := NewOracleGtidSet(gtidSetVal) 101 require.NoError(t, err) 102 103 require.Equal(t, len(gtidSet.GtidEntries), 0) 104 require.True(t, gtidSet.IsEmpty()) 105 } 106 } 107 108 func TestRemoveUUID(t *testing.T) { 109 gtidSetVal := "00020192-1111-1111-1111-111111111111:20-30, 00020194-3333-3333-3333-333333333333:7-8" 110 { 111 gtidSet, err := NewOracleGtidSet(gtidSetVal) 112 require.NoError(t, err) 113 114 require.Equal(t, len(gtidSet.GtidEntries), 2) 115 gtidSet.RemoveUUID("00020194-3333-3333-3333-333333333333") 116 require.Equal(t, len(gtidSet.GtidEntries), 1) 117 require.Equal(t, gtidSet.GtidEntries[0].String(), "00020192-1111-1111-1111-111111111111:20-30") 118 119 removed := gtidSet.RemoveUUID(`230ea8ea-81e3-11e4-972a-e25ec4bd140a`) 120 require.False(t, removed) 121 require.Equal(t, len(gtidSet.GtidEntries), 1) 122 require.Equal(t, gtidSet.GtidEntries[0].String(), "00020192-1111-1111-1111-111111111111:20-30") 123 } 124 { 125 gtidSet, err := NewOracleGtidSet(gtidSetVal) 126 require.NoError(t, err) 127 128 require.Equal(t, len(gtidSet.GtidEntries), 2) 129 130 gtidSet.RemoveUUID("00020192-1111-1111-1111-111111111111") 131 require.Equal(t, len(gtidSet.GtidEntries), 1) 132 require.Equal(t, gtidSet.GtidEntries[0].String(), "00020194-3333-3333-3333-333333333333:7-8") 133 134 gtidSet.RemoveUUID("00020194-3333-3333-3333-333333333333") 135 require.True(t, gtidSet.IsEmpty()) 136 } 137 } 138 139 func TestRetainUUID(t *testing.T) { 140 gtidSetVal := "00020192-1111-1111-1111-111111111111:20-30, 00020194-3333-3333-3333-333333333333:7-8" 141 { 142 gtidSet, err := NewOracleGtidSet(gtidSetVal) 143 require.NoError(t, err) 144 145 require.Equal(t, len(gtidSet.GtidEntries), 2) 146 removed := gtidSet.RetainUUID("00020194-3333-3333-3333-333333333333") 147 require.True(t, removed) 148 require.Equal(t, len(gtidSet.GtidEntries), 1) 149 require.Equal(t, gtidSet.GtidEntries[0].String(), "00020194-3333-3333-3333-333333333333:7-8") 150 151 removed = gtidSet.RetainUUID("00020194-3333-3333-3333-333333333333") 152 require.False(t, removed) 153 require.Equal(t, len(gtidSet.GtidEntries), 1) 154 require.Equal(t, gtidSet.GtidEntries[0].String(), "00020194-3333-3333-3333-333333333333:7-8") 155 156 removed = gtidSet.RetainUUID("230ea8ea-81e3-11e4-972a-e25ec4bd140a") 157 require.True(t, removed) 158 require.Equal(t, len(gtidSet.GtidEntries), 0) 159 } 160 } 161 162 func TestRetainUUIDs(t *testing.T) { 163 gtidSetVal := "00020192-1111-1111-1111-111111111111:20-30, 00020194-3333-3333-3333-333333333333:7-8" 164 { 165 gtidSet, err := NewOracleGtidSet(gtidSetVal) 166 require.NoError(t, err) 167 168 require.Equal(t, len(gtidSet.GtidEntries), 2) 169 removed := gtidSet.RetainUUIDs([]string{"00020194-3333-3333-3333-333333333333", "00020194-5555-5555-5555-333333333333"}) 170 require.True(t, removed) 171 require.Equal(t, len(gtidSet.GtidEntries), 1) 172 require.Equal(t, gtidSet.GtidEntries[0].String(), "00020194-3333-3333-3333-333333333333:7-8") 173 174 removed = gtidSet.RetainUUIDs([]string{"00020194-3333-3333-3333-333333333333", "00020194-5555-5555-5555-333333333333"}) 175 require.False(t, removed) 176 require.Equal(t, len(gtidSet.GtidEntries), 1) 177 require.Equal(t, gtidSet.GtidEntries[0].String(), "00020194-3333-3333-3333-333333333333:7-8") 178 179 removed = gtidSet.RetainUUIDs([]string{"230ea8ea-81e3-11e4-972a-e25ec4bd140a"}) 180 require.True(t, removed) 181 require.Equal(t, len(gtidSet.GtidEntries), 0) 182 } 183 } 184 185 func TestSharedUUIDs(t *testing.T) { 186 gtidSetVal := "00020192-1111-1111-1111-111111111111:20-30, 00020194-3333-3333-3333-333333333333:7-8" 187 gtidSet, err := NewOracleGtidSet(gtidSetVal) 188 require.NoError(t, err) 189 { 190 otherSet, err := NewOracleGtidSet("00020194-3333-3333-3333-333333333333:7-8,230ea8ea-81e3-11e4-972a-e25ec4bd140a:1-2") 191 require.NoError(t, err) 192 { 193 shared := gtidSet.SharedUUIDs(otherSet) 194 require.Equal(t, len(shared), 1) 195 require.Equal(t, shared[0], "00020194-3333-3333-3333-333333333333") 196 } 197 { 198 shared := otherSet.SharedUUIDs(gtidSet) 199 require.Equal(t, len(shared), 1) 200 require.Equal(t, shared[0], "00020194-3333-3333-3333-333333333333") 201 } 202 } 203 { 204 otherSet, err := NewOracleGtidSet("00020194-4444-4444-4444-333333333333:7-8,230ea8ea-81e3-11e4-972a-e25ec4bd140a:1-2") 205 require.NoError(t, err) 206 { 207 shared := gtidSet.SharedUUIDs(otherSet) 208 require.Equal(t, len(shared), 0) 209 } 210 { 211 shared := otherSet.SharedUUIDs(gtidSet) 212 require.Equal(t, len(shared), 0) 213 } 214 } 215 { 216 otherSet, err := NewOracleGtidSet("00020194-3333-3333-3333-333333333333:7-8,00020192-1111-1111-1111-111111111111:1-2") 217 require.NoError(t, err) 218 { 219 shared := gtidSet.SharedUUIDs(otherSet) 220 require.Equal(t, len(shared), 2) 221 } 222 { 223 shared := otherSet.SharedUUIDs(gtidSet) 224 require.Equal(t, len(shared), 2) 225 } 226 } 227 }