vitess.io/vitess@v0.16.2/go/vt/vtorc/inst/binlog_test.go (about) 1 package inst 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 8 "vitess.io/vitess/go/vt/vtorc/config" 9 ) 10 11 var testCoordinates = BinlogCoordinates{LogFile: "mysql-bin.000010", LogPos: 108} 12 13 func init() { 14 config.MarkConfigurationLoaded() 15 } 16 17 func TestDetach(t *testing.T) { 18 detachedCoordinates := testCoordinates.Detach() 19 require.Equal(t, detachedCoordinates.LogFile, "//mysql-bin.000010:108") 20 require.Equal(t, detachedCoordinates.LogPos, testCoordinates.LogPos) 21 } 22 23 func TestDetachedCoordinates(t *testing.T) { 24 isDetached, detachedCoordinates := testCoordinates.ExtractDetachedCoordinates() 25 require.False(t, isDetached) 26 require.Equal(t, detachedCoordinates.LogFile, testCoordinates.LogFile) 27 require.Equal(t, detachedCoordinates.LogPos, testCoordinates.LogPos) 28 } 29 30 func TestDetachedCoordinates2(t *testing.T) { 31 detached := testCoordinates.Detach() 32 isDetached, coordinates := detached.ExtractDetachedCoordinates() 33 34 require.True(t, isDetached) 35 require.Equal(t, coordinates.LogFile, testCoordinates.LogFile) 36 require.Equal(t, coordinates.LogPos, testCoordinates.LogPos) 37 } 38 39 func TestPreviousFileCoordinates(t *testing.T) { 40 previous, err := testCoordinates.PreviousFileCoordinates() 41 42 require.NoError(t, err) 43 require.Equal(t, previous.LogFile, "mysql-bin.000009") 44 require.Equal(t, previous.LogPos, int64(0)) 45 } 46 47 func TestNextFileCoordinates(t *testing.T) { 48 next, err := testCoordinates.NextFileCoordinates() 49 50 require.NoError(t, err) 51 require.Equal(t, next.LogFile, "mysql-bin.000011") 52 require.Equal(t, next.LogPos, int64(0)) 53 } 54 55 func TestBinlogCoordinates(t *testing.T) { 56 c1 := BinlogCoordinates{LogFile: "mysql-bin.00017", LogPos: 104} 57 c2 := BinlogCoordinates{LogFile: "mysql-bin.00017", LogPos: 104} 58 c3 := BinlogCoordinates{LogFile: "mysql-bin.00017", LogPos: 5000} 59 c4 := BinlogCoordinates{LogFile: "mysql-bin.00112", LogPos: 104} 60 61 require.True(t, c1.Equals(&c2)) 62 require.False(t, c1.Equals(&c3)) 63 require.False(t, c1.Equals(&c4)) 64 require.False(t, c1.SmallerThan(&c2)) 65 require.True(t, c1.SmallerThan(&c3)) 66 require.True(t, c1.SmallerThan(&c4)) 67 require.True(t, c3.SmallerThan(&c4)) 68 require.False(t, c3.SmallerThan(&c2)) 69 require.False(t, c4.SmallerThan(&c2)) 70 require.False(t, c4.SmallerThan(&c3)) 71 72 require.True(t, c1.SmallerThanOrEquals(&c2)) 73 require.True(t, c1.SmallerThanOrEquals(&c3)) 74 } 75 76 func TestBinlogPrevious(t *testing.T) { 77 c1 := BinlogCoordinates{LogFile: "mysql-bin.00017", LogPos: 104} 78 cres, err := c1.PreviousFileCoordinates() 79 80 require.NoError(t, err) 81 require.Equal(t, c1.Type, cres.Type) 82 require.Equal(t, cres.LogFile, "mysql-bin.00016") 83 84 c2 := BinlogCoordinates{LogFile: "mysql-bin.00100", LogPos: 104} 85 cres, err = c2.PreviousFileCoordinates() 86 87 require.NoError(t, err) 88 require.Equal(t, c1.Type, cres.Type) 89 require.Equal(t, cres.LogFile, "mysql-bin.00099") 90 91 c3 := BinlogCoordinates{LogFile: "mysql.00.prod.com.00100", LogPos: 104} 92 cres, err = c3.PreviousFileCoordinates() 93 94 require.NoError(t, err) 95 require.Equal(t, c1.Type, cres.Type) 96 require.Equal(t, cres.LogFile, "mysql.00.prod.com.00099") 97 98 c4 := BinlogCoordinates{LogFile: "mysql.00.prod.com.00000", LogPos: 104} 99 _, err = c4.PreviousFileCoordinates() 100 101 require.Error(t, err) 102 } 103 104 func TestBinlogCoordinatesAsKey(t *testing.T) { 105 m := make(map[BinlogCoordinates]bool) 106 107 c1 := BinlogCoordinates{LogFile: "mysql-bin.00017", LogPos: 104} 108 c2 := BinlogCoordinates{LogFile: "mysql-bin.00022", LogPos: 104} 109 c3 := BinlogCoordinates{LogFile: "mysql-bin.00017", LogPos: 104} 110 c4 := BinlogCoordinates{LogFile: "mysql-bin.00017", LogPos: 222} 111 112 m[c1] = true 113 m[c2] = true 114 m[c3] = true 115 m[c4] = true 116 117 require.Equal(t, len(m), 3) 118 } 119 120 func TestFileNumberDistance(t *testing.T) { 121 c1 := BinlogCoordinates{LogFile: "mysql-bin.00017", LogPos: 104} 122 c2 := BinlogCoordinates{LogFile: "mysql-bin.00022", LogPos: 104} 123 124 require.Equal(t, c1.FileNumberDistance(&c1), 0) 125 require.Equal(t, c1.FileNumberDistance(&c2), 5) 126 require.Equal(t, c2.FileNumberDistance(&c1), -5) 127 } 128 129 func TestFileNumber(t *testing.T) { 130 c1 := BinlogCoordinates{LogFile: "mysql-bin.00017", LogPos: 104} 131 fileNum, numLen := c1.FileNumber() 132 133 require.Equal(t, fileNum, 17) 134 require.Equal(t, numLen, 5) 135 }