func TestDeploy_triggerEnable(t *testing.T) { var updated *deployapi.DeploymentConfig triggerEnabler := &triggerEnabler{ updateConfig: func(namespace string, config *deployapi.DeploymentConfig) (*deployapi.DeploymentConfig, error) { updated = config return config, nil }, } mktrigger := func() deployapi.DeploymentTriggerPolicy { t := deploytest.OkImageChangeTrigger() t.ImageChangeParams.Automatic = false return t } count := 3 config := deploytest.OkDeploymentConfig(1) config.Triggers = []deployapi.DeploymentTriggerPolicy{} for i := 0; i < count; i++ { config.Triggers = append(config.Triggers, mktrigger()) } err := triggerEnabler.enableTriggers(config, ioutil.Discard) if err != nil { t.Fatalf("unexpected error: %v", err) } if updated == nil { t.Fatalf("expected an updated config") } if e, a := count, len(config.Triggers); e != a { t.Fatalf("expected %d triggers, got %d", e, a) } for _, trigger := range config.Triggers { if !trigger.ImageChangeParams.Automatic { t.Errorf("expected trigger to be enabled: %#v", trigger.ImageChangeParams) } } }
func TestGeneration(t *testing.T) { from := deploytest.OkDeploymentConfig(2) from.Template.Strategy = deployapi.DeploymentStrategy{ Type: deployapi.DeploymentStrategyTypeCustom, } from.Triggers = append(from.Triggers, deployapi.DeploymentTriggerPolicy{Type: deployapi.DeploymentTriggerOnConfigChange}) from.Triggers = append(from.Triggers, deploytest.OkImageChangeTrigger()) from.Template.ControllerTemplate.Template.Spec.Containers[0].Name = "changed" from.Template.ControllerTemplate.Replicas = 5 from.Template.ControllerTemplate.Selector = map[string]string{ "new1": "new2", "new2": "new2", } to := deploytest.OkDeploymentConfig(1) // Generate a rollback for every combination of flag (using 1 bit per flag). rollbackSpecs := []*deployapi.DeploymentConfigRollbackSpec{} for i := 0; i < 15; i++ { spec := &deployapi.DeploymentConfigRollbackSpec{ From: kapi.ObjectReference{ Name: "deployment", Namespace: kapi.NamespaceDefault, }, IncludeTriggers: i&(1<<0) > 0, IncludeTemplate: i&(1<<1) > 0, IncludeReplicationMeta: i&(1<<2) > 0, IncludeStrategy: i&(1<<3) > 0, } rollbackSpecs = append(rollbackSpecs, spec) } generator := &RollbackGenerator{} // Test every combination. for _, spec := range rollbackSpecs { t.Logf("testing spec %#v", spec) if rollback, err := generator.GenerateRollback(from, to, spec); err != nil { t.Fatalf("Unexpected error: %v", err) } else { if hasStrategyDiff(from, rollback) && !spec.IncludeStrategy { t.Fatalf("unexpected strategy diff: from=%v, rollback=%v", from, rollback) } if hasTriggerDiff(from, rollback) && !spec.IncludeTriggers { t.Fatalf("unexpected trigger diff: from=%v, rollback=%v", from, rollback) } if hasPodTemplateDiff(from, rollback) && !spec.IncludeTemplate { t.Fatalf("unexpected template diff: from=%v, rollback=%v", from, rollback) } if hasReplicationMetaDiff(from, rollback) && !spec.IncludeReplicationMeta { t.Fatalf("unexpected replication meta diff: from=%v, rollback=%v", from, rollback) } for i, trigger := range rollback.Triggers { if trigger.Type == deployapi.DeploymentTriggerOnImageChange && trigger.ImageChangeParams.Automatic { t.Errorf("image change trigger %d should be disabled", i) } } } } }