Merge pull request #10294 from dmcgowan/fail-integration-test-on-plugin-fail

Fail integration test early when a plugin load fails
This commit is contained in:
Maksym Pavlenko
2024-06-06 00:44:04 +00:00
committed by GitHub

View File

@@ -23,10 +23,13 @@ import (
"io"
"os/exec"
"runtime"
"strings"
"sync"
"syscall"
"time"
"github.com/containerd/plugin"
. "github.com/containerd/containerd/v2/client"
)
@@ -79,6 +82,21 @@ func (d *daemon) waitForStart(ctx context.Context) (*Client, error) {
}
continue
}
resp, perr := client.IntrospectionService().Plugins(ctx)
if perr != nil {
return nil, fmt.Errorf("failed to get plugin list: %w", perr)
}
var loadErr error
for _, p := range resp.Plugins {
if p.InitErr != nil && !strings.Contains(p.InitErr.Message, plugin.ErrSkipPlugin.Error()) {
pluginErr := fmt.Errorf("failed to load %s.%s: %s", p.Type, p.ID, p.InitErr.Message)
loadErr = errors.Join(loadErr, pluginErr)
}
}
if loadErr != nil {
return nil, loadErr
}
return client, err
case <-ctx.Done():
return nil, fmt.Errorf("context deadline exceeded: %w", err)