func TestDeploymentConfigStrategy(t *testing.T) { ctx := kapi.NewDefaultContext() if !Strategy.NamespaceScoped() { t.Errorf("DeploymentConfig is namespace scoped") } if Strategy.AllowCreateOnUpdate() { t.Errorf("DeploymentConfig should not allow create on update") } deploymentConfig := &deployapi.DeploymentConfig{ ObjectMeta: kapi.ObjectMeta{Name: "foo", Namespace: "default"}, Template: deployapi.DeploymentTemplate{ Strategy: deploytest.OkStrategy(), ControllerTemplate: deploytest.OkControllerTemplate(), }, } Strategy.PrepareForCreate(deploymentConfig) errs := Strategy.Validate(ctx, deploymentConfig) if len(errs) != 0 { t.Errorf("Unexpected error validating %v", errs) } updatedDeploymentConfig := &deployapi.DeploymentConfig{ ObjectMeta: kapi.ObjectMeta{Name: "bar", Namespace: "default"}, Template: deployapi.DeploymentTemplate{ Strategy: deploytest.OkStrategy(), ControllerTemplate: deploytest.OkControllerTemplate(), }, } errs = Strategy.ValidateUpdate(ctx, updatedDeploymentConfig, deploymentConfig) if len(errs) == 0 { t.Errorf("Expected error validating") } // name must match, and resource version must be provided updatedDeploymentConfig.Name = "foo" updatedDeploymentConfig.ResourceVersion = "1" errs = Strategy.ValidateUpdate(ctx, updatedDeploymentConfig, deploymentConfig) if len(errs) != 0 { t.Errorf("Unexpected error validating %v", errs) } invalidDeploymentConfig := &deployapi.DeploymentConfig{} errs = Strategy.Validate(ctx, invalidDeploymentConfig) if len(errs) == 0 { t.Errorf("Expected error validating") } }
func TestDeploymentConfigDescriber(t *testing.T) { config := deployapitest.OkDeploymentConfig(1) deployment, _ := deployutil.MakeDeployment(config, kapi.Codec) podList := &kapi.PodList{} eventList := &kapi.EventList{} deploymentList := &kapi.ReplicationControllerList{} d := &DeploymentConfigDescriber{ client: &genericDeploymentDescriberClient{ getDeploymentConfigFunc: func(namespace, name string) (*deployapi.DeploymentConfig, error) { return config, nil }, getDeploymentFunc: func(namespace, name string) (*kapi.ReplicationController, error) { return deployment, nil }, listDeploymentsFunc: func(namespace string, selector labels.Selector) (*kapi.ReplicationControllerList, error) { return deploymentList, nil }, listPodsFunc: func(namespace string, selector labels.Selector) (*kapi.PodList, error) { return podList, nil }, listEventsFunc: func(deploymentConfig *deployapi.DeploymentConfig) (*kapi.EventList, error) { return eventList, nil }, }, } describe := func() { if output, err := d.Describe("test", "deployment"); err != nil { t.Fatalf("unexpected error: %v", err) } else { t.Logf("describer output:\n%s\n", output) } } podList.Items = []kapi.Pod{*mkPod(kapi.PodRunning, 0)} describe() config.Triggers = append(config.Triggers, deployapitest.OkConfigChangeTrigger()) describe() config.Template.Strategy = deployapitest.OkCustomStrategy() describe() config.Triggers[0].ImageChangeParams.RepositoryName = "" config.Triggers[0].ImageChangeParams.From = kapi.ObjectReference{Name: "imageRepo"} describe() config.Template.Strategy = deployapitest.OkStrategy() config.Template.Strategy.RecreateParams = &deployapi.RecreateDeploymentStrategyParams{ Pre: &deployapi.LifecycleHook{ FailurePolicy: deployapi.LifecycleHookFailurePolicyAbort, ExecNewPod: &deployapi.ExecNewPodHook{ ContainerName: "container", Command: []string{"/command1", "args"}, Env: []kapi.EnvVar{ { Name: "KEY1", Value: "value1", }, }, }, }, Post: &deployapi.LifecycleHook{ FailurePolicy: deployapi.LifecycleHookFailurePolicyIgnore, ExecNewPod: &deployapi.ExecNewPodHook{ ContainerName: "container", Command: []string{"/command2", "args"}, Env: []kapi.EnvVar{ { Name: "KEY2", Value: "value2", }, }, }, }, } describe() }