github.com/verrazzano/verrazzano-monitoring-operator@v0.0.30/pkg/vmo/vmospec_test.go (about)

     1  // Copyright (C) 2022, Oracle and/or its affiliates.
     2  // Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
     3  
     4  package vmo
     5  
     6  import (
     7  	"github.com/stretchr/testify/assert"
     8  	vmcontrollerv1 "github.com/verrazzano/verrazzano-monitoring-operator/pkg/apis/vmcontroller/v1"
     9  	"testing"
    10  )
    11  
    12  func TestInitNode(t *testing.T) {
    13  	var tests = []struct {
    14  		name     string
    15  		node     *vmcontrollerv1.ElasticsearchNode
    16  		expected *vmcontrollerv1.ElasticsearchNode
    17  	}{
    18  		{
    19  			"adds role, and role based name when name/role are empty",
    20  			&vmcontrollerv1.ElasticsearchNode{
    21  				Name: "",
    22  			},
    23  			&vmcontrollerv1.ElasticsearchNode{
    24  				Name:  "es-master",
    25  				Roles: []vmcontrollerv1.NodeRole{vmcontrollerv1.MasterRole},
    26  			},
    27  		},
    28  		{
    29  			"does not change name/role when they are present",
    30  			&vmcontrollerv1.ElasticsearchNode{
    31  				Name: "foobar",
    32  				Roles: []vmcontrollerv1.NodeRole{
    33  					vmcontrollerv1.DataRole,
    34  					vmcontrollerv1.MasterRole,
    35  				},
    36  			},
    37  			&vmcontrollerv1.ElasticsearchNode{
    38  				Name: "foobar",
    39  				Roles: []vmcontrollerv1.NodeRole{
    40  					vmcontrollerv1.DataRole,
    41  					vmcontrollerv1.MasterRole,
    42  				},
    43  			},
    44  		},
    45  	}
    46  
    47  	for _, tt := range tests {
    48  		initNode(tt.node, vmcontrollerv1.MasterRole)
    49  		assert.EqualValues(t, tt.expected.Roles, tt.node.Roles)
    50  		assert.Equal(t, tt.expected.Name, tt.node.Name)
    51  	}
    52  }
    53  
    54  func TestInitStorageElement(t *testing.T) {
    55  	var tests = []struct {
    56  		name     string
    57  		storage  *vmcontrollerv1.Storage
    58  		expected *vmcontrollerv1.Storage
    59  		replicas int
    60  	}{
    61  		{
    62  			"does nothing when no storage is configured",
    63  			&vmcontrollerv1.Storage{},
    64  			&vmcontrollerv1.Storage{},
    65  			1,
    66  		},
    67  		{
    68  			"adds 1 PVC when storage is configured with 1 replica",
    69  			&vmcontrollerv1.Storage{Size: "1G"},
    70  			&vmcontrollerv1.Storage{
    71  				PvcNames: []string{"pvc"},
    72  			},
    73  			1,
    74  		},
    75  		{
    76  			"adds 3 PVCs when storage is configured with 3 replicas",
    77  			&vmcontrollerv1.Storage{Size: "1G"},
    78  			&vmcontrollerv1.Storage{
    79  				PvcNames: []string{"pvc", "pvc-1", "pvc-2"},
    80  			},
    81  			3,
    82  		},
    83  		{
    84  			"adds PVC when replicas have increased",
    85  			&vmcontrollerv1.Storage{
    86  				Size:     "1G",
    87  				PvcNames: []string{"pvc", "pvc-1"},
    88  			},
    89  			&vmcontrollerv1.Storage{
    90  				PvcNames: []string{"pvc", "pvc-1", "pvc-2"},
    91  			},
    92  			3,
    93  		},
    94  	}
    95  
    96  	for _, tt := range tests {
    97  		t.Run(tt.name, func(t *testing.T) {
    98  			initStorageElement(tt.storage, tt.replicas, "pvc")
    99  			assert.EqualValues(t, tt.expected.PvcNames, tt.storage.PvcNames)
   100  		})
   101  	}
   102  }