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) { 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)
})
} }
} }