Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
tests: make runtime more testable via runtime.New()
  • Loading branch information
cognifloyd committed Aug 3, 2022
commit 72394b93f29a2bc72f5b26efb94a4920629fdb95
1 change: 1 addition & 0 deletions cmd/vela-worker/exec.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ func (w *Worker) exec(index int) error {
// https://pkg.go.dev/github.com/go-vela/worker/runtime?tab=doc#New
w.Runtime, err = runtime.New(&runtime.Setup{
Logger: logger,
Mock: w.Config.Mock,
Driver: w.Config.Runtime.Driver,
ConfigFile: w.Config.Runtime.ConfigFile,
HostVolumes: w.Config.Runtime.HostVolumes,
Expand Down
42 changes: 32 additions & 10 deletions runtime/setup.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
"github.com/go-vela/types/constants"

"github.com/sirupsen/logrus"
v1 "k8s.io/api/core/v1"
)

// Setup represents the configuration necessary for
Expand All @@ -24,6 +25,9 @@ type Setup struct {

// Runtime Configuration

// Mock should only be true for tests.
Mock bool

// specifies the driver to use for the runtime client
Driver string
// specifies the path to a configuration file to use for the runtime client
Expand All @@ -45,32 +49,50 @@ type Setup struct {
func (s *Setup) Docker() (Engine, error) {
logrus.Trace("creating docker runtime client from setup")

// create new Docker runtime engine
//
// https://pkg.go.dev/github.com/go-vela/worker/runtime/docker?tab=doc#New
return docker.New(
opts := []docker.ClientOpt{
docker.WithHostVolumes(s.HostVolumes),
docker.WithPrivilegedImages(s.PrivilegedImages),
docker.WithLogger(s.Logger),
)
}

if s.Mock {
// create new mock Docker runtime engine
//
// https://pkg.go.dev/github.com/go-vela/worker/runtime/docker?tab=doc#NewMock
return docker.NewMock(opts...)
}

// create new Docker runtime engine
//
// https://pkg.go.dev/github.com/go-vela/worker/runtime/docker?tab=doc#New
return docker.New(opts...)
}

// Kubernetes creates and returns a Vela engine capable of
// integrating with a Kubernetes runtime environment.
func (s *Setup) Kubernetes() (Engine, error) {
logrus.Trace("creating kubernetes runtime client from setup")

// create new Kubernetes runtime engine
//
// https://pkg.go.dev/github.com/go-vela/worker/runtime/kubernetes?tab=doc#New
return kubernetes.New(
opts := []kubernetes.ClientOpt{
kubernetes.WithConfigFile(s.ConfigFile),
kubernetes.WithHostVolumes(s.HostVolumes),
kubernetes.WithNamespace(s.Namespace),
kubernetes.WithPodsTemplate(s.PodsTemplateName, s.PodsTemplateFile),
kubernetes.WithPrivilegedImages(s.PrivilegedImages),
kubernetes.WithLogger(s.Logger),
)
}

if s.Mock {
// create new mock Kubernetes runtime engine
//
// https://pkg.go.dev/github.com/go-vela/worker/runtime/kubernetes?tab=doc#NewMock
return kubernetes.NewMock(&v1.Pod{}, opts...)
}

// create new Kubernetes runtime engine
//
// https://pkg.go.dev/github.com/go-vela/worker/runtime/kubernetes?tab=doc#New
return kubernetes.New(opts...)
}

// Validate verifies the necessary fields for the
Expand Down