Skip to content

Commit

Permalink
update tests for go-sql-driver version bump
Browse files Browse the repository at this point in the history
  • Loading branch information
Stephanie You committed Jul 24, 2023
1 parent 2eee7b1 commit 56d7066
Show file tree
Hide file tree
Showing 6 changed files with 71 additions and 66 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -48,13 +48,13 @@ func TestBinlogReplicationForAllTypes(t *testing.T) {
waitForReplicaToCatchUp(t)
rows, err := replicaDatabase.Queryx("select * from db01.alltypes order by pk asc;")
require.NoError(t, err)
row := convertByteArraysToStrings(readNextRow(t, rows))
row := convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "1", row["pk"])
assertValues(t, 0, row)
row = convertByteArraysToStrings(readNextRow(t, rows))
row = convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "2", row["pk"])
assertValues(t, 1, row)
row = convertByteArraysToStrings(readNextRow(t, rows))
row = convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "3", row["pk"])
assertNullValues(t, row)
require.False(t, rows.Next())
Expand All @@ -70,13 +70,13 @@ func TestBinlogReplicationForAllTypes(t *testing.T) {
replicaDatabase.MustExec("use db01;")
rows, err = replicaDatabase.Queryx("select * from db01.alltypes order by pk asc;")
require.NoError(t, err)
row = convertByteArraysToStrings(readNextRow(t, rows))
row = convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "1", row["pk"])
assertNullValues(t, row)
row = convertByteArraysToStrings(readNextRow(t, rows))
row = convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "2", row["pk"])
assertValues(t, 0, row)
row = convertByteArraysToStrings(readNextRow(t, rows))
row = convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "3", row["pk"])
assertValues(t, 1, row)
require.False(t, rows.Next())
Expand Down Expand Up @@ -516,7 +516,8 @@ func assertValues(t *testing.T, assertionIndex int, row map[string]interface{})

