From f1c8bf887b593ccfd84028ebc83f92192369ad62 Mon Sep 17 00:00:00 2001 From: caiweidong Date: Tue, 16 Apr 2019 19:32:40 +0800 Subject: [PATCH] add some test for printing pv fix collision --- pkg/printers/internalversion/printers_test.go | 150 +++++++++++++++++- 1 file changed, 149 insertions(+), 1 deletion(-) diff --git a/pkg/printers/internalversion/printers_test.go b/pkg/printers/internalversion/printers_test.go index 92692fb231c..8aedfc76ed2 100644 --- a/pkg/printers/internalversion/printers_test.go +++ b/pkg/printers/internalversion/printers_test.go @@ -29,7 +29,7 @@ import ( "sigs.k8s.io/yaml" - v1 "k8s.io/api/core/v1" + "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" @@ -3245,6 +3245,154 @@ func TestPrintReplicaSet(t *testing.T) { } } +func TestPrintPersistentVolume(t *testing.T) { + myScn := "my-scn" + + claimRef := api.ObjectReference{ + Name: "test", + Namespace: "default", + } + tests := []struct { + pv api.PersistentVolume + expect string + }{ + { + // Test bound + api.PersistentVolume{ + ObjectMeta: metav1.ObjectMeta{ + Name: "test1", + }, + Spec: api.PersistentVolumeSpec{ + ClaimRef: &claimRef, + AccessModes: []api.PersistentVolumeAccessMode{api.ReadOnlyMany}, + Capacity: map[api.ResourceName]resource.Quantity{ + api.ResourceStorage: resource.MustParse("4Gi"), + }, + }, + Status: api.PersistentVolumeStatus{ + Phase: api.VolumeBound, + }, + }, + "test1\t4Gi\tROX\t\tBound\tdefault/test\t\t\t\n", + }, + { + // // Test failed + api.PersistentVolume{ + ObjectMeta: metav1.ObjectMeta{ + Name: "test2", + }, + Spec: api.PersistentVolumeSpec{ + ClaimRef: &claimRef, + AccessModes: []api.PersistentVolumeAccessMode{api.ReadOnlyMany}, + Capacity: map[api.ResourceName]resource.Quantity{ + api.ResourceStorage: resource.MustParse("4Gi"), + }, + }, + Status: api.PersistentVolumeStatus{ + Phase: api.VolumeFailed, + }, + }, + "test2\t4Gi\tROX\t\tFailed\tdefault/test\t\t\t\n", + }, + { + // Test pending + api.PersistentVolume{ + ObjectMeta: metav1.ObjectMeta{ + Name: "test3", + }, + Spec: api.PersistentVolumeSpec{ + ClaimRef: &claimRef, + AccessModes: []api.PersistentVolumeAccessMode{api.ReadWriteMany}, + Capacity: map[api.ResourceName]resource.Quantity{ + api.ResourceStorage: resource.MustParse("10Gi"), + }, + }, + Status: api.PersistentVolumeStatus{ + Phase: api.VolumePending, + }, + }, + "test3\t10Gi\tRWX\t\tPending\tdefault/test\t\t\t\n", + }, + { + // Test pending, storageClass + api.PersistentVolume{ + ObjectMeta: metav1.ObjectMeta{ + Name: "test4", + }, + Spec: api.PersistentVolumeSpec{ + ClaimRef: &claimRef, + StorageClassName: myScn, + AccessModes: []api.PersistentVolumeAccessMode{api.ReadWriteOnce}, + Capacity: map[api.ResourceName]resource.Quantity{ + api.ResourceStorage: resource.MustParse("10Gi"), + }, + }, + Status: api.PersistentVolumeStatus{ + Phase: api.VolumePending, + }, + }, + "test4\t10Gi\tRWO\t\tPending\tdefault/test\tmy-scn\t\t\n", + }, + { + // Test available + api.PersistentVolume{ + ObjectMeta: metav1.ObjectMeta{ + Name: "test5", + }, + Spec: api.PersistentVolumeSpec{ + ClaimRef: &claimRef, + StorageClassName: myScn, + AccessModes: []api.PersistentVolumeAccessMode{api.ReadWriteOnce}, + Capacity: map[api.ResourceName]resource.Quantity{ + api.ResourceStorage: resource.MustParse("10Gi"), + }, + }, + Status: api.PersistentVolumeStatus{ + Phase: api.VolumeAvailable, + }, + }, + "test5\t10Gi\tRWO\t\tAvailable\tdefault/test\tmy-scn\t\t\n", + }, + { + // Test released + api.PersistentVolume{ + ObjectMeta: metav1.ObjectMeta{ + Name: "test6", + }, + Spec: api.PersistentVolumeSpec{ + ClaimRef: &claimRef, + StorageClassName: myScn, + AccessModes: []api.PersistentVolumeAccessMode{api.ReadWriteOnce}, + Capacity: map[api.ResourceName]resource.Quantity{ + api.ResourceStorage: resource.MustParse("10Gi"), + }, + }, + Status: api.PersistentVolumeStatus{ + Phase: api.VolumeReleased, + }, + }, + "test6\t10Gi\tRWO\t\tReleased\tdefault/test\tmy-scn\t\t\n", + }, + } + buf := bytes.NewBuffer([]byte{}) + for _, test := range tests { + table, err := printers.NewTableGenerator().With(AddHandlers).GenerateTable(&test.pv, printers.PrintOptions{}) + if err != nil { + t.Fatal(err) + } + verifyTable(t, table) + if err := printers.PrintTable(table, buf, printers.PrintOptions{NoHeaders: true}); err != nil { + t.Fatal(err) + } + if buf.String() != test.expect { + fmt.Println(buf.String()) + fmt.Println(test.expect) + t.Fatalf("Expected: %s, but got: %s", test.expect, buf.String()) + } + buf.Reset() + } +} + func TestPrintPersistentVolumeClaim(t *testing.T) { myScn := "my-scn" tests := []struct {