Merge pull request #46157 from vvoland/pkg-plugins-racy

This commit is contained in:
Brian Goff 2023-08-05 10:46:00 -07:00 committed by GitHub
commit b1c112d35e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -29,7 +29,9 @@ func TestPluginAddHandler(t *testing.T) {
// make a plugin which is pre-activated // make a plugin which is pre-activated
p := &Plugin{activateWait: sync.NewCond(&sync.Mutex{})} p := &Plugin{activateWait: sync.NewCond(&sync.Mutex{})}
p.Manifest = &Manifest{Implements: []string{"bananas"}} p.Manifest = &Manifest{Implements: []string{"bananas"}}
storage.Lock()
storage.plugins["qwerty"] = p storage.plugins["qwerty"] = p
storage.Unlock()
testActive(t, p) testActive(t, p)
Handle("bananas", func(_ string, _ *Client) {}) Handle("bananas", func(_ string, _ *Client) {})
@ -37,7 +39,6 @@ func TestPluginAddHandler(t *testing.T) {
} }
func TestPluginWaitBadPlugin(t *testing.T) { func TestPluginWaitBadPlugin(t *testing.T) {
t.Parallel()
p := &Plugin{activateWait: sync.NewCond(&sync.Mutex{})} p := &Plugin{activateWait: sync.NewCond(&sync.Mutex{})}
p.activateErr = errors.New("some junk happened") p.activateErr = errors.New("some junk happened")
testActive(t, p) testActive(t, p)
@ -59,10 +60,14 @@ func testActive(t *testing.T, p *Plugin) {
} }
func TestGet(t *testing.T) { func TestGet(t *testing.T) {
t.Parallel() // TODO: t.Parallel()
// TestPluginWithNoManifest also registers fruitPlugin
p := &Plugin{name: fruitPlugin, activateWait: sync.NewCond(&sync.Mutex{})} p := &Plugin{name: fruitPlugin, activateWait: sync.NewCond(&sync.Mutex{})}
p.Manifest = &Manifest{Implements: []string{fruitImplements}} p.Manifest = &Manifest{Implements: []string{fruitImplements}}
storage.Lock()
storage.plugins[fruitPlugin] = p storage.plugins[fruitPlugin] = p
storage.Unlock()
t.Run("success", func(t *testing.T) { t.Run("success", func(t *testing.T) {
plugin, err := Get(fruitPlugin, fruitImplements) plugin, err := Get(fruitPlugin, fruitImplements)
@ -94,7 +99,8 @@ func TestGet(t *testing.T) {
} }
func TestPluginWithNoManifest(t *testing.T) { func TestPluginWithNoManifest(t *testing.T) {
t.Parallel() // TODO: t.Parallel()
// TestGet also registers fruitPlugin
mux, addr := setupRemotePluginServer(t) mux, addr := setupRemotePluginServer(t)
m := Manifest{[]string{fruitImplements}} m := Manifest{[]string{fruitImplements}}
@ -120,7 +126,9 @@ func TestPluginWithNoManifest(t *testing.T) {
Addr: addr, Addr: addr,
TLSConfig: &tlsconfig.Options{InsecureSkipVerify: true}, TLSConfig: &tlsconfig.Options{InsecureSkipVerify: true},
} }
storage.Lock()
storage.plugins[fruitPlugin] = p storage.plugins[fruitPlugin] = p
storage.Unlock()
plugin, err := Get(fruitPlugin, fruitImplements) plugin, err := Get(fruitPlugin, fruitImplements)
if err != nil { if err != nil {
@ -133,6 +141,7 @@ func TestPluginWithNoManifest(t *testing.T) {
func TestGetAll(t *testing.T) { func TestGetAll(t *testing.T) {
t.Parallel() t.Parallel()
tmpdir := t.TempDir() tmpdir := t.TempDir()
r := LocalRegistry{ r := LocalRegistry{
socketsPath: tmpdir, socketsPath: tmpdir,
@ -154,7 +163,9 @@ func TestGetAll(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
plugin.Manifest = &Manifest{Implements: []string{"apple"}} plugin.Manifest = &Manifest{Implements: []string{"apple"}}
storage.Lock()
storage.plugins["example"] = plugin storage.plugins["example"] = plugin
storage.Unlock()
fetchedPlugins, err := r.GetAll("apple") fetchedPlugins, err := r.GetAll("apple")
if err != nil { if err != nil {