Skip to content

Commit

Permalink
Merge pull request #132 from ecordell/unit-test-install-strategy
Browse files Browse the repository at this point in the history
Unit test install strategy ALM-227
  • Loading branch information
ecordell committed Nov 1, 2017
2 parents a94f555 + 65a0c84 commit 3365990
Show file tree
Hide file tree
Showing 19 changed files with 788 additions and 504 deletions.
9 changes: 5 additions & 4 deletions Makefile
Expand Up @@ -65,9 +65,10 @@ $(MOCKGEN):
go get github.com/golang/mock/mockgen

generate-mock-client: $(MOCKGEN)
@$(MOCKGEN) -package=client -source=client/clusterserviceversion_client.go > client/zz_generated.mock_clusterserviceversion_client.go
@$(MOCKGEN) -package=client -source=client/installplan_client.go > client/zz_generated.mock_installplan_client.go
@$(MOCKGEN) -package=client -source=client/alphacatalogentry_client.go > client/zz_generated.mock_alphacatalogentry_client.go
@$(MOCKGEN) -package=install -source=install/resolver.go > install/zz_generated.mock_resolver.go
mockgen -package=client -source=client/clusterserviceversion_client.go > client/zz_generated.mock_clusterserviceversion_client.go
mockgen -package=client -source=client/installplan_client.go > client/zz_generated.mock_installplan_client.go
mockgen -package=client -source=client/alphacatalogentry_client.go > client/zz_generated.mock_alphacatalogentry_client.go
mockgen -package=client -source=client/deployment_install_client.go > client/zz_generated.mock_deployment_install_client.go
mockgen -package=install -source=install/resolver.go > install/zz_generated.mock_resolver.go

