mirror of
https://github.com/mattermost/mattermost.git
synced 2025-02-25 18:55:24 -06:00
th.InitBasic initializes users, channels, and teams. But a lot of tests don't use it at all, causing unncessary delays. A single InitBasic call takes around 400ms. This PR removes 71 of them, approximately shaving off 28 seconds. Arguably, this would be more because some tests run in loops.
86 lines
2.3 KiB
Go
86 lines
2.3 KiB
Go
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
package app
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/mattermost/mattermost-server/v5/model"
|
|
"github.com/mattermost/mattermost-server/v5/plugin"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestHealthCheckJob(t *testing.T) {
|
|
th := Setup(t)
|
|
defer th.TearDown()
|
|
|
|
tearDown, _, _ := SetAppEnvironmentWithPlugins(t, []string{
|
|
`
|
|
package main
|
|
|
|
import (
|
|
"github.com/mattermost/mattermost-server/v5/model"
|
|
"github.com/mattermost/mattermost-server/v5/plugin"
|
|
)
|
|
|
|
type MyPlugin struct {
|
|
plugin.MattermostPlugin
|
|
}
|
|
|
|
func (p *MyPlugin) MessageWillBePosted(c *plugin.Context, post *model.Post) (*model.Post, string) {
|
|
panic("Uncaught error")
|
|
}
|
|
|
|
func main() {
|
|
plugin.ClientMain(&MyPlugin{})
|
|
}
|
|
`,
|
|
}, th.App, th.App.NewPluginAPI)
|
|
defer tearDown()
|
|
|
|
env := th.App.GetPluginsEnvironment()
|
|
job := env.GetPluginHealthCheckJob()
|
|
require.NotNil(t, job)
|
|
bundles := env.Active()
|
|
require.Equal(t, 1, len(bundles))
|
|
|
|
id := bundles[0].Manifest.Id
|
|
|
|
// First health check
|
|
hooks, err := env.HooksForPlugin(id)
|
|
require.Nil(t, err)
|
|
hooks.MessageWillBePosted(&plugin.Context{}, &model.Post{})
|
|
job.CheckPlugin(id)
|
|
bundles = env.Active()
|
|
require.Equal(t, 1, len(bundles))
|
|
require.Equal(t, id, bundles[0].Manifest.Id)
|
|
require.Equal(t, model.PluginStateRunning, env.GetPluginState(id))
|
|
|
|
// Second health check
|
|
hooks, err = env.HooksForPlugin(id)
|
|
require.Nil(t, err)
|
|
hooks.MessageWillBePosted(&plugin.Context{}, &model.Post{})
|
|
job.CheckPlugin(id)
|
|
bundles = env.Active()
|
|
require.Equal(t, 1, len(bundles))
|
|
require.Equal(t, id, bundles[0].Manifest.Id)
|
|
require.Equal(t, model.PluginStateRunning, env.GetPluginState(id))
|
|
|
|
// Third health check, plugin should be deactivated by the job
|
|
hooks, err = env.HooksForPlugin(id)
|
|
require.Nil(t, err)
|
|
hooks.MessageWillBePosted(&plugin.Context{}, &model.Post{})
|
|
job.CheckPlugin(id)
|
|
bundles = env.Active()
|
|
require.Equal(t, 0, len(bundles))
|
|
require.Equal(t, model.PluginStateFailedToStayRunning, env.GetPluginState(id))
|
|
|
|
// Activated manually, plugin should stay active
|
|
env.Activate(id)
|
|
job.CheckPlugin(id)
|
|
bundles = env.Active()
|
|
require.Equal(t, 1, len(bundles))
|
|
require.Equal(t, model.PluginStateRunning, env.GetPluginState(id))
|
|
}
|