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
Этот коммит содержится в:
Agniva De Sarker
2023-01-25 14:43:13 +05:30
коммит произвёл GitHub
родитель 63f05ee1a3
Коммит 82077c9004

Просмотреть файл

@@ -703,56 +703,57 @@ func TestVersionString(t *testing.T) {
}
func TestReplicaLagQuery(t *testing.T) {
t.Skip("MM-49604")
testDrivers := []string{
model.DatabaseDriverPostgres,
model.DatabaseDriverMysql,
}
for _, driver := range testDrivers {
settings := makeSqlSettings(driver)
var query string
var tableName string
// Just any random query which returns a row in (string, int) format.
switch driver {
case model.DatabaseDriverPostgres:
query = `SELECT relname, count(relname) FROM pg_class WHERE relname='posts' GROUP BY relname`
tableName = "posts"
case model.DatabaseDriverMysql:
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"
}
t.Run(driver, func(t *testing.T) {
settings := makeSqlSettings(driver)
var query string
var tableName string
// Just any random query which returns a row in (string, int) format.
switch driver {
case model.DatabaseDriverPostgres:
query = `SELECT relname, count(relname) FROM pg_class WHERE relname='posts' GROUP BY relname`
tableName = "posts"
case model.DatabaseDriverMysql:
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{{
DataSource: model.NewString(*settings.DataSource),
QueryAbsoluteLag: model.NewString(query),
QueryTimeLag: model.NewString(query),
}}
settings.ReplicaLagSettings = []*model.ReplicaLagSettings{{
DataSource: model.NewString(*settings.DataSource),
QueryAbsoluteLag: model.NewString(query),
QueryTimeLag: model.NewString(query),
}}
mockMetrics := &mocks.MetricsInterface{}
defer mockMetrics.AssertExpectations(t)
mockMetrics.On("SetReplicaLagAbsolute", tableName, float64(1))
mockMetrics.On("SetReplicaLagTime", tableName, float64(1))
mockMetrics.On("RegisterDBCollector", mock.AnythingOfType("*sql.DB"), "master")
mockMetrics := &mocks.MetricsInterface{}
mockMetrics.On("SetReplicaLagAbsolute", tableName, float64(1))
mockMetrics.On("SetReplicaLagTime", tableName, float64(1))
mockMetrics.On("RegisterDBCollector", mock.AnythingOfType("*sql.DB"), "master")
store := &SqlStore{
rrCounter: 0,
srCounter: 0,
settings: settings,
metrics: mockMetrics,
}
store := &SqlStore{
rrCounter: 0,
srCounter: 0,
settings: settings,
metrics: mockMetrics,
}
store.initConnection()
store.stores.post = newSqlPostStore(store, mockMetrics)
err := store.migrate(migrationsDirectionUp)
require.NoError(t, err)
store.initConnection()
store.stores.post = newSqlPostStore(store, mockMetrics)
err := store.migrate(migrationsDirectionUp)
require.NoError(t, err)
defer store.Close()
defer store.Close()
err = store.ReplicaLagAbs()
require.NoError(t, err)
err = store.ReplicaLagTime()
require.NoError(t, err)
err = store.ReplicaLagAbs()
require.NoError(t, err)
err = store.ReplicaLagTime()
require.NoError(t, err)
mockMetrics.AssertExpectations(t)
})
}
}