package controller import ( "testing" kapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" kerrors "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" api "github.com/openshift/origin/pkg/api/latest" deployapi "github.com/openshift/origin/pkg/deploy/api" deploytest "github.com/openshift/origin/pkg/deploy/api/test" deployutil "github.com/openshift/origin/pkg/deploy/util" ) func TestHandleNewDeploymentConfig(t *testing.T) { controller := &DeploymentConfigController{ Codec: api.Codec, DeploymentInterface: &testDeploymentInterface{ GetDeploymentFunc: func(namespace, name string) (*kapi.ReplicationController, error) { t.Fatalf("unexpected call with name %s", name) return nil, nil }, CreateDeploymentFunc: func(namespace string, deployment *kapi.ReplicationController) (*kapi.ReplicationController, error) { t.Fatalf("unexpected call with deployment %v", deployment) return nil, nil }, }, NextDeploymentConfig: func() *deployapi.DeploymentConfig { return deploytest.OkDeploymentConfig(0) }, } controller.HandleDeploymentConfig() } func TestHandleInitialDeployment(t *testing.T) { deploymentConfig := deploytest.OkDeploymentConfig(1) var deployed *kapi.ReplicationController controller := &DeploymentConfigController{ Codec: api.Codec, DeploymentInterface: &testDeploymentInterface{ GetDeploymentFunc: func(namespace, name string) (*kapi.ReplicationController, error) { return nil, kerrors.NewNotFound("replicationController", name) }, CreateDeploymentFunc: func(namespace string, deployment *kapi.ReplicationController) (*kapi.ReplicationController, error) { deployed = deployment return deployment, nil }, }, NextDeploymentConfig: func() *deployapi.DeploymentConfig { return deploymentConfig }, } controller.HandleDeploymentConfig() if deployed == nil { t.Fatalf("expected a deployment") } } func TestHandleConfigChangeLatestAlreadyDeployed(t *testing.T) { deploymentConfig := deploytest.OkDeploymentConfig(0) controller := &DeploymentConfigController{ Codec: api.Codec, DeploymentInterface: &testDeploymentInterface{ GetDeploymentFunc: func(namespace, name string) (*kapi.ReplicationController, error) { deployment, _ := deployutil.MakeDeployment(deploymentConfig, kapi.Codec) return deployment, nil }, CreateDeploymentFunc: func(namespace string, deployment *kapi.ReplicationController) (*kapi.ReplicationController, error) { t.Fatalf("unexpected call to to create deployment: %v", deployment) return nil, nil }, }, NextDeploymentConfig: func() *deployapi.DeploymentConfig { return deploymentConfig }, } controller.HandleDeploymentConfig() } type testDeploymentInterface struct { GetDeploymentFunc func(namespace, name string) (*kapi.ReplicationController, error) CreateDeploymentFunc func(namespace string, deployment *kapi.ReplicationController) (*kapi.ReplicationController, error) } func (i *testDeploymentInterface) GetDeployment(namespace, name string) (*kapi.ReplicationController, error) { return i.GetDeploymentFunc(namespace, name) } func (i *testDeploymentInterface) CreateDeployment(namespace string, deployment *kapi.ReplicationController) (*kapi.ReplicationController, error) { return i.CreateDeploymentFunc(namespace, deployment) }