actualValue := ""
if row[typeDesc.ColumnName()] != nil {
actualValue = row[typeDesc.ColumnName()].(string)
actualValue = fmt.Sprintf("%v", row[typeDesc.ColumnName()])
//actualValue = row[typeDesc.ColumnName()].(string)
}
if typeDesc.TypeDefinition == "json" {
// LD_1 and DOLT storage formats return JSON strings slightly differently; DOLT removes spaces
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ func TestBinlogReplicationFilters_ignoreTablesOnly(t *testing.T) {
// Verify that all changes from t1 were applied on the replica
rows, err := replicaDatabase.Queryx("SELECT COUNT(pk) as count, MIN(pk) as min, MAX(pk) as max from db01.t1;")
require.NoError(t, err)
row := convertByteArraysToStrings(readNextRow(t, rows))
row := convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "10", row["count"])
require.Equal(t, "0", row["min"])
require.Equal(t, "9", row["max"])
Expand All @@ -65,7 +65,7 @@ func TestBinlogReplicationFilters_ignoreTablesOnly(t *testing.T) {
// Verify that no changes from t2 were applied on the replica
rows, err = replicaDatabase.Queryx("SELECT COUNT(pk) as count, MIN(pk) as min, MAX(pk) as max from db01.t2;")
require.NoError(t, err)
row = convertByteArraysToStrings(readNextRow(t, rows))
row = convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "0", row["count"])
require.Equal(t, nil, row["min"])
require.Equal(t, nil, row["max"])
Expand Down Expand Up @@ -107,7 +107,7 @@ func TestBinlogReplicationFilters_doTablesOnly(t *testing.T) {
// Verify that all changes from t1 were applied on the replica
rows, err := replicaDatabase.Queryx("SELECT COUNT(pk) as count, MIN(pk) as min, MAX(pk) as max from db01.t1;")
require.NoError(t, err)
row := convertByteArraysToStrings(readNextRow(t, rows))
row := convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "10", row["count"])
require.Equal(t, "0", row["min"])
require.Equal(t, "9", row["max"])
Expand All @@ -116,7 +116,7 @@ func TestBinlogReplicationFilters_doTablesOnly(t *testing.T) {
// Verify that no changes from t2 were applied on the replica
rows, err = replicaDatabase.Queryx("SELECT COUNT(pk) as count, MIN(pk) as min, MAX(pk) as max from db01.t2;")
require.NoError(t, err)
row = convertByteArraysToStrings(readNextRow(t, rows))
row = convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "0", row["count"])
require.Equal(t, nil, row["min"])
require.Equal(t, nil, row["max"])
Expand Down Expand Up @@ -159,7 +159,7 @@ func TestBinlogReplicationFilters_doTablesAndIgnoreTables(t *testing.T) {
// Verify that all changes from t1 were applied on the replica
rows, err := replicaDatabase.Queryx("SELECT COUNT(pk) as count, MIN(pk) as min, MAX(pk) as max from db01.t1;")
require.NoError(t, err)
row := convertByteArraysToStrings(readNextRow(t, rows))
row := convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "10", row["count"])
require.Equal(t, "0", row["min"])
require.Equal(t, "9", row["max"])
Expand All @@ -168,7 +168,7 @@ func TestBinlogReplicationFilters_doTablesAndIgnoreTables(t *testing.T) {
// Verify that no changes from t2 were applied on the replica
rows, err = replicaDatabase.Queryx("SELECT COUNT(pk) as count, MIN(pk) as min, MAX(pk) as max from db01.t2;")
require.NoError(t, err)
row = convertByteArraysToStrings(readNextRow(t, rows))
row = convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "0", row["count"])
require.Equal(t, nil, row["min"])
require.Equal(t, nil, row["max"])
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,13 +48,13 @@ func TestBinlogReplicationMultiDb(t *testing.T) {
waitForReplicaToCatchUp(t)
rows, err := replicaDatabase.Queryx("select * from db01.t01 order by pk asc;")
require.NoError(t, err)
row := convertByteArraysToStrings(readNextRow(t, rows))
row := convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "1", row["pk"])
row = convertByteArraysToStrings(readNextRow(t, rows))
row = convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "3", row["pk"])
row = convertByteArraysToStrings(readNextRow(t, rows))
row = convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "5", row["pk"])
row = convertByteArraysToStrings(readNextRow(t, rows))
row = convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "7", row["pk"])
require.False(t, rows.Next())
require.NoError(t, rows.Close())
Expand All @@ -64,19 +64,19 @@ func TestBinlogReplicationMultiDb(t *testing.T) {
replicaDatabase.MustExec("use db01;")
rows, err = replicaDatabase.Queryx("select * from db01.dolt_diff;")
require.NoError(t, err)
row = convertByteArraysToStrings(readNextRow(t, rows))
row = convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "t01", row["table_name"])
require.EqualValues(t, "1", row["data_change"])
require.EqualValues(t, "0", row["schema_change"])
row = convertByteArraysToStrings(readNextRow(t, rows))
row = convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "t01", row["table_name"])
require.EqualValues(t, "1", row["data_change"])
require.EqualValues(t, "0", row["schema_change"])
row = convertByteArraysToStrings(readNextRow(t, rows))
row = convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "t01", row["table_name"])
require.EqualValues(t, "1", row["data_change"])
require.EqualValues(t, "0", row["schema_change"])
row = convertByteArraysToStrings(readNextRow(t, rows))
row = convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "t01", row["table_name"])
require.EqualValues(t, "0", row["data_change"])
require.EqualValues(t, "1", row["schema_change"])
Expand All @@ -88,33 +88,33 @@ func TestBinlogReplicationMultiDb(t *testing.T) {
replicaDatabase.MustExec("use db02;")
rows, err = replicaDatabase.Queryx("select * from db02.t02 order by pk asc;")
require.NoError(t, err)
row = convertByteArraysToStrings(readNextRow(t, rows))
row = convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "2", row["pk"])
row = convertByteArraysToStrings(readNextRow(t, rows))
row = convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "4", row["pk"])
row = convertByteArraysToStrings(readNextRow(t, rows))
row = convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "6", row["pk"])
row = convertByteArraysToStrings(readNextRow(t, rows))
row = convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "8", row["pk"])
require.False(t, rows.Next())
require.NoError(t, rows.Close())

// Verify db02.dolt_diff
rows, err = replicaDatabase.Queryx("select * from db02.dolt_diff;")
require.NoError(t, err)
row = convertByteArraysToStrings(readNextRow(t, rows))
row = convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "t02", row["table_name"])
require.Equal(t, "1", row["data_change"])
require.Equal(t, "0", row["schema_change"])
row = convertByteArraysToStrings(readNextRow(t, rows))
row = convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "t02", row["table_name"])
require.Equal(t, "1", row["data_change"])
require.Equal(t, "0", row["schema_change"])
row = convertByteArraysToStrings(readNextRow(t, rows))
row = convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "t02", row["table_name"])
require.Equal(t, "1", row["data_change"])
require.Equal(t, "0", row["schema_change"])
row = convertByteArraysToStrings(readNextRow(t, rows))
row = convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "t02", row["table_name"])
require.Equal(t, "0", row["data_change"])
require.Equal(t, "1", row["schema_change"])
Expand Down Expand Up @@ -148,13 +148,13 @@ func TestBinlogReplicationMultiDbTransactions(t *testing.T) {
waitForReplicaToCatchUp(t)
rows, err := replicaDatabase.Queryx("select * from db01.t01 order by pk asc;")
require.NoError(t, err)
row := convertByteArraysToStrings(readNextRow(t, rows))
row := convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "1", row["pk"])
row = convertByteArraysToStrings(readNextRow(t, rows))
row = convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "3", row["pk"])
row = convertByteArraysToStrings(readNextRow(t, rows))
row = convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "5", row["pk"])
row = convertByteArraysToStrings(readNextRow(t, rows))
row = convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "7", row["pk"])
require.False(t, rows.Next())
require.NoError(t, rows.Close())
Expand All @@ -163,11 +163,11 @@ func TestBinlogReplicationMultiDbTransactions(t *testing.T) {
replicaDatabase.MustExec("use db01;")
rows, err = replicaDatabase.Queryx("select * from db01.dolt_diff;")
require.NoError(t, err)
row = convertByteArraysToStrings(readNextRow(t, rows))
row = convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "t01", row["table_name"])
require.EqualValues(t, "1", row["data_change"])
require.EqualValues(t, "0", row["schema_change"])
row = convertByteArraysToStrings(readNextRow(t, rows))
row = convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "t01", row["table_name"])
require.EqualValues(t, "0", row["data_change"])
require.EqualValues(t, "1", row["schema_change"])
Expand All @@ -179,25 +179,25 @@ func TestBinlogReplicationMultiDbTransactions(t *testing.T) {
replicaDatabase.MustExec("use db02;")
rows, err = replicaDatabase.Queryx("select * from db02.t02 order by pk asc;")
require.NoError(t, err)
row = convertByteArraysToStrings(readNextRow(t, rows))
row = convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "2", row["pk"])
row = convertByteArraysToStrings(readNextRow(t, rows))
row = convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "4", row["pk"])
row = convertByteArraysToStrings(readNextRow(t, rows))
row = convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "6", row["pk"])
row = convertByteArraysToStrings(readNextRow(t, rows))
row = convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "8", row["pk"])
require.False(t, rows.Next())
require.NoError(t, rows.Close())

