diff --git a/pkg/resourceinterpreter/defaultinterpreter/revisereplica_test.go b/pkg/resourceinterpreter/defaultinterpreter/revisereplica_test.go new file mode 100644 index 000000000..c7499ff11 --- /dev/null +++ b/pkg/resourceinterpreter/defaultinterpreter/revisereplica_test.go @@ -0,0 +1,156 @@ +package defaultinterpreter + +import ( + "reflect" + "testing" + + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" +) + +func TestReviseDeploymentReplica(t *testing.T) { + tests := []struct { + name string + object *unstructured.Unstructured + replica int64 + expected *unstructured.Unstructured + expectError bool + }{ + { + name: "Deployment .spec.replicas accessor error, expected int64", + object: &unstructured.Unstructured{ + Object: map[string]interface{}{ + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": map[string]interface{}{ + "name": "fake-deployment", + }, + "spec": map[string]interface{}{ + "replicas": 1, + }, + }, + }, + replica: 3, + expectError: true, + }, + { + name: "revise deployment replica", + object: &unstructured.Unstructured{ + Object: map[string]interface{}{ + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": map[string]interface{}{ + "name": "fake-deployment", + }, + "spec": map[string]interface{}{ + "replicas": int64(1), + }, + }, + }, + replica: 3, + expected: &unstructured.Unstructured{ + Object: map[string]interface{}{ + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": map[string]interface{}{ + "name": "fake-deployment", + }, + "spec": map[string]interface{}{ + "replicas": int64(3), + }, + }, + }, + expectError: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + res, err := reviseDeploymentReplica(tt.object, tt.replica) + if err == nil && tt.expectError == true { + t.Fatal("expect an error but got none") + } + if err != nil && tt.expectError != true { + t.Fatalf("expect no error but got: %v", err) + } + if err == nil && tt.expectError == false { + if !reflect.DeepEqual(res, tt.expected) { + t.Errorf("reviseDeploymentReplica() = %v, want %v", res, tt.expected) + } + } + }) + } +} + +func TestReviseJobReplica(t *testing.T) { + tests := []struct { + name string + object *unstructured.Unstructured + replica int64 + expected *unstructured.Unstructured + expectError bool + }{ + { + name: "Job .spec.parallelism accessor error, expected int64", + object: &unstructured.Unstructured{ + Object: map[string]interface{}{ + "apiVersion": "batch/v1", + "kind": "Job", + "metadata": map[string]interface{}{ + "name": "fake-job", + }, + "spec": map[string]interface{}{ + "parallelism": 1, + }, + }, + }, + replica: 3, + expectError: true, + }, + { + name: "revise job parallelism", + object: &unstructured.Unstructured{ + Object: map[string]interface{}{ + "apiVersion": "batch/v1", + "kind": "Job", + "metadata": map[string]interface{}{ + "name": "fake-job", + }, + "spec": map[string]interface{}{ + "parallelism": int64(1), + }, + }, + }, + replica: 3, + expected: &unstructured.Unstructured{ + Object: map[string]interface{}{ + "apiVersion": "batch/v1", + "kind": "Job", + "metadata": map[string]interface{}{ + "name": "fake-job", + }, + "spec": map[string]interface{}{ + "parallelism": int64(3), + }, + }, + }, + expectError: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + res, err := reviseJobReplica(tt.object, tt.replica) + if err == nil && tt.expectError == true { + t.Fatal("expect an error but got none") + } + if err != nil && tt.expectError != true { + t.Fatalf("expect no error but got: %v", err) + } + if err == nil && tt.expectError == false { + if !reflect.DeepEqual(res, tt.expected) { + t.Errorf("reviseJobReplica() = %v, want %v", res, tt.expected) + } + } + }) + } +}