From 0d19237802be36403d3d15cdcdbf460859a68177 Mon Sep 17 00:00:00 2001 From: hoyhbx Date: Wed, 22 Jun 2022 16:41:37 -0500 Subject: [PATCH 1/3] fix: crash if Image.Name has no colons --- pkg/resource/cluster.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkg/resource/cluster.go b/pkg/resource/cluster.go index 8a5f6c263..f08049b87 100644 --- a/pkg/resource/cluster.go +++ b/pkg/resource/cluster.go @@ -347,7 +347,12 @@ func (cluster Cluster) IsLoggingAPIEnabled() bool { if cluster.Spec().CockroachDBVersion != "" { version = cluster.Spec().CockroachDBVersion } else if cluster.Spec().Image != nil && cluster.Spec().Image.Name != "" { - version = strings.Split(cluster.Spec().Image.Name, ":")[1] + split_result := strings.Split(cluster.Spec().Image.Name, ":") + if len(split_result) > 1 { + version = split_result[1] + } else { + return false + } } else { return false } From 01385a29be2a16e69579c5c6a9093334b7145e3c Mon Sep 17 00:00:00 2001 From: hoyhbx Date: Fri, 15 Jul 2022 16:27:57 -0500 Subject: [PATCH 2/3] add: unit test for image name --- pkg/resource/cluster_test.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/pkg/resource/cluster_test.go b/pkg/resource/cluster_test.go index 8c7f9b4bb..89e5860e4 100644 --- a/pkg/resource/cluster_test.go +++ b/pkg/resource/cluster_test.go @@ -85,3 +85,29 @@ func TestClusterTLSSecrets(t *testing.T) { }) } } + +func TestClusterImageName(t *testing.T) { + var ( + testCluster = "test-cluster" + testNS = "test-ns" + customImageName = "custom-image-name" + ) + clusterBuilder := testutil.NewBuilder(testCluster).Namespaced(testNS) + for _, tt := range []struct { + name string + cluster *resource.Cluster + imageName string + }{ + { + name: "verify image name without colon", + cluster: clusterBuilder.WithImage(customImageName).Cluster(), + imageName: customImageName, + }, + } { + t.Run(tt.name, func(t *testing.T) { + if tt.cluster.IsLoggingAPIEnabled() { + assert.Fail(t, "LoggingAPI should be disabled when image name does not contain colon") + } + }) + } +} From 817602d8fdea65adf96124741ce43236977484f8 Mon Sep 17 00:00:00 2001 From: hoyhbx Date: Tue, 19 Jul 2022 15:22:56 -0500 Subject: [PATCH 3/3] add: test for logging is enabled & logging --- pkg/actor/validate_version.go | 2 ++ pkg/resource/cluster_test.go | 16 +++++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/pkg/actor/validate_version.go b/pkg/actor/validate_version.go index b42e16626..b73ac5e8d 100644 --- a/pkg/actor/validate_version.go +++ b/pkg/actor/validate_version.go @@ -82,6 +82,8 @@ func (v *versionChecker) Act(ctx context.Context, cluster *resource.Cluster, log log.Error(vErr, "The cockroachdb logging API value is set to a value that is not supported by the operator") return err } + } else { + log.V(DEBUGLEVEL).Info("logging API is not enabled") } log.V(DEBUGLEVEL).Info("starting to check the crdb version of the container provided") diff --git a/pkg/resource/cluster_test.go b/pkg/resource/cluster_test.go index 89e5860e4..d9ef704b5 100644 --- a/pkg/resource/cluster_test.go +++ b/pkg/resource/cluster_test.go @@ -88,9 +88,10 @@ func TestClusterTLSSecrets(t *testing.T) { func TestClusterImageName(t *testing.T) { var ( - testCluster = "test-cluster" - testNS = "test-ns" - customImageName = "custom-image-name" + testCluster = "test-cluster" + testNS = "test-ns" + invalidImageName = "custom-image-name" + validImageName = "cockroachdb/cockroach:v20.1.4" ) clusterBuilder := testutil.NewBuilder(testCluster).Namespaced(testNS) for _, tt := range []struct { @@ -100,8 +101,13 @@ func TestClusterImageName(t *testing.T) { }{ { name: "verify image name without colon", - cluster: clusterBuilder.WithImage(customImageName).Cluster(), - imageName: customImageName, + cluster: clusterBuilder.WithImage(invalidImageName).Cluster(), + imageName: invalidImageName, + }, + { + name: "verify image name with colon", + cluster: clusterBuilder.WithImage(validImageName).Cluster(), + imageName: validImageName, }, } { t.Run(tt.name, func(t *testing.T) {