// Verify db02.dolt_diff
rows, err = replicaDatabase.Queryx("select * from db02.dolt_diff;")
require.NoError(t, err)
row = convertByteArraysToStrings(readNextRow(t, rows))
row = convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "t02", row["table_name"])
require.Equal(t, "1", row["data_change"])
require.Equal(t, "0", row["schema_change"])
row = convertByteArraysToStrings(readNextRow(t, rows))
row = convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "t02", row["table_name"])
require.Equal(t, "0", row["data_change"])
require.Equal(t, "1", row["schema_change"])
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ func TestBinlogReplicationAutoReconnect(t *testing.T) {
rows, err := replicaDatabase.Queryx("select min(pk) as min, max(pk) as max, count(pk) as count from db01.reconnect_test;")
require.NoError(t, err)

row := convertByteArraysToStrings(readNextRow(t, rows))
row := convertMapScanResultToStrings(readNextRow(t, rows))
require.Equal(t, "0", row["min"])
require.Equal(t, "999", row["max"])
require.Equal(t, "1000", row["count"])
Expand Down Expand Up @@ -145,7 +145,7 @@ func showReplicaStatus(t *testing.T) map[string]interface{} {
rows, err := replicaDatabase.Queryx("show replica status;")
require.NoError(t, err)
defer rows.Close()
return convertByteArraysToStrings(readNextRow(t, rows))
return convertMapScanResultToStrings(readNextRow(t, rows))
}

func configureToxiProxy(t *testing.T) {
Expand Down Expand Up @@ -184,15 +184,19 @@ func turnOnLimitDataToxic(t *testing.T) {
t.Logf("Toxiproxy proxy with limit_data toxic (1KB) started on port %d", proxyPort)
}

// convertByteArraysToStrings converts each []byte value in the specified map |m| into a string.
// convertMapScanResultToStrings converts each value in the specified map |m| into a string.
// This is necessary because MapScan doesn't honor (or know about) the correct underlying SQL types – it
// gets all results back as strings, typed as []byte.
// gets results back as strings, typed as []byte. Results also get returned as int64, which are converted to strings
// for ease of testing.
// More info at the end of this issue: https://github.com/jmoiron/sqlx/issues/225
func convertByteArraysToStrings(m map[string]interface{}) map[string]interface{} {
func convertMapScanResultToStrings(m map[string]interface{}) map[string]interface{} {
for key, value := range m {
if bytes, ok := value.([]byte); ok {
if bytes, ok := value.([]uint8); ok {
m[key] = string(bytes)
}
if i, ok := value.(int64); ok {
m[key] = strconv.FormatInt(i, 10)
}
}

return m
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,8 @@ func TestBinlogReplicationServerRestart(t *testing.T) {
require.NoError(t, err)
replicaRows, err := replicaDatabase.Queryx(countMaxQuery)
require.NoError(t, err)
primaryRow := convertByteArraysToStrings(readNextRow(t, primaryRows))
replicaRow := convertByteArraysToStrings(readNextRow(t, replicaRows))
primaryRow := convertMapScanResultToStrings(readNextRow(t, primaryRows))
replicaRow := convertMapScanResultToStrings(readNextRow(t, replicaRows))
require.Equal(t, primaryRow["count"], replicaRow["count"])
require.Equal(t, primaryRow["max"], replicaRow["max"])
require.NoError(t, replicaRows.Close())
Expand Down
Loading

0 comments on commit 56d7066

Please sign in to comment.