MM-27744 disable Zap for unit tests. Zap has no concept of shutdown or close. Zap is only shutdown when the app exits. Not a problem for console logging, but when creating a new Zap logger that outputs to files on every unit test, that leaves no easy way to clean up until process exit. Depending on what else is running this can exhaust all file handles and cause unit tests to fail. Zap is now disabled unit tests and uses Logr instead, regardless of config settings. `make test-server` peak file handle usage dropped from ~5K to less than 100.
76 строки
1.8 KiB
Go
76 строки
1.8 KiB
Go
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
package config_test
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
|
|
"github.com/go-sql-driver/mysql"
|
|
"github.com/lib/pq"
|
|
"github.com/mattermost/mattermost-server/v5/mlog"
|
|
"github.com/mattermost/mattermost-server/v5/model"
|
|
"github.com/mattermost/mattermost-server/v5/testlib"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
var mainHelper *testlib.MainHelper
|
|
|
|
func TestMain(m *testing.M) {
|
|
var options = testlib.HelperOptions{
|
|
EnableStore: true,
|
|
}
|
|
|
|
mlog.DisableZap()
|
|
|
|
mainHelper = testlib.NewMainHelperWithOptions(&options)
|
|
defer mainHelper.Close()
|
|
|
|
mainHelper.Main(m)
|
|
}
|
|
|
|
// truncateTable clears the given table
|
|
func truncateTable(t *testing.T, table string) {
|
|
t.Helper()
|
|
sqlSetting := mainHelper.GetSQLSettings()
|
|
sqlSupplier := mainHelper.GetSQLSupplier()
|
|
|
|
switch *sqlSetting.DriverName {
|
|
case model.DATABASE_DRIVER_MYSQL:
|
|
_, err := sqlSupplier.GetMaster().Db.Exec(fmt.Sprintf("TRUNCATE TABLE %s", table))
|
|
if err != nil {
|
|
if driverErr, ok := err.(*mysql.MySQLError); ok {
|
|
// Ignore if the Configurations table does not exist.
|
|
if driverErr.Number == 1146 {
|
|
return
|
|
}
|
|
}
|
|
}
|
|
require.NoError(t, err)
|
|
|
|
case model.DATABASE_DRIVER_POSTGRES:
|
|
_, err := sqlSupplier.GetMaster().Db.Exec(fmt.Sprintf("TRUNCATE TABLE %s", table))
|
|
if err != nil {
|
|
if driverErr, ok := err.(*pq.Error); ok {
|
|
// Ignore if the Configurations table does not exist.
|
|
if driverErr.Code == "42P01" {
|
|
return
|
|
}
|
|
}
|
|
}
|
|
require.NoError(t, err)
|
|
|
|
default:
|
|
require.Failf(t, "failed", "unsupported driver name: %s", *sqlSetting.DriverName)
|
|
}
|
|
}
|
|
|
|
// truncateTables clears tables used by the config package for reuse in other tests
|
|
func truncateTables(t *testing.T) {
|
|
t.Helper()
|
|
|
|
truncateTable(t, "Configurations")
|
|
truncateTable(t, "ConfigurationFiles")
|
|
}
|