Skip to content

Commit

Permalink
test: add unit test for emitFinalizeCleanup()
Browse files Browse the repository at this point in the history
  • Loading branch information
ahmad-ibra committed Dec 18, 2023
1 parent ff6acc9 commit b9f407b
Show file tree
Hide file tree
Showing 2 changed files with 82 additions and 5 deletions.
24 changes: 19 additions & 5 deletions internal/controller/validatorconfig_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,11 @@ import (
"context"
"crypto/sha256"
"encoding/base64"
"errors"
"fmt"
"net/http"
"os"
"strconv"
"strings"
"sync"
"time"
Expand Down Expand Up @@ -383,27 +385,39 @@ func isConditionTrue(vc *v1alpha1.ValidatorConfig, chartName string, conditionTy
return vc.Status.Conditions[idx], vc.Status.Conditions[idx].Status == corev1.ConditionTrue
}

func (r *ValidatorConfigReconciler) emitFinalizeCleanup() {
grpcEnabled := os.Getenv("CLEANUP_GRPC_ENABLED")
func (r *ValidatorConfigReconciler) emitFinalizeCleanup() error {
grpcEnabled := os.Getenv("CLEANUP_GRPC_SERVER_ENABLED")
if grpcEnabled != "true" {
r.Log.V(0).Info("Cleanup job gRPC server is not enabled")
return
return nil
}

host := os.Getenv("CLEANUP_GRPC_SERVER_HOST")
if host == "" {
err := errors.New("CLEANUP_GRPC_SERVER_HOST is empty")
r.Log.Error(err, "CLEANUP_GRPC_SERVER_HOST is invalid, skipping emition of finalize cleanup event")
return err
}

port := os.Getenv("CLEANUP_GRPC_SERVER_PORT")
_, err := strconv.Atoi(port)
if err != nil {
r.Log.Error(err, "CLEANUP_GRPC_SERVER_PORT is invalid, skipping emition of finalize cleanup event")
return err
}

url := fmt.Sprintf("https://%s:%s", host, port)

client := cleanupv1connect.NewCleanupServiceClient(
http.DefaultClient,
url,
)
_, err := client.FinalizeCleanup(
_, err = client.FinalizeCleanup(
context.Background(),
connect.NewRequest(&cleanv1.FinalizeCleanupRequest{}),
)
if err != nil {
r.Log.Error(err, "FinalizeCleanup request failed", "url", url)
return err
}
return nil

Check warning on line 422 in internal/controller/validatorconfig_controller.go

View check run for this annotation

Codecov / codecov/patch

internal/controller/validatorconfig_controller.go#L409-L422

Added lines #L409 - L422 were not covered by tests
}
63 changes: 63 additions & 0 deletions internal/controller/validatorconfig_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -210,3 +210,66 @@ func TestConfigureHelmBasicAuth(t *testing.T) {
}
}
}

func TestEmitFinalizeCleanup(t *testing.T) {
cs := []struct {
name string
reconciler ValidatorConfigReconciler
env map[string]string
expected error
}{
{
name: "CLEANUP_GRPC_SERVER_ENABLED is empty",
reconciler: ValidatorConfigReconciler{},
env: map[string]string{},
expected: errors.New("CLEANUP_GRPC_SERVER_HOST is empty"),
},
{
name: "CLEANUP_GRPC_SERVER_ENABLED is disabled",
reconciler: ValidatorConfigReconciler{},
env: map[string]string{"CLEANUP_GRPC_SERVER_ENABLED": "false"},
expected: nil,
},
{
name: "CLEANUP_GRPC_SERVER_HOST is empty",
reconciler: ValidatorConfigReconciler{},
env: map[string]string{
"CLEANUP_GRPC_SERVER_ENABLED": "true",
"CLEANUP_GRPC_SERVER_PORT": "3005",
},
expected: errors.New("CLEANUP_GRPC_SERVER_HOST is empty"),
},
{
name: "CLEANUP_GRPC_SERVER_PORT is empty",
reconciler: ValidatorConfigReconciler{},
env: map[string]string{
"CLEANUP_GRPC_SERVER_ENABLED": "true",
"CLEANUP_GRPC_SERVER_HOST": "localhost",
},
expected: errors.New("strconv.Atoi: parsing \"\": invalid syntax"),
},
{
name: "CLEANUP_GRPC_SERVER_PORT is invalid",
reconciler: ValidatorConfigReconciler{},
env: map[string]string{
"CLEANUP_GRPC_SERVER_ENABLED": "true",
"CLEANUP_GRPC_SERVER_HOST": "localhost",
"CLEANUP_GRPC_SERVER_PORT": "abcd",
},
expected: errors.New("strconv.Atoi: parsing \"abcd\": invalid syntax"),
},
}
for _, c := range cs {
t.Log(c.name)

os.Clearenv()
for k, v := range c.env {
os.Setenv(k, v)
}

err := c.reconciler.emitFinalizeCleanup()
if err != nil && !reflect.DeepEqual(err.Error(), c.expected.Error()) {
t.Errorf("expected (%v), got (%v)", c.expected, err)
}
}
}

0 comments on commit b9f407b

Please sign in to comment.