Add test for storage classes
This commit is contained in:
@@ -24,11 +24,24 @@ import (
|
|||||||
|
|
||||||
var namespace = "default"
|
var namespace = "default"
|
||||||
|
|
||||||
func TestHelmGoldenPath(t *testing.T) {
|
// Prior to running this test, a Persistent Volume must be created
|
||||||
|
func TestHelmPredefinedVolume(t *testing.T) {
|
||||||
cs := kubeLogin(t)
|
cs := kubeLogin(t)
|
||||||
release := strings.ToLower(t.Name())
|
release := strings.ToLower(t.Name())
|
||||||
helmInstall(t, cs, release, "license=accept", "persistence.useDynamicProvisioning=false")
|
helmInstall(t, cs, release, "license=accept", "persistence.useDynamicProvisioning=false")
|
||||||
defer helmDelete(t, release)
|
defer helmDelete(t, cs, release)
|
||||||
|
defer helmDeletePVC(t, cs, release)
|
||||||
|
waitForReady(t, cs, release)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestHelmStorageClass(t *testing.T) {
|
||||||
|
cs := kubeLogin(t)
|
||||||
|
release := strings.ToLower(t.Name())
|
||||||
|
if !storageClassesDefined(t, cs) {
|
||||||
|
t.Skipf("Skipping test because no storage classes were found")
|
||||||
|
}
|
||||||
|
helmInstall(t, cs, release, "license=accept", "persistence.useDynamicProvisioning=true")
|
||||||
|
defer helmDelete(t, cs, release)
|
||||||
defer helmDeletePVC(t, cs, release)
|
defer helmDeletePVC(t, cs, release)
|
||||||
waitForReady(t, cs, release)
|
waitForReady(t, cs, release)
|
||||||
}
|
}
|
||||||
@@ -37,7 +50,7 @@ func TestPersistenceDisabled(t *testing.T) {
|
|||||||
cs := kubeLogin(t)
|
cs := kubeLogin(t)
|
||||||
release := strings.ToLower(t.Name())
|
release := strings.ToLower(t.Name())
|
||||||
helmInstall(t, cs, release, "license=accept", "persistence.enabled=false")
|
helmInstall(t, cs, release, "license=accept", "persistence.enabled=false")
|
||||||
defer helmDelete(t, release)
|
defer helmDelete(t, cs, release)
|
||||||
waitForReady(t, cs, release)
|
waitForReady(t, cs, release)
|
||||||
|
|
||||||
// Check that no PVCs were created
|
// Check that no PVCs were created
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ limitations under the License.
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
@@ -57,9 +58,23 @@ func runCommand(t *testing.T, name string, arg ...string) (string, int, error) {
|
|||||||
return string(out), 0, nil
|
return string(out), 0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func inspectLogs(t *testing.T, cs *kubernetes.Clientset, release string) string {
|
||||||
|
pods := getPodsForHelmRelease(t, cs, release)
|
||||||
|
opt := v1.PodLogOptions{}
|
||||||
|
r := cs.CoreV1().Pods(namespace).GetLogs(pods.Items[0].Name, &opt)
|
||||||
|
buf := new(bytes.Buffer)
|
||||||
|
rc, err := r.Stream()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
buf.ReadFrom(rc)
|
||||||
|
return buf.String()
|
||||||
|
}
|
||||||
|
|
||||||
func helmInstall(t *testing.T, cs *kubernetes.Clientset, release string, values ...string) {
|
func helmInstall(t *testing.T, cs *kubernetes.Clientset, release string, values ...string) {
|
||||||
chart := "../../charts/ibm-mqadvanced-server-prod"
|
chart := "../../charts/ibm-mqadvanced-server-prod"
|
||||||
image := "mycluster.icp:8500/default/mq-devserver"
|
//image := "mycluster.icp:8500/default/mq-devserver"
|
||||||
|
image := "ibmcom/mq"
|
||||||
tag := "latest"
|
tag := "latest"
|
||||||
arg := []string{
|
arg := []string{
|
||||||
"install",
|
"install",
|
||||||
@@ -85,7 +100,8 @@ func helmInstall(t *testing.T, cs *kubernetes.Clientset, release string, values
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func helmDelete(t *testing.T, release string) {
|
func helmDelete(t *testing.T, cs *kubernetes.Clientset, release string) {
|
||||||
|
t.Log(inspectLogs(t, cs, release))
|
||||||
out, _, err := runCommand(t, "helm", "delete", "--purge", release)
|
out, _, err := runCommand(t, "helm", "delete", "--purge", release)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(out)
|
t.Error(out)
|
||||||
@@ -184,3 +200,16 @@ func getPodsForHelmRelease(t *testing.T, cs *kubernetes.Clientset, release strin
|
|||||||
}
|
}
|
||||||
return pods
|
return pods
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func storageClassesDefined(t *testing.T, cs *kubernetes.Clientset) bool {
|
||||||
|
c, err := cs.Storage().StorageClasses().List(metav1.ListOptions{})
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if len(c.Items) > 0 {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: On Minikube, need to make sure Helm is initialized first
|
||||||
|
|||||||
Reference in New Issue
Block a user