Plugins: Don't start runner ticker for Core plugins (#46964)

* Plugins: Don't start runner ticker for Core plugins

* add test

* correct start check in test
pull/46958/head^2
Will Browne 3 years ago committed by GitHub
parent 114704e2e2
commit 23dde457ef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 8
      pkg/plugins/manager/manager.go
  2. 18
      pkg/plugins/manager/manager_test.go

@ -185,13 +185,15 @@ func (m *PluginManager) start(ctx context.Context, p *plugins.Plugin) error {
return backendplugin.ErrPluginNotRegistered
}
if p.IsCorePlugin() {
return nil
}
if err := startPluginAndRestartKilledProcesses(ctx, p); err != nil {
return err
}
if !p.IsCorePlugin() {
p.Logger().Debug("Successfully started backend plugin process")
}
p.Logger().Debug("Successfully started backend plugin process")
return nil
}

@ -242,7 +242,7 @@ func TestPluginManager_Installer(t *testing.T) {
err := pm.loadPlugins(context.Background(), plugins.Core, "test/path")
require.NoError(t, err)
assert.Equal(t, 1, pc.startCount)
assert.Equal(t, 0, pc.startCount)
assert.Equal(t, 0, pc.stopCount)
assert.False(t, pc.exited)
assert.False(t, pc.decommissioned)
@ -433,6 +433,20 @@ func TestPluginManager_lifecycle_managed(t *testing.T) {
})
})
})
newScenario(t, true, func(t *testing.T, ctx *managerScenarioCtx) {
t.Run("Backend core plugin is registered but not started", func(t *testing.T) {
ctx.plugin.Class = plugins.Core
err := ctx.manager.registerAndStart(context.Background(), ctx.plugin)
require.NoError(t, err)
require.NotNil(t, ctx.plugin)
require.Equal(t, testPluginID, ctx.plugin.ID)
require.Equal(t, 0, ctx.pluginClient.startCount)
testPlugin, exists := ctx.manager.Plugin(context.Background(), testPluginID)
assert.True(t, exists)
require.NotNil(t, testPlugin)
})
})
}
func TestPluginManager_lifecycle_unmanaged(t *testing.T) {
@ -541,7 +555,7 @@ func newScenario(t *testing.T, managed bool, fn func(t *testing.T, ctx *managerS
manager: manager,
}
ctx.plugin, ctx.pluginClient = createPlugin(testPluginID, "", plugins.Core, managed, true)
ctx.plugin, ctx.pluginClient = createPlugin(testPluginID, "", plugins.External, managed, true)
fn(t, ctx)
}

Loading…
Cancel
Save