make gen-all: gen-ci codegen generate-mock-client
1 change: 1 addition & 0 deletions apis/clusterserviceversion/v1alpha1/types.go
Expand Up @@ -130,6 +130,7 @@ const (
CSVReasonRequirementsNotMet ConditionReason = "RequirementsNotMet"
CSVReasonRequirementsMet ConditionReason = "AllRequirementsMet"
CSVReasonComponentFailed ConditionReason = "InstallComponentFailed"
CSVReasonInvalidStrategy ConditionReason = "InvalidInstallStrategy"
CSVReasonInstallSuccessful ConditionReason = "InstallSucceeded"
CSVReasonInstallCheckFailed ConditionReason = "InstallCheckFailed"
CSVReasonComponentUnhealthy ConditionReason = "ComponentUnhealthy"
Expand Down
2 changes: 0 additions & 2 deletions apis/subscription/v1alpha1/doc.go

This file was deleted.

47 changes: 0 additions & 47 deletions apis/subscription/v1alpha1/types.go

This file was deleted.

144 changes: 0 additions & 144 deletions apis/subscription/v1alpha1/zz_generated.deepcopy.go

This file was deleted.

76 changes: 76 additions & 0 deletions client/deployment_install_client.go
@@ -0,0 +1,76 @@
package client

import (
opClient "github.com/coreos-inc/operator-client/pkg/client"
"github.com/pkg/errors"
"k8s.io/api/core/v1"
v1beta1extensions "k8s.io/api/extensions/v1beta1"
v1beta1rbac "k8s.io/api/rbac/v1beta1"
apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

type InstallStrategyDeploymentInterface interface {
CreateRole(role *v1beta1rbac.Role) (*v1beta1rbac.Role, error)
CreateRoleBinding(roleBinding *v1beta1rbac.RoleBinding) (*v1beta1rbac.RoleBinding, error)
EnsureServiceAccount(serviceAccount *v1.ServiceAccount) (*v1.ServiceAccount, error)
CreateDeployment(deployment *v1beta1extensions.Deployment) (*v1beta1extensions.Deployment, error)
GetServiceAccountByName(serviceAccountName string) (*v1.ServiceAccount, error)
GetOwnedDeployments(owner metav1.ObjectMeta) (*v1beta1extensions.DeploymentList, error)
}

type InstallStrategyDeploymentClientForNamespace struct {
opClient opClient.Interface
Namespace string
}

var _ InstallStrategyDeploymentInterface = &InstallStrategyDeploymentClientForNamespace{}

func NewInstallStrategyDeploymentClient(opClient opClient.Interface, namespace string) InstallStrategyDeploymentInterface {
return &InstallStrategyDeploymentClientForNamespace{
opClient: opClient,
Namespace: namespace,
}
}

func (c *InstallStrategyDeploymentClientForNamespace) CreateRole(role *v1beta1rbac.Role) (*v1beta1rbac.Role, error) {
return c.opClient.KubernetesInterface().RbacV1beta1().Roles(c.Namespace).Create(role)
}

func (c *InstallStrategyDeploymentClientForNamespace) CreateRoleBinding(roleBinding *v1beta1rbac.RoleBinding) (*v1beta1rbac.RoleBinding, error) {
return c.opClient.KubernetesInterface().RbacV1beta1().RoleBindings(c.Namespace).Create(roleBinding)
}

func (c *InstallStrategyDeploymentClientForNamespace) EnsureServiceAccount(serviceAccount *v1.ServiceAccount) (*v1.ServiceAccount, error) {
foundAccount, err := c.opClient.KubernetesInterface().CoreV1().ServiceAccounts(c.Namespace).Get(serviceAccount.Name, metav1.GetOptions{})
if err == nil {
return foundAccount, nil
}
if !apierrors.IsNotFound(err) {
return nil, errors.Wrap(err, "checking for existing serviceacccount failed")
}

createdAccount, err := c.opClient.KubernetesInterface().CoreV1().ServiceAccounts(c.Namespace).Create(serviceAccount)
if err != nil && !apierrors.IsAlreadyExists(err) {
return nil, errors.Wrap(err, "creating serviceacccount failed")
}
if apierrors.IsAlreadyExists(err) {
return serviceAccount, nil
}
return createdAccount, nil
}

func (c *InstallStrategyDeploymentClientForNamespace) CreateDeployment(deployment *v1beta1extensions.Deployment) (*v1beta1extensions.Deployment, error) {
return c.opClient.CreateDeployment(deployment)
}

func (c *InstallStrategyDeploymentClientForNamespace) GetServiceAccountByName(serviceAccountName string) (*v1.ServiceAccount, error) {
return c.opClient.KubernetesInterface().CoreV1().ServiceAccounts(c.Namespace).Get(serviceAccountName, metav1.GetOptions{})
}

func (c *InstallStrategyDeploymentClientForNamespace) GetOwnedDeployments(owner metav1.ObjectMeta) (*v1beta1extensions.DeploymentList, error) {
return c.opClient.ListDeploymentsWithLabels(c.Namespace, map[string]string{
"alm-owner-name": owner.Name,
"alm-owner-namespace": owner.Namespace,
})
}
File renamed without changes.
40 changes: 16 additions & 24 deletions client/zz_generated.mock_clusterserviceversion_client.go
@@ -1,59 +1,51 @@
// Code generated by MockGen. DO NOT EDIT.
// Automatically generated by MockGen. DO NOT EDIT!
// Source: client/clusterserviceversion_client.go

// Package client is a generated GoMock package.
package client

import (
v1alpha1 "github.com/coreos-inc/alm/apis/clusterserviceversion/v1alpha1"
gomock "github.com/golang/mock/gomock"
reflect "reflect"
)

// MockClusterServiceVersionInterface is a mock of ClusterServiceVersionInterface interface
// Mock of ClusterServiceVersionInterface interface
type MockClusterServiceVersionInterface struct {
ctrl *gomock.Controller
recorder *MockClusterServiceVersionInterfaceMockRecorder
recorder *_MockClusterServiceVersionInterfaceRecorder
}

// MockClusterServiceVersionInterfaceMockRecorder is the mock recorder for MockClusterServiceVersionInterface
type MockClusterServiceVersionInterfaceMockRecorder struct {
// Recorder for MockClusterServiceVersionInterface (not exported)
type _MockClusterServiceVersionInterfaceRecorder struct {
mock *MockClusterServiceVersionInterface
}

// NewMockClusterServiceVersionInterface creates a new mock instance
func NewMockClusterServiceVersionInterface(ctrl *gomock.Controller) *MockClusterServiceVersionInterface {
mock := &MockClusterServiceVersionInterface{ctrl: ctrl}
mock.recorder = &MockClusterServiceVersionInterfaceMockRecorder{mock}
mock.recorder = &_MockClusterServiceVersionInterfaceRecorder{mock}
return mock
}

// EXPECT returns an object that allows the caller to indicate expected use
func (m *MockClusterServiceVersionInterface) EXPECT() *MockClusterServiceVersionInterfaceMockRecorder {
return m.recorder
func (_m *MockClusterServiceVersionInterface) EXPECT() *_MockClusterServiceVersionInterfaceRecorder {
return _m.recorder
}

// UpdateCSV mocks base method
func (m *MockClusterServiceVersionInterface) UpdateCSV(csv *v1alpha1.ClusterServiceVersion) (*v1alpha1.ClusterServiceVersion, error) {
ret := m.ctrl.Call(m, "UpdateCSV", csv)
func (_m *MockClusterServiceVersionInterface) UpdateCSV(csv *v1alpha1.ClusterServiceVersion) (*v1alpha1.ClusterServiceVersion, error) {
ret := _m.ctrl.Call(_m, "UpdateCSV", csv)
ret0, _ := ret[0].(*v1alpha1.ClusterServiceVersion)
ret1, _ := ret[1].(error)
return ret0, ret1
}

// UpdateCSV indicates an expected call of UpdateCSV
func (mr *MockClusterServiceVersionInterfaceMockRecorder) UpdateCSV(csv interface{}) *gomock.Call {
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateCSV", reflect.TypeOf((*MockClusterServiceVersionInterface)(nil).UpdateCSV), csv)
func (_mr *_MockClusterServiceVersionInterfaceRecorder) UpdateCSV(arg0 interface{}) *gomock.Call {
return _mr.mock.ctrl.RecordCall(_mr.mock, "UpdateCSV", arg0)
}

// CreateCSV mocks base method
func (m *MockClusterServiceVersionInterface) CreateCSV(csv *v1alpha1.ClusterServiceVersion) error {
ret := m.ctrl.Call(m, "CreateCSV", csv)
func (_m *MockClusterServiceVersionInterface) CreateCSV(csv *v1alpha1.ClusterServiceVersion) error {
ret := _m.ctrl.Call(_m, "CreateCSV", csv)
ret0, _ := ret[0].(error)
return ret0
}

// CreateCSV indicates an expected call of CreateCSV
func (mr *MockClusterServiceVersionInterfaceMockRecorder) CreateCSV(csv interface{}) *gomock.Call {
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateCSV", reflect.TypeOf((*MockClusterServiceVersionInterface)(nil).CreateCSV), csv)
func (_mr *_MockClusterServiceVersionInterfaceRecorder) CreateCSV(arg0 interface{}) *gomock.Call {
return _mr.mock.ctrl.RecordCall(_mr.mock, "CreateCSV", arg0)
}

0 comments on commit 3365990

Please sign in to comment.