MM-49604: Fix race condition in test (#22128)
The AssertExpectations was being called after the store was closed. To fix it we move it to the last line. https://mattermost.atlassian.net/browse/MM-49604 ```release-note NONE
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
63f05ee1a3
Коммит
82077c9004
@@ -703,56 +703,57 @@ func TestVersionString(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestReplicaLagQuery(t *testing.T) {
|
func TestReplicaLagQuery(t *testing.T) {
|
||||||
t.Skip("MM-49604")
|
|
||||||
testDrivers := []string{
|
testDrivers := []string{
|
||||||
model.DatabaseDriverPostgres,
|
model.DatabaseDriverPostgres,
|
||||||
model.DatabaseDriverMysql,
|
model.DatabaseDriverMysql,
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, driver := range testDrivers {
|
for _, driver := range testDrivers {
|
||||||
settings := makeSqlSettings(driver)
|
t.Run(driver, func(t *testing.T) {
|
||||||
var query string
|
settings := makeSqlSettings(driver)
|
||||||
var tableName string
|
var query string
|
||||||
// Just any random query which returns a row in (string, int) format.
|
var tableName string
|
||||||
switch driver {
|
// Just any random query which returns a row in (string, int) format.
|
||||||
case model.DatabaseDriverPostgres:
|
switch driver {
|
||||||
query = `SELECT relname, count(relname) FROM pg_class WHERE relname='posts' GROUP BY relname`
|
case model.DatabaseDriverPostgres:
|
||||||
tableName = "posts"
|
query = `SELECT relname, count(relname) FROM pg_class WHERE relname='posts' GROUP BY relname`
|
||||||
case model.DatabaseDriverMysql:
|
tableName = "posts"
|
||||||
query = `SELECT table_name, count(table_name) FROM information_schema.tables WHERE table_name='Posts' and table_schema=Database() GROUP BY table_name`
|
case model.DatabaseDriverMysql:
|
||||||
tableName = "Posts"
|
query = `SELECT table_name, count(table_name) FROM information_schema.tables WHERE table_name='Posts' and table_schema=Database() GROUP BY table_name`
|
||||||
}
|
tableName = "Posts"
|
||||||
|
}
|
||||||
|
|
||||||
settings.ReplicaLagSettings = []*model.ReplicaLagSettings{{
|
settings.ReplicaLagSettings = []*model.ReplicaLagSettings{{
|
||||||
DataSource: model.NewString(*settings.DataSource),
|
DataSource: model.NewString(*settings.DataSource),
|
||||||
QueryAbsoluteLag: model.NewString(query),
|
QueryAbsoluteLag: model.NewString(query),
|
||||||
QueryTimeLag: model.NewString(query),
|
QueryTimeLag: model.NewString(query),
|
||||||
}}
|
}}
|
||||||
|
|
||||||
mockMetrics := &mocks.MetricsInterface{}
|
mockMetrics := &mocks.MetricsInterface{}
|
||||||
defer mockMetrics.AssertExpectations(t)
|
mockMetrics.On("SetReplicaLagAbsolute", tableName, float64(1))
|
||||||
mockMetrics.On("SetReplicaLagAbsolute", tableName, float64(1))
|
mockMetrics.On("SetReplicaLagTime", tableName, float64(1))
|
||||||
mockMetrics.On("SetReplicaLagTime", tableName, float64(1))
|
mockMetrics.On("RegisterDBCollector", mock.AnythingOfType("*sql.DB"), "master")
|
||||||
mockMetrics.On("RegisterDBCollector", mock.AnythingOfType("*sql.DB"), "master")
|
|
||||||
|
|
||||||
store := &SqlStore{
|
store := &SqlStore{
|
||||||
rrCounter: 0,
|
rrCounter: 0,
|
||||||
srCounter: 0,
|
srCounter: 0,
|
||||||
settings: settings,
|
settings: settings,
|
||||||
metrics: mockMetrics,
|
metrics: mockMetrics,
|
||||||
}
|
}
|
||||||
|
|
||||||
store.initConnection()
|
store.initConnection()
|
||||||
store.stores.post = newSqlPostStore(store, mockMetrics)
|
store.stores.post = newSqlPostStore(store, mockMetrics)
|
||||||
err := store.migrate(migrationsDirectionUp)
|
err := store.migrate(migrationsDirectionUp)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
defer store.Close()
|
defer store.Close()
|
||||||
|
|
||||||
err = store.ReplicaLagAbs()
|
err = store.ReplicaLagAbs()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
err = store.ReplicaLagTime()
|
err = store.ReplicaLagTime()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
mockMetrics.AssertExpectations(t)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user