Skip to content
Snippets Groups Projects
Unverified Commit 42a15b0c authored by Tomasz Maczukin's avatar Tomasz Maczukin
Browse files

Change testing method

parent 32e1cc85
Branches
Tags
No related merge requests found
......@@ -18,7 +18,7 @@ const (
)
type machineExecutor struct {
provider ProviderInterface
provider *machineProvider
executor common.Executor
build *common.Build
data common.ExecutorData
......@@ -78,7 +78,7 @@ func (e *machineExecutor) Prepare(options common.ExecutorPrepareOptions) (err er
e.log().Infoln("Starting docker-machine build...")
// Create original executor
e.executor = e.provider.CreateInternalExecutor()
e.executor = e.provider.provider.Create()
if e.executor == nil {
return errors.New("failed to create an executor")
}
......
......@@ -3,8 +3,8 @@ package machine
import (
"testing"
"github.com/prometheus/client_golang/prometheus"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
"gitlab.com/gitlab-org/gitlab-ci-multi-runner/common"
"gitlab.com/gitlab-org/gitlab-ci-multi-runner/helpers/docker"
......@@ -54,6 +54,7 @@ func (e *machineCredentialsUsageFakeExecutor) GetCurrentStage() common.ExecutorS
}
func TestMachineCredentialsUsage(t *testing.T) {
machineName := "expected-machine"
machineCredentials := docker_helpers.DockerCredentials{
Host: "tcp://expected-host:1234",
}
......@@ -63,24 +64,40 @@ func TestMachineCredentialsUsage(t *testing.T) {
Config: runnerConfig,
Build: &common.Build{
Runner: runnerConfig,
ExecutorData: &machineDetails{
Name: machineName,
State: machineStateAcquired,
},
},
}
machineRunnerConfig := getRunnerConfig()
machineRunnerConfig.Docker.DockerCredentials = machineCredentials
machine := &docker_helpers.MockMachine{}
defer machine.AssertExpectations(t)
fakeExecutor := &machineCredentialsUsageFakeExecutor{t, machineCredentials}
machine.On("CanConnect", machineName).
Return(true).Once()
machine.On("Credentials", machineName).
Return(machineCredentials, nil).Once()
machineProvider := &MockProviderInterface{}
defer machineProvider.AssertExpectations(t)
executorProvider := &common.MockExecutorProvider{}
defer executorProvider.AssertExpectations(t)
machineProvider.On("Use", options.Config, options.Build.ExecutorData).
Return(*machineRunnerConfig, mock.Anything, nil).Once()
machineProvider.On("CreateInternalExecutor").
fakeExecutor := &machineCredentialsUsageFakeExecutor{t, machineCredentials}
executorProvider.On("Create").
Return(fakeExecutor).Once()
e := &machineExecutor{
provider: machineProvider,
provider: &machineProvider{
machine: machine,
provider: executorProvider,
totalActions: prometheus.NewCounterVec(
prometheus.CounterOpts{
Name: "actions_total",
Help: "actions_total",
},
[]string{"action"},
),
},
}
err := e.Prepare(options)
assert.NoError(t, err)
......
package machine
import common "gitlab.com/gitlab-org/gitlab-ci-multi-runner/common"
import mock "github.com/stretchr/testify/mock"
// MockProviderInterface is an autogenerated mock type for the ProviderInterface type
type MockProviderInterface struct {
mock.Mock
}
// CreateInternalExecutor provides a mock function with given fields:
func (_m *MockProviderInterface) CreateInternalExecutor() common.Executor {
ret := _m.Called()
var r0 common.Executor
if rf, ok := ret.Get(0).(func() common.Executor); ok {
r0 = rf()
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(common.Executor)
}
}
return r0
}
// Release provides a mock function with given fields: config, data
func (_m *MockProviderInterface) Release(config *common.RunnerConfig, data common.ExecutorData) error {
ret := _m.Called(config, data)
var r0 error
if rf, ok := ret.Get(0).(func(*common.RunnerConfig, common.ExecutorData) error); ok {
r0 = rf(config, data)
} else {
r0 = ret.Error(0)
}
return r0
}
// Use provides a mock function with given fields: config, data
func (_m *MockProviderInterface) Use(config *common.RunnerConfig, data common.ExecutorData) (common.RunnerConfig, common.ExecutorData, error) {
ret := _m.Called(config, data)
var r0 common.RunnerConfig
if rf, ok := ret.Get(0).(func(*common.RunnerConfig, common.ExecutorData) common.RunnerConfig); ok {
r0 = rf(config, data)
} else {
r0 = ret.Get(0).(common.RunnerConfig)
}
var r1 common.ExecutorData
if rf, ok := ret.Get(1).(func(*common.RunnerConfig, common.ExecutorData) common.ExecutorData); ok {
r1 = rf(config, data)
} else {
if ret.Get(1) != nil {
r1 = ret.Get(1).(common.ExecutorData)
}
}
var r2 error
if rf, ok := ret.Get(2).(func(*common.RunnerConfig, common.ExecutorData) error); ok {
r2 = rf(config, data)
} else {
r2 = ret.Error(2)
}
return r0, r1, r2
}
var _ ProviderInterface = (*MockProviderInterface)(nil)
......@@ -13,12 +13,6 @@ import (
"gitlab.com/gitlab-org/gitlab-ci-multi-runner/helpers/docker"
)
type ProviderInterface interface {
CreateInternalExecutor() common.Executor
Release(config *common.RunnerConfig, data common.ExecutorData) error
Use(config *common.RunnerConfig, data common.ExecutorData) (newConfig common.RunnerConfig, newData common.ExecutorData, err error)
}
type machineProvider struct {
name string
machine docker_helpers.Machine
......@@ -398,10 +392,6 @@ func (m *machineProvider) GetFeatures(features *common.FeaturesInfo) {
m.provider.GetFeatures(features)
}
func (m *machineProvider) CreateInternalExecutor() common.Executor {
return m.provider.Create()
}
func (m *machineProvider) Create() common.Executor {
return &machineExecutor{
provider: m,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment