mysql: update unit test to be ready for the xorm-removal (#78064)

* mysql: update unit test to be ready for the xorm-removal

* removed unused code
This commit is contained in:
Gábor Farkas
2023-11-15 09:46:18 +01:00
committed by GitHub
parent dd54931147
commit b97e485fe0

View File

@@ -81,15 +81,12 @@ func TestIntegrationMySQL(t *testing.T) {
sess := x.NewSession() sess := x.NewSession()
t.Cleanup(sess.Close) t.Cleanup(sess.Close)
db := sess.DB()
fromStart := time.Date(2018, 3, 15, 13, 0, 0, 0, time.UTC) fromStart := time.Date(2018, 3, 15, 13, 0, 0, 0, time.UTC)
t.Run("Given a table with different native data types", func(t *testing.T) { t.Run("Given a table with different native data types", func(t *testing.T) {
exists, err := sess.IsTableExist("mysql_types") _, err = db.Exec("DROP TABLE IF EXISTS mysql_types")
require.NoError(t, err) require.NoError(t, err)
if exists {
err := sess.DropTable("mysql_types")
require.NoError(t, err)
}
sql := "CREATE TABLE `mysql_types` (" sql := "CREATE TABLE `mysql_types` ("
sql += "`atinyint` tinyint(1) NOT NULL," sql += "`atinyint` tinyint(1) NOT NULL,"
@@ -124,7 +121,7 @@ func TestIntegrationMySQL(t *testing.T) {
sql += "`avarcharnull` varchar(3)," sql += "`avarcharnull` varchar(3),"
sql += "`adecimalnull` decimal(10,2)" sql += "`adecimalnull` decimal(10,2)"
sql += ") ENGINE=InnoDB DEFAULT CHARSET=latin1;" sql += ") ENGINE=InnoDB DEFAULT CHARSET=latin1;"
_, err = sess.Exec(sql) _, err = db.Exec(sql)
require.NoError(t, err) require.NoError(t, err)
sql = "INSERT INTO `mysql_types` " sql = "INSERT INTO `mysql_types` "
@@ -136,7 +133,7 @@ func TestIntegrationMySQL(t *testing.T) {
sql += "2.22, 3.33, current_timestamp(), now(), '11:11:11', '2018', 1, 'tinytext', " sql += "2.22, 3.33, current_timestamp(), now(), '11:11:11', '2018', 1, 'tinytext', "
sql += "'tinyblob', 'text', 'blob', 'mediumtext', 'mediumblob', 'longtext', 'longblob', " sql += "'tinyblob', 'text', 'blob', 'mediumtext', 'mediumblob', 'longtext', 'longblob', "
sql += "'val2', 'a,b', curdate(), '2018-01-01 00:01:01.123456');" sql += "'val2', 'a,b', curdate(), '2018-01-01 00:01:01.123456');"
_, err = sess.Exec(sql) _, err = db.Exec(sql)
require.NoError(t, err) require.NoError(t, err)
t.Run("Query with Table format should map MySQL column types to Go types", func(t *testing.T) { t.Run("Query with Table format should map MySQL column types to Go types", func(t *testing.T) {
@@ -202,13 +199,10 @@ func TestIntegrationMySQL(t *testing.T) {
Value int64 Value int64
} }
exists, err := sess.IsTableExist(metric{}) _, err := db.Exec("DROP TABLE IF EXISTS metric")
require.NoError(t, err) require.NoError(t, err)
if exists {
err := sess.DropTable(metric{}) _, err = db.Exec("CREATE TABLE IF NOT EXISTS metric (time DATETIME NULL, value BIGINT(20) NULL)")
require.NoError(t, err)
}
err = sess.CreateTable(metric{})
require.NoError(t, err) require.NoError(t, err)
series := []*metric{} series := []*metric{}
@@ -229,8 +223,10 @@ func TestIntegrationMySQL(t *testing.T) {
}) })
} }
_, err = sess.InsertMulti(series) for _, m := range series {
require.NoError(t, err) _, err = db.Exec("INSERT INTO metric (`time`, `value`) VALUES (?, ?)", m.Time, m.Value)
require.NoError(t, err)
}
t.Run("When doing a metric query using timeGroup", func(t *testing.T) { t.Run("When doing a metric query using timeGroup", func(t *testing.T) {
query := &backend.QueryDataRequest{ query := &backend.QueryDataRequest{
@@ -442,13 +438,29 @@ func TestIntegrationMySQL(t *testing.T) {
ValueFour int64 `xorm:"smallint(1) null 'valueFour'"` ValueFour int64 `xorm:"smallint(1) null 'valueFour'"`
} }
exists, err := sess.IsTableExist(metric_values{}) _, err := db.Exec("DROP TABLE IF EXISTS metric_values")
require.NoError(t, err) require.NoError(t, err)
if exists {
err := sess.DropTable(metric_values{}) // the strings contain backticks, so i cannot use a raw go string
require.NoError(t, err) sqlCreateTable := "CREATE TABLE metric_values ("
} sqlCreateTable += " `time` DATETIME NOT NULL,"
err = sess.CreateTable(metric_values{}) sqlCreateTable += " `timeNullable` DATETIME(6) NULL,"
sqlCreateTable += " `timeInt64` BIGINT(20) NOT NULL,"
sqlCreateTable += " `timeInt64Nullable` BIGINT(20) NULL,"
sqlCreateTable += " `timeFloat64` DOUBLE NOT NULL,"
sqlCreateTable += " `timeFloat64Nullable` DOUBLE NULL,"
sqlCreateTable += " `timeInt32` INT(11) NOT NULL,"
sqlCreateTable += " `timeInt32Nullable` INT(11) NULL,"
sqlCreateTable += " `timeFloat32` DOUBLE NOT NULL,"
sqlCreateTable += " `timeFloat32Nullable` DOUBLE NULL,"
sqlCreateTable += " `measurement` VARCHAR(255) NULL,"
sqlCreateTable += " `valueOne` INTEGER NULL,"
sqlCreateTable += " `valueTwo` INTEGER NULL,"
sqlCreateTable += " `valueThree` TINYINT(1) NULL,"
sqlCreateTable += " `valueFour` SMALLINT(1) NULL"
sqlCreateTable += ")"
_, err = db.Exec(sqlCreateTable)
require.NoError(t, err) require.NoError(t, err)
rng := rand.New(rand.NewSource(time.Now().Unix())) rng := rand.New(rand.NewSource(time.Now().Unix()))
@@ -497,8 +509,24 @@ func TestIntegrationMySQL(t *testing.T) {
series = append(series, &second) series = append(series, &second)
} }
_, err = sess.InsertMulti(series) sqlInsertSeries := "INSERT INTO `metric_values` ("
require.NoError(t, err) sqlInsertSeries += " `time`, `timeNullable`,"
sqlInsertSeries += " `timeInt64`, `timeInt64Nullable`,"
sqlInsertSeries += " `timeFloat64`, `timeFloat64Nullable`,"
sqlInsertSeries += " `timeInt32`, `timeInt32Nullable`,"
sqlInsertSeries += " `timeFloat32`, `timeFloat32Nullable`,"
sqlInsertSeries += " `measurement`, `valueOne`, `valueTwo`, `valueThree`, `valueFour`)"
sqlInsertSeries += " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
for _, m := range series {
_, err = db.Exec(sqlInsertSeries,
m.Time, m.TimeNullable,
m.TimeInt64, m.TimeInt64Nullable,
m.TimeFloat64, m.TimeFloat64Nullable,
m.TimeInt32, m.TimeInt32Nullable,
m.TimeFloat32, m.TimeFloat32Nullable,
m.Measurement, m.ValueOne, m.ValueTwo, m.ValueThree, m.ValueFour)
require.NoError(t, err)
}
t.Run("When doing a metric query using time as time column should return metric with time in time.Time", func(t *testing.T) { t.Run("When doing a metric query using time as time column should return metric with time in time.Time", func(t *testing.T) {
query := &backend.QueryDataRequest{ query := &backend.QueryDataRequest{
@@ -896,13 +924,10 @@ func TestIntegrationMySQL(t *testing.T) {
Tags string Tags string
} }
exists, err := sess.IsTableExist(event{}) _, err := db.Exec("DROP TABLE IF EXISTS event")
require.NoError(t, err) require.NoError(t, err)
if exists {
err := sess.DropTable(event{}) _, err = db.Exec("CREATE TABLE IF NOT EXISTS event (time_sec BIGINT(20) NULL, description VARCHAR(255) NULL, tags VARCHAR(255) NULL)")
require.NoError(t, err)
}
err = sess.CreateTable(event{})
require.NoError(t, err) require.NoError(t, err)
events := []*event{} events := []*event{}
@@ -920,7 +945,7 @@ func TestIntegrationMySQL(t *testing.T) {
} }
for _, e := range events { for _, e := range events {
_, err := sess.Insert(e) _, err := db.Exec("INSERT INTO event (time_sec, description, tags) VALUES (?, ?, ?)", e.TimeSec, e.Description, e.Tags)
require.NoError(t, err) require.NoError(t, err)
} }
@@ -1232,18 +1257,10 @@ func TestIntegrationMySQL(t *testing.T) {
}) })
t.Run("Given an empty table", func(t *testing.T) { t.Run("Given an empty table", func(t *testing.T) {
type emptyObj struct { _, err := db.Exec("DROP TABLE IF EXISTS empty_obj")
EmptyKey string
EmptyVal int64
}
exists, err := sess.IsTableExist(emptyObj{})
require.NoError(t, err) require.NoError(t, err)
if exists {
err := sess.DropTable(emptyObj{}) _, err = db.Exec("CREATE TABLE empty_obj (empty_key VARCHAR(255) NULL, empty_val BIGINT(20) NULL)")
require.NoError(t, err)
}
err = sess.CreateTable(emptyObj{})
require.NoError(t, err) require.NoError(t, err)
t.Run("When no rows are returned, should return an empty frame", func(t *testing.T) { t.Run("When no rows are returned, should return an empty frame", func(t *testing.T) {