From 1e5c432e1029601a664454388ae366ef69618d62 Mon Sep 17 00:00:00 2001 From: Christopher Speller Date: Mon, 25 Jun 2018 12:33:13 -0700 Subject: MM-10702 Moving plugins to use hashicorp go-plugin. (#8978) * Moving plugins to use hashicorp go-plugin. * Tweaks from feedback. --- app/apptestlib.go | 80 +++++++++++-------------------------------------------- 1 file changed, 15 insertions(+), 65 deletions(-) (limited to 'app/apptestlib.go') diff --git a/app/apptestlib.go b/app/apptestlib.go index 818b21183..0ca6ef011 100644 --- a/app/apptestlib.go +++ b/app/apptestlib.go @@ -4,23 +4,21 @@ package app import ( - "encoding/json" "io" "io/ioutil" "os" "path/filepath" "time" + "testing" + "github.com/mattermost/mattermost-server/einterfaces" "github.com/mattermost/mattermost-server/mlog" "github.com/mattermost/mattermost-server/model" - "github.com/mattermost/mattermost-server/plugin" - "github.com/mattermost/mattermost-server/plugin/pluginenv" "github.com/mattermost/mattermost-server/store" "github.com/mattermost/mattermost-server/store/sqlstore" "github.com/mattermost/mattermost-server/store/storetest" "github.com/mattermost/mattermost-server/utils" - "testing" ) type TestHelper struct { @@ -35,7 +33,6 @@ type TestHelper struct { tempConfigPath string tempWorkspace string - pluginHooks map[string]plugin.Hooks } type persistentTestStore struct { @@ -93,7 +90,6 @@ func setupTestHelper(enterprise bool) *TestHelper { th := &TestHelper{ App: a, - pluginHooks: make(map[string]plugin.Hooks), tempConfigPath: tempConfig.Name(), } @@ -123,6 +119,19 @@ func setupTestHelper(enterprise bool) *TestHelper { th.App.SetLicense(nil) } + if th.tempWorkspace == "" { + dir, err := ioutil.TempDir("", "apptest") + if err != nil { + panic(err) + } + th.tempWorkspace = dir + } + + pluginDir := filepath.Join(th.tempWorkspace, "plugins") + webappDir := filepath.Join(th.tempWorkspace, "webapp") + + th.App.InitPlugins(pluginDir, webappDir) + return th } @@ -364,65 +373,6 @@ func (me *TestHelper) TearDown() { } } -type mockPluginSupervisor struct { - hooks plugin.Hooks -} - -func (s *mockPluginSupervisor) Start(api plugin.API) error { - return s.hooks.OnActivate(api) -} - -func (s *mockPluginSupervisor) Wait() error { - return nil -} - -func (s *mockPluginSupervisor) Stop() error { - return nil -} - -func (s *mockPluginSupervisor) Hooks() plugin.Hooks { - return s.hooks -} - -func (me *TestHelper) InstallPlugin(manifest *model.Manifest, hooks plugin.Hooks) { - if me.tempWorkspace == "" { - dir, err := ioutil.TempDir("", "apptest") - if err != nil { - panic(err) - } - me.tempWorkspace = dir - } - - manifestCopy := *manifest - if manifestCopy.Backend == nil { - manifestCopy.Backend = &model.ManifestBackend{} - } - manifestBytes, err := json.Marshal(&manifestCopy) - if err != nil { - panic(err) - } - - pluginDir := filepath.Join(me.tempWorkspace, "plugins") - webappDir := filepath.Join(me.tempWorkspace, "webapp") - - if err := os.MkdirAll(filepath.Join(pluginDir, manifest.Id), 0700); err != nil { - panic(err) - } - - if err := ioutil.WriteFile(filepath.Join(pluginDir, manifest.Id, "plugin.json"), manifestBytes, 0600); err != nil { - panic(err) - } - - me.App.InitPlugins(pluginDir, webappDir, func(bundle *model.BundleInfo) (plugin.Supervisor, error) { - if hooks, ok := me.pluginHooks[bundle.Manifest.Id]; ok { - return &mockPluginSupervisor{hooks}, nil - } - return pluginenv.DefaultSupervisorProvider(bundle) - }) - - me.pluginHooks[manifest.Id] = hooks -} - func (me *TestHelper) ResetRoleMigration() { if _, err := testStoreSqlSupplier.GetMaster().Exec("DELETE from Roles"); err != nil { panic(err) -- cgit v1.2.3-1-g7c22