diff --git a/tests/acceptance_test.go b/tests/acceptance_test.go index 80ffd751..2514838d 100644 --- a/tests/acceptance_test.go +++ b/tests/acceptance_test.go @@ -12,6 +12,8 @@ import ( apps_v1 "k8s.io/api/apps/v1" "k8s.io/api/core/v1" meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + + log "github.com/sirupsen/logrus" ) var dockerHub0150Webhook = `{ @@ -38,21 +40,37 @@ var dockerHub0150Webhook = `{ } }` -func TestSemverUpdate(t *testing.T) { +func TestWebhooksSemverUpdate(t *testing.T) { // stop := make(chan struct{}) ctx, cancel := context.WithCancel(context.Background()) // defer close(ctx) defer cancel() - go startKeel(ctx) + // go startKeel(ctx) + keel := &KeelCmd{} + go func() { + err := keel.Start(ctx) + if err != nil { + log.WithFields(log.Fields{ + "error": err, + }).Error("failed to start Keel process") + } + }() + + defer func() { + err := keel.Stop() + if err != nil { + log.WithFields(log.Fields{ + "error": err, + }).Error("failed to stop Keel process") + } + }() _, kcs := getKubernetesClient() t.Run("UpdateThroughDockerHubWebhook", func(t *testing.T) { - // t.Skip() - testNamespace := createNamespaceForTest() defer deleteTestNamespace(testNamespace) @@ -122,6 +140,36 @@ func TestSemverUpdate(t *testing.T) { t.Errorf("update failed: %s", err) } }) +} + +func TestPollingSemverUpdate(t *testing.T) { + + // stop := make(chan struct{}) + ctx, cancel := context.WithCancel(context.Background()) + // defer close(ctx) + defer cancel() + + // go startKeel(ctx) + keel := &KeelCmd{} + go func() { + err := keel.Start(ctx) + if err != nil { + log.WithFields(log.Fields{ + "error": err, + }).Error("failed to start Keel process") + } + }() + + defer func() { + err := keel.Stop() + if err != nil { + log.WithFields(log.Fields{ + "error": err, + }).Error("failed to stop Keel process") + } + }() + + _, kcs := getKubernetesClient() t.Run("UpdateThroughDockerHubPollingA", func(t *testing.T) { // UpdateThroughDockerHubPollingA tests a polling trigger when we have a higher version @@ -140,7 +188,9 @@ func TestSemverUpdate(t *testing.T) { types.KeelPolicyLabel: "major", types.KeelTriggerLabel: "poll", }, - Annotations: map[string]string{}, + Annotations: map[string]string{ + types.KeelPollScheduleAnnotation: "@every 2s", + }, }, apps_v1.DeploymentSpec{ Selector: &meta_v1.LabelSelector{ @@ -192,13 +242,15 @@ func TestSemverUpdate(t *testing.T) { dep := &apps_v1.Deployment{ meta_v1.TypeMeta{}, meta_v1.ObjectMeta{ - Name: "deployment-1", + Name: "deployment-2", Namespace: testNamespace, Labels: map[string]string{ types.KeelPolicyLabel: "major", types.KeelTriggerLabel: "poll", }, - Annotations: map[string]string{}, + Annotations: map[string]string{ + types.KeelPollScheduleAnnotation: "@every 2s", + }, }, apps_v1.DeploymentSpec{ Selector: &meta_v1.LabelSelector{ diff --git a/tests/helpers.go b/tests/helpers.go index 944e03bf..63ecd33f 100644 --- a/tests/helpers.go +++ b/tests/helpers.go @@ -72,10 +72,13 @@ func deleteTestNamespace(namespace string) error { return clientset.CoreV1().Namespaces().Delete(namespace, &deleteOptions) } -func startKeel(ctx context.Context) error { +type KeelCmd struct { + cmd *exec.Cmd +} + +func (kc *KeelCmd) Start(ctx context.Context) error { log.Info("keel started") - defer log.Info("keel stopped") cmd := "keel" args := []string{"--no-incluster", "--kubeconfig", getKubeConfig()} @@ -83,17 +86,16 @@ func startKeel(ctx context.Context) error { c.Stdout = os.Stdout c.Stderr = os.Stderr - go func() { - <-ctx.Done() - err := c.Process.Kill() - if err != nil { - log.Errorf("failed to kill keel process: %s", err) - } - }() + kc.cmd = c return c.Run() } +func (kc *KeelCmd) Stop() error { + defer log.Info("keel stopped") + return kc.cmd.Process.Kill() +} + func waitFor(ctx context.Context, kcs *kubernetes.Clientset, namespace, name string, desired string) error { last := "" for {