From ceb8e094ecae5e85637eabdcd4e193408c3f2f1d Mon Sep 17 00:00:00 2001 From: Hui Kang Date: Mon, 6 Sep 2021 16:06:07 -0400 Subject: [PATCH] Add unit test Signed-off-by: Hui Kang --- utils/analysis/helpers_test.go | 57 ++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/utils/analysis/helpers_test.go b/utils/analysis/helpers_test.go index e45c52ad6d..0a5171f23d 100644 --- a/utils/analysis/helpers_test.go +++ b/utils/analysis/helpers_test.go @@ -1,6 +1,7 @@ package analysis import ( + "encoding/json" "errors" "fmt" "testing" @@ -8,6 +9,7 @@ import ( log "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + kunstructured "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" kubetesting "k8s.io/client-go/testing" @@ -15,6 +17,7 @@ import ( "github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1" "github.com/argoproj/argo-rollouts/pkg/client/clientset/versioned/fake" + "github.com/argoproj/argo-rollouts/utils/unstructured" ) func TestIsWorst(t *testing.T) { @@ -630,6 +633,60 @@ func TestMergeArgs(t *testing.T) { } } +func TestNewAnalysisRunFromUnstructured(t *testing.T) { + template := v1alpha1.AnalysisTemplate{ + ObjectMeta: metav1.ObjectMeta{ + Name: "foo", + Namespace: metav1.NamespaceDefault, + ResourceVersion: "12345", + }, + Spec: v1alpha1.AnalysisTemplateSpec{ + Metrics: []v1alpha1.Metric{ + { + Name: "success-rate", + }, + }, + Args: []v1alpha1.Argument{ + { + Name: "my-arg-1", + }, + { + Name: "my-arg-2", + }, + }, + }, + } + args := []v1alpha1.Argument{ + { + Name: "my-arg-1", + Value: pointer.StringPtr("my-val-1"), + }, + { + Name: "my-arg-2", + Value: pointer.StringPtr("my-val-2"), + }, + } + + jsonStr, err := json.Marshal(template) + assert.NoError(t, err) + obj, err := unstructured.StrToUnstructured(string(jsonStr)) + assert.NoError(t, err) + + obj, err = NewAnalysisRunFromUnstructured(obj, args, "foo-run", "foo-run-generate-", "my-ns") + assert.NoError(t, err) + _, found, err := kunstructured.NestedString(obj.Object, "metadata", "resourceVersion") + assert.NoError(t, err) + assert.False(t, found) + arArgs, _, err := kunstructured.NestedSlice(obj.Object, "spec", "args") + assert.NoError(t, err) + assert.Equal(t, len(args), len(arArgs)) + + for i, arg := range arArgs { + argnv := arg.(map[string]interface{}) + assert.Equal(t, *args[i].Value, argnv["value"]) + } +} + //TODO(dthomson) remove this test in v0.9.0 func TestNewAnalysisRunFromTemplate(t *testing.T) { template := v1alpha1.AnalysisTemplate{