github.com/verrazzano/verrazzano-monitoring-operator@v0.0.30/pkg/resources/pvcs/pvc_test.go (about) 1 // Copyright (C) 2020, 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 pvcs 5 6 import ( 7 "testing" 8 9 "github.com/verrazzano/verrazzano-monitoring-operator/pkg/constants" 10 11 "github.com/stretchr/testify/assert" 12 vmcontrollerv1 "github.com/verrazzano/verrazzano-monitoring-operator/pkg/apis/vmcontroller/v1" 13 ) 14 15 func TestVMONoStorageVolumes(t *testing.T) { 16 vmo := &vmcontrollerv1.VerrazzanoMonitoringInstance{ 17 Spec: vmcontrollerv1.VerrazzanoMonitoringInstanceSpec{ 18 Grafana: vmcontrollerv1.Grafana{ 19 Enabled: true, 20 }, 21 Kibana: vmcontrollerv1.Kibana{ 22 Enabled: true, 23 }, 24 Elasticsearch: vmcontrollerv1.Elasticsearch{ 25 Enabled: true, 26 }, 27 }, 28 } 29 pvcs, err := New(vmo, constants.OciFlexVolumeProvisioner) 30 if err != nil { 31 t.Error(err) 32 } 33 assert.Equal(t, 0, len(pvcs), "Length of generated PVCs") 34 } 35 36 func TestVMOWithStorageVolumes1(t *testing.T) { 37 vmo := &vmcontrollerv1.VerrazzanoMonitoringInstance{ 38 Spec: vmcontrollerv1.VerrazzanoMonitoringInstanceSpec{ 39 Grafana: vmcontrollerv1.Grafana{ 40 Enabled: true, 41 Storage: vmcontrollerv1.Storage{ 42 Size: "50Gi", 43 AvailabilityDomain: "AD1", 44 PvcNames: []string{"grafana-pvc"}, 45 }, 46 }, 47 // An empty size element is interpreted as no storage 48 Elasticsearch: vmcontrollerv1.Elasticsearch{ 49 Enabled: true, 50 Storage: vmcontrollerv1.Storage{ 51 Size: "", 52 AvailabilityDomain: "AD1", 53 }, 54 }, 55 }, 56 } 57 pvcs, err := New(vmo, constants.OciFlexVolumeProvisioner) 58 if err != nil { 59 t.Error(err) 60 } 61 assert.Equal(t, 1, len(pvcs), "Length of generated PVCs") 62 } 63 64 func TestVMOWithStorageVolumes2(t *testing.T) { 65 vmo := &vmcontrollerv1.VerrazzanoMonitoringInstance{ 66 Spec: vmcontrollerv1.VerrazzanoMonitoringInstanceSpec{ 67 Elasticsearch: vmcontrollerv1.Elasticsearch{ 68 Enabled: true, 69 DataNode: vmcontrollerv1.ElasticsearchNode{ 70 Storage: &vmcontrollerv1.Storage{ 71 Size: "50Gi", 72 AvailabilityDomain: "AD1", 73 PvcNames: []string{"elasticsearch-pvc"}, 74 }, 75 }, 76 }, 77 }, 78 } 79 pvcs, err := New(vmo, constants.OciFlexVolumeProvisioner) 80 if err != nil { 81 t.Error(err) 82 } 83 assert.Equal(t, 1, len(pvcs), "Length of generated PVCs") 84 } 85 86 func TestVMOWithStorageVolumes3(t *testing.T) { 87 vmo := &vmcontrollerv1.VerrazzanoMonitoringInstance{ 88 Spec: vmcontrollerv1.VerrazzanoMonitoringInstanceSpec{ 89 Elasticsearch: vmcontrollerv1.Elasticsearch{ 90 Enabled: true, 91 Nodes: []vmcontrollerv1.ElasticsearchNode{ 92 { 93 Name: "data", 94 Roles: []vmcontrollerv1.NodeRole{ 95 vmcontrollerv1.DataRole, 96 }, 97 Storage: &vmcontrollerv1.Storage{ 98 Size: "100Gi", 99 AvailabilityDomain: "AD1", 100 PvcNames: []string{ 101 "p1", 102 "p2", 103 }, 104 }, 105 }, 106 }, 107 DataNode: vmcontrollerv1.ElasticsearchNode{ 108 Storage: &vmcontrollerv1.Storage{ 109 Size: "50Gi", 110 AvailabilityDomain: "AD1", 111 PvcNames: []string{"elasticsearch-pvc"}, 112 }, 113 }, 114 }, 115 }, 116 } 117 pvcs, err := New(vmo, constants.OciFlexVolumeProvisioner) 118 if err != nil { 119 t.Error(err) 120 } 121 assert.Equal(t, 3, len(pvcs), "Length of generated PVCs") 122 } 123 124 func TestVMODevModeWithStorageVolumes(t *testing.T) { 125 vmo := &vmcontrollerv1.VerrazzanoMonitoringInstance{ 126 Spec: vmcontrollerv1.VerrazzanoMonitoringInstanceSpec{ 127 Grafana: vmcontrollerv1.Grafana{ 128 Enabled: true, 129 Storage: vmcontrollerv1.Storage{ 130 Size: "50Gi", 131 AvailabilityDomain: "AD1", 132 PvcNames: []string{"grafana-pvc"}, 133 }, 134 }, 135 Elasticsearch: vmcontrollerv1.Elasticsearch{ 136 Enabled: true, 137 Storage: vmcontrollerv1.Storage{ 138 Size: "", 139 }, 140 IngestNode: vmcontrollerv1.ElasticsearchNode{Replicas: 0}, 141 DataNode: vmcontrollerv1.ElasticsearchNode{Replicas: 0}, 142 MasterNode: vmcontrollerv1.ElasticsearchNode{Replicas: 1}, 143 }, 144 }, 145 } 146 pvcs, err := New(vmo, constants.OciFlexVolumeProvisioner) 147 if err != nil { 148 t.Error(err) 149 } 150 assert.Equal(t, 1, len(pvcs), "Length of generated PVCs") 151 for _, pvc := range pvcs { 152 pvcName := pvc.ObjectMeta.Name 153 t.Log("Checking pvc ", pvcName) 154 assert.NotContains(t, pvcName, "elasticsearch", "Found unexpected elasticsearch volume") 155 } 156 } 157 158 func TestVMOWithCascadingDelete(t *testing.T) { 159 // With CascadingDelete 160 vmo := &vmcontrollerv1.VerrazzanoMonitoringInstance{ 161 Spec: vmcontrollerv1.VerrazzanoMonitoringInstanceSpec{ 162 CascadingDelete: true, 163 Grafana: vmcontrollerv1.Grafana{ 164 Enabled: true, 165 Storage: vmcontrollerv1.Storage{ 166 Size: "50Gi", 167 AvailabilityDomain: "AD1", 168 PvcNames: []string{"grafana-pvc"}, 169 }, 170 }, 171 // An empty size element is interpreted as no storage 172 Elasticsearch: vmcontrollerv1.Elasticsearch{ 173 Enabled: true, 174 Storage: vmcontrollerv1.Storage{ 175 Size: "50Gi", 176 AvailabilityDomain: "AD1", 177 }, 178 }, 179 }, 180 } 181 pvcs, err := New(vmo, constants.OciFlexVolumeProvisioner) 182 if err != nil { 183 t.Error(err) 184 } 185 assert.True(t, len(pvcs) > 0, "Non-zero length generated PVCs") 186 for _, pvs := range pvcs { 187 assert.Equal(t, 1, len(pvs.ObjectMeta.OwnerReferences), "OwnerReferences is not set with CascadingDelete true") 188 } 189 190 // Without CascadingDelete 191 vmo.Spec.CascadingDelete = false 192 pvcs, err = New(vmo, constants.OciFlexVolumeProvisioner) 193 if err != nil { 194 t.Error(err) 195 } 196 assert.True(t, len(pvcs) > 0, "Non-zero length generated ingresses") 197 for _, pvc := range pvcs { 198 assert.Equal(t, 0, len(pvc.ObjectMeta.OwnerReferences), "OwnerReferences is set even with CascadingDelete false") 199 } 200 }