mirror of
https://github.com/mattermost/mattermost.git
synced 2025-02-25 18:55:24 -06:00
72 lines
2.0 KiB
Go
72 lines
2.0 KiB
Go
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See License.txt for license information.
|
|
|
|
package main
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"os"
|
|
"syscall"
|
|
"testing"
|
|
|
|
"github.com/mattermost/mattermost-server/jobs"
|
|
"github.com/mattermost/mattermost-server/utils"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
type ServerTestHelper struct {
|
|
configPath string
|
|
disableConfigWatch bool
|
|
interruptChan chan os.Signal
|
|
originalInterval int
|
|
}
|
|
|
|
func SetupServerTest() *ServerTestHelper {
|
|
// Build a channel that will be used by the server to receive system signals…
|
|
interruptChan := make(chan os.Signal, 1)
|
|
// …and sent it immediately a SIGINT value.
|
|
// This will make the server loop stop as soon as it started successfully.
|
|
interruptChan <- syscall.SIGINT
|
|
|
|
// Let jobs poll for termination every 0.2s (instead of every 15s by default)
|
|
// Otherwise we would have to wait the whole polling duration before the test
|
|
// terminates.
|
|
originalInterval := jobs.DEFAULT_WATCHER_POLLING_INTERVAL
|
|
jobs.DEFAULT_WATCHER_POLLING_INTERVAL = 200
|
|
|
|
th := &ServerTestHelper{
|
|
configPath: utils.FindConfigFile("config.json"),
|
|
disableConfigWatch: true,
|
|
interruptChan: interruptChan,
|
|
originalInterval: originalInterval,
|
|
}
|
|
return th
|
|
}
|
|
|
|
func (th *ServerTestHelper) TearDownServerTest() {
|
|
jobs.DEFAULT_WATCHER_POLLING_INTERVAL = th.originalInterval
|
|
}
|
|
|
|
func TestRunServerSuccess(t *testing.T) {
|
|
th := SetupServerTest()
|
|
defer th.TearDownServerTest()
|
|
|
|
err := runServer(th.configPath, th.disableConfigWatch, th.interruptChan)
|
|
require.NoError(t, err)
|
|
}
|
|
|
|
func TestRunServerInvalidConfigFile(t *testing.T) {
|
|
th := SetupServerTest()
|
|
defer th.TearDownServerTest()
|
|
|
|
// Start the server with an unreadable config file
|
|
unreadableConfigFile, err := ioutil.TempFile("", "mattermost-unreadable-config-file-")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
os.Chmod(unreadableConfigFile.Name(), 0200)
|
|
defer os.Remove(unreadableConfigFile.Name())
|
|
|
|
err = runServer(unreadableConfigFile.Name(), th.disableConfigWatch, th.interruptChan)
|
|
require.Error(t, err)
|
|
} |